Массив и ардуино. Урок 2.1. Ардуино

Ардуино
Ардуино и массив светодиодов
Ардуино и массив светодиодов

Привет! Продолжаем подключать к ардуино новые детали и рассматривать новые функции языка.

В прошлый раз мы подключили внешний светодиод, если вы уже забыли этот урок или пропустили его, пожалуйста, посмотрите его.

Урок 2. Светодиод и ардуино

В этот раз мы подключим больше светодиодов, сделаем примитивное случайное переключение светодиодов и рассмотрим массивы в языке программирования ардуино.

Итак, чтобы выполнить сегодняшний урок нам понадобятся.

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 4 Резистора номиналом 220 Ом
  • 4 Светодиода 5 мм
  • Кабель USB

Массив и Ардуино

Массивы в языке программирования ардуино работают как обычно. Массив — это набор переменных, доступ к которым осуществляется с помощью номера индекса.

Чтобы создать массив переменных, объявим его в области объявления переменных.

int leds[] = {5, 7, 9, 11};

В данном случае мы создали массив leds. Он состоит из четырех переменных. Обратиться к каждой из этих переменных можно по ее индексу внутри массива.

leds[2] = 9

Индекс, в данном случае, это двойка. Девять — это значение элемента массива с индексом 2. Массивы адресуются с нулевого элемента. То есть, первый элемент массива имеет индекс 0.

leds[0] = 5

Соединяем светодиоды и ардуино

Принципиальная схема подключения ардуино и светодиодов
Принципиальная схема подключения ардуино и светодиодов

Соединим пин gnd и синюю шину на макетной плате.

Все катоды светодиодов соединим с этой шиной через резисторы.

Аноды светодиодов соединим со своими пинами на ардуино. Будем использовать 11, 9, 7 и 5 пины. Порядок светодиодов не имеет значения. Пока что мы будем включать и выключать их случайным образом, используя функцию random().

Не забудьте, что анод — это длинный контакт светодиода. Он подключается к источнику питания. А катод — короткий контакт. Он подключается к земле.

Программа

Итак, у нас есть четыре подключенных к ардуино светодиода и мы хотим включать их и выключать используя функцию random(). А также оформить доступ к ним с помощью массива.

В первую очередь объявим нужные переменные и массив в области объявления переменных.

int leds[] = {5, 7, 9, 11};
int r = 0;
int del = 100;

Теперь мы сможем использовать эти переменные и обращаться к элементам массива. В массиве мы будем хранить номера пинов на плате ардуино, напряжение на которых мы будем изменять.

В главной функции setup() настроим пины из массива на вывод и сразу включим светодиоды, подключенные к этим пинам.

Настроим пины явно используя каждый элемент отдельно.

pinMode(leds[0], OUTPUT);
pinMode(leds[1], OUTPUT);
pinMode(leds[2], OUTPUT);
pinMode(leds[3], OUTPUT);

А включим светодиоды используя цикл for(). Таким образом запись программы будет короче и удобнее.

for( int i=0; i <= 3; i++){
    digitalWrite(leds[i], HIGH);
}

Вы, наверняка, обратили внимание на унарный оператор ++ в третьем параметре цикла. Он увеличивает переменную i на 1 с каждым новым циклом работы программы.

Таким образом намного удобнее обрабатывать большое количество переменных, если требуется совершить однотипные действия. Конечно, можно включить их отдельно, то если бы мы использовали сто лампочек, это уже было бы не удобно.

В главном цикле loop() будем вычислять номер светодиода, выключать его на секунду и снова включать. Для этого воспользуемся функцией random(). Передадим ей два параметра 0 и 4. Это значит, что значение функции будет равно случайному числу от 0 до 3. Второе передаваемое значение не входит в промежуток. То есть, самое большое значение функции random(0, х) может быть равно х-1.

r = random(0, 4);

Когда номер пина определен, используем переменную r в функции digitalWrite() чтобы выставить на этом пине маленькое или большое напряжение. После смены напряжения сделаем паузу на 100 миллисекунд.

digitalWrite(leds[r], LOW);
delay(100);
digitalWrite(leds[r], HIGH);
delay(100);

В итоге эта программа будет выключать и включать один из четырех светодиодов и мы получим подобие небольшой гирлянды.

Результат программы
Результат программы

Полный текст программы

int leds[] = {5, 7, 9, 11};
int r = 0;
int del = 100;

void setup() {
  pinMode(leds[0], OUTPUT);
  pinMode(leds[1], OUTPUT);
  pinMode(leds[2], OUTPUT);
  pinMode(leds[3], OUTPUT);

  for( int i=0; i <= 3; i++){
    digitalWrite(leds[i], HIGH);
  }
}

void loop() {
  r = random(0, 4);
  digitalWrite(leds[r], LOW);
  delay(100);
  digitalWrite(leds[r], HIGH);
  delay(100);
}

Заключение

В этот раз мы создали аналог программы blink. Но использовали несколько внешних светодиодов. А также рассмотрели новые возможности языка. Унарный оператор ++. Посмотрели на возможности использования массивов в языке программирования ардуино. И создали первый проект, который действительно напоминает реальное устройство. В следующий раз подключим к проекту кнопку и попробуем управлять нашей гирляндой самостоятельно.

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

Ваш адрес email не будет опубликован.