Урок по Arduino №1: подключаем, настраиваем, мигаем одноцветными и RGB-светодиодами

Как подключить RGB светодиод к Ардуино

На этом занятии мы будем использовать цифровые и аналоговые выходы с «широтно импульсной модуляцией» на плате Arduino для включения RGB светодиода с различными оттенками. Использование RGB LED ленты позволяет создать освещение интерьера с любым оттенком цвета. Расскажем про устройство и распиновку полноцветного (RGB) светодиода и рассмотрим директиву #define в языке C++.

Устройство и назначение RGB светодиода

Для отображения всей палитры оттенков вполне достаточно три цвета, используя RGB синтез (Red — красный, Green — зеленый, Blue — синий). RGB палитра используется не только в графических редакторах, но и в сайтостроении. Смешивая цвета в разной пропорции можно получить практически любой цвет. Преимущества RGB светодиодов в простоте конструкции, небольших габаритах и высоком КПД светоотдачи.

RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор. Кроме того, модуль RGB LED Arduino может сразу монтироваться на плате и иметь встроенные резисторы — этот вариант более удобный для занятий в кружке робототехники.

Фото. Распиновка RGB светодиода и модуль с RGB светодиодом для Ардуино

Распиновка RGB светодиода указана на фото выше. Заметим также, что для многих полноцветных (трехцветных) светодиодов необходимы светорассеиватели, иначе будут видны составляющие цвета. Далее подключим трехцветный светодиод к Ардуино и заставим его сначала мигать разными цветами, а затем плавно переливаться разными цветами с помощью «широтно импульсной модуляции».

Управление RGB светодиодом на Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • RGB светодиод;
  • 3 резистора 220 Ом;
  • провода «папа-мама».

Фото. Схема подключения RGB LED к Ардуино на макетной плате

Модуль «RGB светодиод» можно подключить напрямую к плате, без проводов и макетной платы. Подключите модуль с полноцветным RGB светодиодом к следующим пинам: Минус — GND, B — Pin13, G — Pin12, R — Pin11 (смотри первое фото). Если вы используете RGB LED (Light Emitting Diode), то подключите его по схеме на фото. После подключения модуля и сборки схемы на Ардуино загрузите скетч в плату.

Скетч для мигания RGB светодиодом на Ардуино

Пояснения к коду:
  1. с помощью директивы #define мы заменили номер пинов 11, 12 и 13 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. в процедуре void loop() мы поочередно включаем все три цвета на RGB.

Плавное управление RGB светодиодом

Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «ШИМ». Для этого ножки светодиода необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на аналоговые выходы микроконтроллера различные значения ШИМ (PWM), для этого воспользуемся циклом for, с помощью которого можно повторять нужные команды в программе.

Скетч для плавного мигания RGB светодиода

Пояснения к коду:
  1. с помощью директивы #define мы заменили номера пинов 9, 10 и 11 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. пины 9, 10 и 11 мы использовали, как аналоговые выходы analogWrite .

Управление, подключение RGB светодиодов

Для управления RGB светодиодами необходимо установить нужное значение параметров. На выходы подаются прямоугольные импульсы определенной величины, влияющие на величину среднего тока и средней яркости.

Если импульсы будут маленькие, то светодиоды начнут мигать. Для постоянного свечения требуется частота 60-70 Гц ( старые модели ), в новых типах не менее 100 Гц.

Простейшая реализация управления RGB светодиодов требует ШИМ. Главное — правильная реализация программной части. На первый взгляд это сложно. Но только на первый взгляд… В действительности — это не тяжелее, чем подключать обычные диоды.

Работа схемы

Схема устройства представлена на следующем рисунке.

На представленной схеме мы подсоединили общий отрицательный вывод трехцветного светодиода к выводу питания платы Arduino при помощи резистора 1 кОм.

Отрицательные выводы (1, 3, 4) трехцветного светодиода подсоединены к контактам 2, 3 и 4 Arduino. Здесь трехцветный светодиод подсоединен в обратной логике, то есть если мы подадим на отрицательные выводы светодиода высокий уровень, то он выключится. То есть чтобы светодиод оставался в выключенном состоянии необходимо поддерживать на его отрицательных выводах высокий уровень. А если мы подадим на них низкий уровень, то светодиод зажгется.

