Массив — это структура данных, используемая для хранения в ней нескольких значений одного и того же типа. В массивах (Arrays Arduino IDE) можно хранить различные типы данных — числа (int, float и др.), а также буквы и строки. Структура массивов в Ардуино аналогична другим языкам программирования. Рассмотрим, как работать с массивами — объявлять и обращаться к массиву символов, чтобы использовать его элементы в скетче.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
Дополнительные материалы на эту тему:
Что такое массивы в Ардуино? Массивы в Arduino используют несколько смежных мест в памяти и хранят в них несколько переменных одного и того же типа данных. Преимущество использования массива в скетче в том, что он экономит память микроконтроллера. Если размер массива становится недостаточным при хранении элементов во время выполнения программы, то данные сохраняются в смежных участках памяти микроконтроллера.
Что такое массив данных в языке Ардуино

На картинке выше показана структура численного массива int array[5] с пятью ячейками памяти. Имя объявленного массива — array, числовые данные, хранящиеся в элементах равны: 55, 145, 250, 0 и 193. Массив имеет первый элемент с нулевым индексом array[0], так как все массивы в языке Ардуино начинаются с нулевой позиции и заканчиваются элементом с индексом на единицу меньше общего количества элементов массива array[4].
Как сделать, объявить массив в Ардуино
Подобно тому, как в языке Arduino объявляются локальные и глобальные переменные разных типов данных, массив переменных также объявляется глобально или локально. Существует три способа создания (декларации) массива в программе:
1. способ инициализации массива
// массив объявляется с указанием размера и значений элементов
int array1 [5] = { 55, 145, 250, 0, 193 };
2. способ инициализации массива
// массив данных объявляется без указания его размера
// чтобы можно было при необходимости сохранить в нём более 5 элементов
int array2 [] = { 55, 145, 250, 0, 193 };
3. способ инициализации массива
// объявление массива без упоминания размера и значений элементов
int array3 [] = { };
Как обратиться к элементам массива Ардуино

В скетче мы можем получить доступ к любому элементу массива. Например, у нас есть массив int array [5] = { 55,145,250,0,193 };. Если мы хотим получить доступ ко второму элементу со значением 145, то следует использовать имя массива с индексным номером второго элемента в квадратных скобках array [1]. Подключите любую плату Arduino к компьютеру и загрузите следующую программу в микроконтроллер.
Скетч для создания и обращения к массиву Ардуино
// создание числового массива с указанием количества элементов
int intArray[5] = { 55, 145, 250, 0, 193 };
void setup() {
Serial.begin(9600);
Serial.print(intArray[1]); // выводим на монитор второй элемент массива
Serial.print(" + ");
Serial.print(intArray[4]); // выводим на монитор пятый элемент массива
Serial.print(" = ");
Serial.println(intArray[1] + intArray[4]); // выводим сумму элементов
Serial.println("");
delay (1000);
// создание массива символов без указания количества элементов
char chArray[] = { 'H','e','l','l','o',' ','w','o','r','l','d' };
String text = String(chArray); // собираем буквы из массива в строку
Serial.println(text); // выводим строку на монитор порта
Serial.println("");
delay (1000);
// создание массива строк
String strArray[] = { "Welcome ", "to ", "arduino-site.ru" };
// выводим массив из строк на монитор порта
Serial.println(strArray[0] + strArray[1] + strArray[2]);
Serial.println("");
}
void loop() {
}
Все целочисленные массивы можно использовать в функциях и циклах. Кроме того, есть возможность узнать длину массива или отдельного элемента, а также перезаписать или записать данные в массив с датчика. В следующем примере мы выведем на монитор порта размер первого элемента из массива в байтах, длину всего массива, а затем перезапишем первый элемент в массиве с новым значением. И выведем новый текст на монитор порта.
Скетч для расчета длины массива символов Ардуино
// создание текстового массива
String strArray[] = { "Welcome ", "to ", "arduino-site.ru" };
void setup() {
Serial.begin(9600);
int x = sizeof(strArray[0]); // размер первого элемента в байтах
Serial.println("sizeof(Welcome) = " + String(x));
Serial.println("");
delay (1000);
int y = sizeof(strArray); // длина массива (размер массива в байтах)
Serial.println("sizeof(strArray) = " + String(y));
Serial.println("");
delay (1000);
strArray[0] = "Go "; // запись данных в первый элемент массива
// выводим массив из строк на монитор порта
Serial.println(strArray[0] + strArray[1] + strArray[2]);
Serial.println("");
}
void loop() {
}
Типы массивов: одномерные, двумерные и многомерные

До этого мы использовали в примерах одномерные массивы переменных и строк, которые могут хранить только один список значений. Однако существуют и двумерные массивы, которые могут хранить два списка. Способ создания 2-мерного массива аналогичен. Также есть и многомерные массивы. Например, в проекте Тетрис на Ардуино с OLED дисплеем в многомерных массивах скетча хранятся фигуры, появляющиеся на экране.
// одномерный массив чисел из пяти элементов
int OneDimensionalArray[5] = {55, 145, 250, 0, 193};
// двумерный массив состоит из двух строк по три элемента строке
int TwoDimensionalArray[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// многомерный массив фигуры "S" в тетрисе
const char MultiDimensionalArray[2][2][4] = {
{{1, 1, 0, 0}, {0, 1, 1, 2}},
{{0, 1, 1, 2}, {0, 0, 1, 1}}
};
Заключение. В языке программирования Ардуино массивы — это структуры данных, которые используются для хранения множества значений одних и тех же типов данных (чисел или строк). Массивы представляют собой смежные ячейки в памяти, в которых хранятся значения. В статье мы обсудили структуру и методы объявления массивов, а также привели примеры, чтобы было легче понять использование массивов.
