Перейти к содержанию

Массивы Arduino: массивы данных, чисел, строк

Массивы в Arduino: массивы данных, чисел, строк

Массив — это структура данных, используемая для хранения в ней нескольких значений одного и того же типа. В массивах (Arrays Arduino IDE) можно хранить различные типы данных — числа (int, float и др.), а также буквы и строки. Структура массивов в Ардуино аналогична другим языкам программирования. Рассмотрим, как работать с массивами — объявлять и обращаться к массиву символов, чтобы использовать его элементы в скетче.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega

Дополнительные материалы на эту тему:

  1. Типы данных, типы переменных Ардуино
  2. Энергонезависимая память EEPROM Ардуино
  3. Ошибки компиляции для платы Ардуино Уно

Что такое массивы в Ардуино? Массивы в 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 [] = { };

Как обратиться к элементам массива Ардуино

Arduino Uno r3 распиновка, характеристики, схема

В скетче мы можем получить доступ к любому элементу массива. Например, у нас есть массив 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() {

}

Типы массивов: одномерные, двумерные и многомерные

Массивы в Arduino: массивы данных, чисел, строк

До этого мы использовали в примерах одномерные массивы переменных и строк, которые могут хранить только один список значений. Однако существуют и двумерные массивы, которые могут хранить два списка. Способ создания 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}}
};

Заключение. В языке программирования Ардуино массивы — это структуры данных, которые используются для хранения множества значений одних и тех же типов данных (чисел или строк). Массивы представляют собой смежные ячейки в памяти, в которых хранятся значения. В статье мы обсудили структуру и методы объявления массивов, а также привели примеры, чтобы было легче понять использование массивов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