То есть мы имеем, что контакт 2 светодиода – это его общий анод, а контакты 1, 3 и 4 – отрицательные выводы для красного, синего и зеленого цветов соответственно.

В представленном далее коде программы вы можете увидеть как мы последовательно мигаем всеми тремя цветами в трехцветном светодиоде последовательно подавая на соответствующие отрицательные выводы светодиода высокий и низкий уровень.

Как подключить RGB светодиод к Arduino

RGB светодиод – это три светодиода разных цветов (Red – красный, Green – зелёный, Blue – синий), заключённые в одном корпусе. Давайте посмотрим, как подключить RGB светодиод к Arduino.

Инструкция по подключению RGB светодиода к Arduino

  • или иная совместимая плата; ;
  • 3 резистора по 220 Ом (вот отличный набор резисторов самых распространённых номиналов);
  • соединительные провода (рекомендую вот такой набор); (breadboard);
  • персональный компьютер со средой разработки Arduino IDE.

1 Отличие RGB светодиодов с общим анодом и с общим катодом

RGB светодиоды бывают двух типов: с общим анодом («плюсом») и общим катодом («минусом») . На рисунке приведены принципиальные схемы эти двух типов светодиодов. Длинная ножка светодиода – это всегда общий вывод питания. Отдельно расположен вывод красного светодиода ( R ), зелёный ( G ) и синий ( B ) располагаются по другую сторону от общего вывода, как показано на рисунке. В данной статье мы рассмотрим подключение RGB светодиода как с общим анодом, так и с общим катодом.

RGB светодиоды с общим анодом и с общим катодом

2 Подключение RGB светодиода с общим анодомк Arduino

Схема подключения RGB светодиода с общим анодом показана на рисунке. Анод подключаем к “+5 В” на плате Arduino, три другие вывода – к произвольным цифровым пинам.

Схема подключения RGB светодиода с общим анодом к Arduino

Обратите внимание, что мы подключаем каждый из светодиодов через свой резистор, а не используем один общий. Желательно делать именно так, потому что каждый из светодиодов имеет свой КПД

И если подключить их все через один резистор, светодиоды будут светиться с разной яркостью.

Для быстрого расчёта номинала резистора, подходящего к выбранному вами светодиоду, можно воспользоваться онлайн-калькулятором расчёта светодиодов.

3 Управление RGB светодиодами с помощью Arduino

Перепишем классический скетч blink. Будем включать и отключать по очереди каждый из трёх цветов

Обратите внимание, что светодиод загорается, когда мы подаём низкий уровень (LOW) на соответствующий вывод Arduino

4 Собрать схемуна макетной плате

Посмотрим в действии на мигание RGB светодиодом. Светодиод по очереди зажигается красным, зелёным и синим цветами. Каждый цвет горит 0,1 секунду, а затем гаснет на 0,2 секунды, и включается следующий. Можно зажигать каждый канал отдельно, можно все одновременно, тогда цвет свечения будет меняться.

RGB светодиод подключён к Arduino. Схема собрана на макетной плате

5 Подключение RGB светодиода с общим катодомк Arduino

Если вы используете RGB светодиод с общим катодом, то подключите длинный вывод светодиода к GND платы Arduino, а каналы R, G и B – к цифровым портам Arduino. При этом нужно помнить, что светодиоды загораются при подаче на каналы R, G, B высокого уровня (HIGH), в отличие от светодиода с общим анодом.

Схема подключения RGB светодиода с общим катодом к Arduino

Если не менять вышеприведённый скетч, то каждый цвет светодиода в этом случае будет гореть 0,2 секунды, а пауза между ними составит 0,1 секунду.

Полезный совет

Если вы хотите управлять яркостью светодиода, то подключайте RGB светодиод к цифровым выводам Arduino, которые имеют функцию ШИМ (PWM ). Такие выводы на плате Arduino обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.

Устройство и сферы применения

