В видео уроке : Урок 5 - Полицейская мигалка своими руками из светодиодов на Arduino . Мы подключили два светодиода и заставили их поочередно плавно включатся и выключаться. В данном уроке подключение аналогично предыдущему уроку. Измениться только программа управления.
Для урока нам понадобится:
Подключим два светодиода к плате Arduino UNO . У нас получиться вот такая схема.
Принципиальная схема.
Скетч для управления полицейским стробоскопом во такой. Менее 30 строчек кода.
int led_5 = 5; // пин подключения 5
int led_3 = 3; // пин подключения 3
// переменные
boolean status = true; // флаг, что активна левая
boolean open = true; // флаг, включения
int interval[6]={50, 120, 90, 240, 150, 50}; // интервал включения/выключения LED
void setup() {
// два вывода на выход
pinMode(led_5, OUTPUT);
pinMode(led_3, OUTPUT);
}
void loop() {
for (int x=0; x<6; x++) { // цикл 6 проходов
if (open) // если true
digitalWrite(status ? led_3 : led_5, HIGH); // если status == false то падаем на пин 3 иначе на пин 5
else // иначе
digitalWrite(status ? led_3 : led_5, LOW); // если status == false то падаем на пин 3 иначе на пин 5
delay(interval[x]); // Ждем
if (x == 5) // если последний проход по циклу
status = !status; // передаем слово (меняем текущий пин) меняем false на true и наоборот;
open = !open; //меняем false на true и наоборот;
}
}
Переменные:
// переменные
boolean status = true; // флаг, что активна левая
boolean open = true; // флаг, включения
int interval[6]={50, 120, 90, 240, 150, 50}; // интервал включения/выключения LED
Переменная status — отвечает за работу левого и правого светодиода. Если статус true (истина). Программа управляет левым светодиодом. Иначе false (ложно) — программа управляет правым светодиодом.
Переменная open — аналогично переменой статус. Если true- светодиод светиться, иначе false — светодиод выключен.
Массив interval- содержит 6 значений. Нечетные значения это время свечения светодиода. Четные время сколько светодиод не светиться между интервалами свечения.
В основно цикле loop() у нас выполняется цикл for() 6 раз, равно столько сколько у нас элементов в массиве interval.
digitalWrite(status ? led_3 : led_5, HIGH); // если status == false то падаем на пин 3 иначе на пин 5
В данной строчке нас интересует вырождение в круглых скобках.
status ? led_3 : led_5
Данное вырождение сокращенная форма условия. По другому данную строку можно написать:
if (status == true)
led_3
else
led_5
delay(interval[x]); // Ждем
Обычная функция delay(). Просто мы передаем в качестве аргумента элемент массива, где x - это номер прохода по циклу
for (int x=0; x<6; x++) { // цикл 6 проходов
Первый элемент interval[0], так как у нас цикл начинается с 0 и нумерация элементов массива начинается с 0. Второй элемент interval[1] и так далее до interval[5].
if (x == 5) // если последний проход по циклу
status = !status; // передаем слово (меняем текущий пин) меняем false на true и наоборот;
Если мы делаем проход по циклю меряем статус на противоположный тем самым передаем слова другому светодиоду.
open = !open; //меняем false на true и наоборот;
Переменную open меняем на противоположное значения при каждом выполнении цикла. Для смены свечения светодиода: вкл → выкл →вкл → выкл →вкл → выкл. Так как у нас 6 интервалов времени в массиве interval.
После того как цикл выполнился 6 раз. Передается слова другому светодиоду и все повторяется снова.
Понравилась статья? Поделитесь ею с друзьями:
Вернуться в раздел: Уроки Arduino: Светодиоды, Резисторы, Arduino Дата публикации 28 марта , 2017
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.