Массив - это набор переменных, доступ к которым осуществляется по индексу. Массивы в языке программирования C, использующемся при программировании Ардуино, могут представлять собой сложные структуры, но для понимания использование обычных одномерных массивов проще.
Ниже представлены правильные способы создания (объявления) массивов.
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
Можно объявить массив без его инициализации, как myInts.
В myPins мы объявили массив без прямого указания его размера. Компилятор сам посчитает элементы и создаст массив соответствующего размера.
В конце концов, можно и проинициализировать массив, и указать его размер, как mySensVals. Следует помнить, что при объявлении массива типа char, в нем необходимо место для хранения обязательного нулевого символа, поэтому размер массива должен быть на один символ больше, чем требует инициализируемое значение.
Нумерация элементов массива начинается с нуля, т.е. первый элемент массива имеет индекс 0. Следовательно, применительно к проинициализированным выше массивам,
mySensVals[0] == 2, mySensVals[1] == 4, и т.д.
Это также означает, что в массиве из 10 элементов, последний элемент имеет индекс 9. Следовательно:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] содержит 11
// myArray[10] ошибочный результат, который может содержать случайные значения (из-за другого адреса памяти)
Поэтому, необходимо быть внимательным при обращении к массивам. Обращение к элементу за пределами массива (когда указанный индекс больше, чем объявленный размер массива - 1) приведет к чтению данных из ячейки памяти, использующейся для других целей. Считывание из этой области, вероятно, не приведет ни к чему, кроме получения неверных данных. Запись же в случайные области памяти - определенно плохая идея, и часто может приводить к не желаемым результатам, таким, как зависания или сбои в работе программы. Кроме того, такие ошибки трудно отыскать.
В отличие от BASIC или JAVA, компилятор C не проверяет правильность индексов при обращении к элементам массива.
mySensVals[0] = 10;
x = mySensVals[4]
Работа с массивами часто осуществляется внутри циклов FOR, в которых счетчик цикла используется в качестве индекса каждого элемента массива. Например, программа вывода элементов массива через последовательный порт может выглядеть так:
int i;
for (i = 0; i < 5; i = i + 1)
{
Serial.println(myPins[i]);
}
Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.