Конструктивно RGB–светодиоды представляют собой три светодиодных кристалла с одной оптической линзой, расположенные в одном корпусе. Управление цветом происходит с помощью подачи электрических сигналов на выводы каждого светодиодного кристалла, а сочетание излучений всех трех светодиодов позволяет регулировать итоговый цвет. Для примера, ниже представлен самый популярный RGB–светодиод SMD 5050.

Светодиод RGB – это полноцветный светодиод, смешивая три цвета в разной пропорции можно отобразить любой цвет. К примеру, если зажечь все три цвета на полную мощность, получится свечение белого цвета.

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

Таблица длины волн светодиодов smd 5050, различного свечения

Разнообразие сфер применения многоцветных светодиодных источников света определяет основные виды внешнего оформления RGB–светодиодов: изделия небольшой мощности выпускаются в стандартных круглых корпусах со сферической линзой и выводами под обычную пайку; маломощные RGB–светодиоды в SMD-корпусах поверхностного монтажа широко применяются в светодиодных лентах или полноцветных светодиодных экранах большой площади; в корпусах типа Emitter выпускают мощные RGB–источники света с независимым управление каждым светодиодным кристаллом; сверх яркие светодиоды в корпусах.

Для упрощения систем управления светом в корпуса некоторых серий многоцветных LED–источников света вмонтированы управляющие микросхемы. Схемы расположения выводов (распиновка) Несколько стандартных схем управления определяют структуру внешних выводов RGB–светодиодов и их соединение внутри корпуса. Существует три основных схемы распиновки, которые соблюдаются на большинстве выпускаемых изделий:

  • В схеме с общим катодом для управления используется три независимых вывода анода, а катодные выводы LED-кристаллов соединены между собой;
  • Распиновка с общим анодом управляется отрицательными импульсами на катодные выводы, а вместе соединены уже анодные электроды светодиодных кристаллов;
  • Независимая схема соединения имеет шесть выводов по числу LED кристаллов, соединений внутри корпуса не производится.

Единого стандарта на распиновку не существует, конкретный тип расположения внешних выводов применяют в зависимости от поставленных задач. При отсутствии документов на светодиодное изделие тип внешних выводов легко определить с помощью мультиметра. В режиме прозвонки светодиод будет светиться (мощные светодиоды очень слабо), а мультиметр издавать звук соединения, если красный щуп мультиметра подсоединен к аноду светодиодного кристалла, а черный к его катоду. В случае обратного подключения никаких видимых и слышимых эффектов просто не будет.

Три светодиода и их размеры

Простейший способ подключения и управления режимами работы RGB–светодиодов реализуется с помощью стандартных микроконтроллеров Arduino

Общий вывод подключается к единой шине микроконтроллера, а управляющие сигналы подаются на выводы LED–кристаллов через ограничительные резисторы.Управление режимами свечения светодиодных кристаллов происходит с помощью широтной-импульсной модуляции, где скважность импульсов определяет силу света. Программирование ШИМ–модулятора определяет итоговый цвет всего прибора или циклические режимы работы каждого цвета

Программная часть

Код и библиотеки можно скачать здесь.

SUP_v1.0Скачать

Распаковываем архив, копируем библиотеки из папки lib в папку C:\Program Files (x86)\Arduino\libraries.

После чего открываем файл SUP_V1.0.ino и видим настройки:

Далее подключаем ардуино к компьютеру и заливаем код. После сообщения «загрузка завершена» можно проверять работоспособность устройства.

Короткие клики по кнопке меняют цвет ленты согласно прописанному массиву цветов, длинные нажатия увеличивают или снижают яркость поочерёдно.

Яркость регулируется для двух режимов, сработавшего датчика движения и без его срабатывания. Регулировка для каждого режима производится в том состоянии датчика в котором вы хотите отрегулировать яркость.

Это был домашний вариант подсветки, а теперь покажу вам автомобильный:

Плюсы и минусы светодиодов RGB

RGB-светодиодам присущи все достоинства, имеющиеся у полупроводниковых светоизлучающих элементов. Это низкая стоимость, высокая энергоэффективность, долгий срок службы и т.д. Отличительным плюсом трехцветных LED является возможность получения практически любого оттенка свечения простым способом и за небольшую цену, а также смена цвета в динамике.

К основному минусу RGB-светодиодов относят невозможность получения чистого белого цвета за счет смешения трех цветов. Для этого потребуется семь оттенков (в качестве примера можно привести радугу – ее семь цветов являются результатом обратного процесса: разложения видимого света на составляющие). Это накладывает ограничения на использование трехцветных светильников в качестве осветительных элементов. Чтобы несколько компенсировать эту неприятную особенность, при создании светодиодных лент применяется принцип RGBW. На каждый трехцветный LED устанавливается один элемент белого свечения (за счет люминофора). Но стоимость такого осветительного устройства заметно возрастает. Также бывают светодиоды исполнения RGBW. У них в корпусе установлено четыре кристалла – три для получения исходных цветов, четвертый – для получения белого цвета, он излучает свет за счет люминофора.


Схема подключения для RGBW-варианта с дополнительным контактом.

Только хардкор. Только прерывания!

Берем 16-ти битный Таймер 1. Устанавливаем прерывание на переполнение за 125мс

C++

uint8_t blink_loop = 0;
uint8_t blink_mode = 0;
uint8_t modes_count = 0;
// Начальное значение таймера
uint16_t n = 63583;

// Обработчик прерывания по переполнению таймера
ISR( TIMER1_OVF_vect )
{
if( blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
blink_loop++;
TCNT1 = n; //выставляем начальное значение TCNT1
}

void setup() {
pinMode(13,OUTPUT);
blink_mode = 0B00000000;
// А вот и хардкор – установка регистров таймера
TCCR1A = 0;
// Устанавливаем делитель 1024 к тактовой частоте 16МГц
TCCR1B = 1<<CS22 | 0<<CS21 | 1<<CS20;
//Подключаем прерывание по переполнению Timer1
TIMSK1 = 1<<TOIE1;
//Загружаем начальное значение таймера для первого цикла
TCNT1 = n;
sei(); // выставляем бит общего разрешения прерываний}
}

void loop() {
blink_mode = 0B00001111; //Мигание по 0.5 сек
delay(5000);
blink_mode = 0B00000001; //Короткая вспышка раз в секунду
delay(5000);
blink_mode = 0B00000101; //Две короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B00010101; //Три короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B01010101; //Частые короткие вспышки (4 раза в секунду)
delay(5000);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

uint8_t  blink_loop=;

uint8_t  blink_mode=;

uint8_t  modes_count=;

// Начальное значение таймера

uint16_tn=63583;

 
// Обработчик прерывания по переполнению таймера

ISR(TIMER1_OVF_vect)

{

if(blink_mode&1<<(blink_loop&0x07))digitalWrite(13,HIGH);

elsedigitalWrite(13,LOW);

blink_loop++;

TCNT1=n;//выставляем начальное значение TCNT1

}
 

voidsetup(){

pinMode(13,OUTPUT);

blink_mode=0B00000000;

// А вот и хардкор – установка регистров таймера

TCCR1A=;

// Устанавливаем делитель 1024 к тактовой частоте 16МГц

TCCR1B=1<<CS22|<<CS21|1<<CS20;

//Подключаем прерывание по переполнению Timer1

TIMSK1=1<<TOIE1;

//Загружаем начальное значение таймера для первого цикла

TCNT1=n;

sei();// выставляем бит общего разрешения прерываний}

}
 

voidloop(){

blink_mode=0B00001111;//Мигание по 0.5 сек

delay(5000);

blink_mode=0B00000001;//Короткая вспышка раз в секунду

delay(5000);

blink_mode=0B00000101;//Две короткие вспышки раз в секунду

delay(5000);

blink_mode=0B00010101;//Три короткие вспышки раз в секунду

delay(5000);

blink_mode=0B01010101;//Частые короткие вспышки (4 раза в секунду)

delay(5000);

}

Подробно по программированию таймера можно почитать здесь. При этом delay() на 5 секунд в Loop() совершенно не мешают управлению нашим светодиодом.

Недостаток такого метода в том, что не будут работать некоторые функции и библиотеки, использующие таймер 1. Например, ШИМ.

Если с программированием регистров сложно, а прерывание по таймеру использовать интересно —

Как подключить светодиод к Arduino Uno / Nano

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • несколько светодиодов и резисторов 220 Ом;
  • провода «папа-папа».

Для надёжной сборки устройств создаются печатные платы, на что уходит много времени. Для быстрой сборки электрических схем без пайки используют макетную плату (breadboard). Под слоем пластика на макетной плате находятся медные пластины-рельсы (дорожки), выложенные по простому принципу (смотри фото). Дорожки служат для создания контакта между радиоэлементами и проводами.

Быстрая сборка схем на макетной плате

Одну и ту же схему можно собрать разными способами Длинная ножка светодиодов — анод, она всегда подключается к плюсу

Для чего светодиод включают к Ардуино с резистором? Дело в том, что в светодиоде стоит кристалл который боится больших токов. Резистор призван ограничивать силу тока (Амперы), чтобы светодиод не перегорел. Большой ток губителен для светодиода, меньший ток (благодаря подключению резистора) обеспечивает длительную работу. Чтобы подключить светодиод к Ардуино без резистора, используйте 13 порт.

Кабель с разъемами USB-A и USB-B для подключения принтера

Если у вас не установлена программа Arduino IDE, то скачайте последнюю версию на официальном сайте www.arduino.cc. С помощью USB кабеля производится запись программ, также плата получает питание от компьютера. Если требуется автономная работа электронного устройства, то плату можно запитать от батарейки или блока питания на 7-12 В. При подаче питания на плате загорится светодиод индикации.

Убедитесь, что программа определила ваш тип платы Ардуино

Шаг 1. Зайдите в основном меню «Инструменты -> Плата». Если плата Arduino определилась неправильно, то выберите необходимый тип, например, Arduino Uno.

Шаг 2. Установите порт (кроме COM1) подключения в меню «Инструменты -> Порт», так как при подключении Ардуино к ПК создается виртуальный COM-порт.

Убедитесь, что программа определила порт подключения Ардуино

Скетч для включения светодиода от Ардуино

void setup() {
pinMode(13, OUTPUT); // объявляем пин 13 как выход
}

void loop() {
digitalWrite(13, HIGH); // зажигаем светодиод

delay(1000); // ждем 1 секунду

digitalWrite(13, LOW); // выключаем светодиод

delay(1000); // ждем 1 секунду
}

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

Скопируйте код и вставьте скетч в программу Arduino IDE

Перед загрузкой программы в микроконтроллер можно выполнить проверку (компиляцию), на наличие ошибок в коде. В случае обнаружения ошибки — будет получено сообщение в нижнем окошке Arduino IDE. В любом случае, при загрузке скетча, сначала происходит проверка и компиляция программы. При компиляции происходит перевод программы в двоичный код, понятный микроконтроллеру.

Перед загрузкой программы в микроконтроллер, потребуется сохранить скетч на компьютере. Нажмите «Сохранить» в появившемся окне и начнется загрузка.

Перед загрузкой программы, потребуется сохранить скетч

Пояснения к коду:

  1. процедура выполняется при запуске микроконтроллера один раз. Используется для конфигурации портов микроконтроллера и других настроек;
  2. после выполнения запускается процедура , которая выполняется в бесконечном цикле. Это мы используем, чтобы светодиод мигал постоянно;
  3. процедуры и должны присутствовать в любой программе (скетче), даже если вам не нужно ничего выполнять в них — пусть они будут пустые, просто не пишите ничего между фигурными скобками.

Заключение

Подключить светодиод к своей схеме на Ардуино – несложное занятие. Просто соединяем ножки в правильной последовательности и не забываем о токоограничивающем резисторе. Главное преимущество Ардуино в таких схемах – возможность программного управления светодиодом. Мы просто пишем в программе нужный алгоритм, загружаем его в контроллер и плата включает и выключает нужные нам пины.

Можно подключать несколько светодиодов, но следить, чтобы не выйти в итоге за пределы ограничений по току. Можно не просто включать или выключать свет, но и управлять его яркостью. Для этого используем пины, поддерживающие ШИМ и функцию analogWrite.

Более подробно о подключении и управлении светодиодами на ардуино вы сможете узнать в статьях с описанием таких проектов как мигалка, маячок, светофор.

Это эксперимент по работе с кнопкой. Мы будем включать светодиод по нажатии кнопки и выключать по отпускании кнопки. Рассмотрим понятие дребезга и программные методы его устранения.

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

В данном эксперименте мы будем использовать контакт D2 Arduino в качестве входа. Это позволяет подключить к нему кнопку для взаимодействия с проектом в режиме реального времени. При использовании Arduino в качестве входов используют pull-up- и pulldown-резисторы, чтобы вход Arduino не находился в «подвешенном» состоянии (в этом состоянии он будет собирать внешние наводки и принимать произвольные значения), а имел заранее известное состояние (0 или 1). Резисторы pull-up подтягивают вход к питанию +5 В, pull-down-резисторы подтягивают вход к GND. Кроме этого, pull-up- и pull-down-резисторы гарантируют, что кнопка не создаст короткого замыкания между +5 В и землей при нажатии. В нашем эксперименте для подключения кнопки мы будем использовать pulldown-резистор. Схема подключения представлена на рис. 2.1.

Когда кнопка отключена, вход D2 будет подтянут к «земле» через резистор номиналом 10 кОм, который будет ограничивать поток тока, и на входном контакте будет установлено значение напряжения LOW. При нажатии на кнопку входной контакт напрямую связан с 5 В. Большая часть тока будет протекать по пути наименьшего сопротивления через замкнутую кнопку, и на входе генерируется уровень HIGH. При нажатии на кнопку включаем светодиод, при отпускании – гасим. Код данного скетча приведен в листинге 2.1.

Порядок подключения:

1. Длинную ножку светодиода (анод) подключаем к цифровому выводу D10 Arduino, другую (катод) – через резистор 220 Ом к выводу GND (см. рис. 2.1). 2. Один вход кнопки подключаем к +5 В, другой – через резистор 10 кОм к GND, выход кнопки подключаем к входу D2 Arduino (см. рис. 2.1). 3. Загружаем в плату Arduino скетч из листинга 2.1. 4. При нажатии на кнопку светодиод должен гореть, при отпускании – затухнуть.

Усложним задачу – будем переключать состояние светодиода (включен/выключен) при каждом нажатии кнопки. Загрузим на плату Arduino скетч из листинга 2.2.

При нажатии кнопки светодиод должен изменять свое состояние. Но это будет происходить не всегда. Виной тому – дребезг кнопок. Кнопки представляют из себя механические устройства с системой пружинного контакта. Когда вы нажимаете на кнопку вниз, сигнал не просто меняется от низкого до высокого, он в течение нескольких миллисекунд меняет значение от одного до другого, прежде чем контакты плотно соприкоснутся и установится значение HIGH. Микроконтроллер зафиксирует все эти нажатия, потому что дребезг неотличим от настоящего нажатия на кнопку. Устранить влияние дребезга можно программно. Алгоритм следующий:

1. Cохраняем предыдущее состояние кнопки и текущее состояние кнопки (при инициализации LOW). 2. Cчитываем текущее состояние кнопки. 3. Если текущее состояние кнопки отличается от предыдущего состояния кнопки, ждем 5 мс, потому что кнопка, возможно, изменила состояние. 4. После 5 мс считываем состояние кнопки и используем его в качестве текущего состояния кнопки. 5. Если предыдущее состояние кнопки было LOW, а текущее состояние кнопки HIGH, переключаем состояние светодиода. 6. Устанавливаем предыдущее состояние кнопки для текущего состояния кнопки. 7. Возврат к шагу 2. Добавляем к нашему скетчу подпрограмму устранения дребезга. Получаем код, показанный в листинге 2.3.

Загружаем скетч в плату Arduino и проверяем работу. Теперь все работает нормально, каждое нажатие кнопки приводит к изменению состояния светодиода.

Поделитесь в социальных сетях:FacebookX
Напишите комментарий