Мерцающий светодиод
Всем моим читателям привет. Сегодня мы продолжим изучение
ардуино. В этом уроке мы постараемся разобраться как заставить светодиод
мерцать. До этого он просто мигал, то есть иными словами на него приходили
периодические импульсы тока, заставляя его зажигаться, и затем некоторое время
на светодиод не поступало напряжение – он гас. А можно сделать так, чтобы
светодиод зажигался по нарастающей яркостью и так же гас? Оказывается да! Вам
интересно? Тогда читаем дальше…
Все что нам нужно будет сделать – только написать скетч. Да
разобраться как работает одна команда, которая будет отправлять на пин разное
напряжение, тем самым заставляя светиться светодиод по разному. Схема остается
та же: светодиод подключен к резистору на 220-240 Ом, оставшиеся выводы светодиода
подключим к 7 пину, а вывод резистора на землю.
Теперь давайте выясним с помощью какой команды можно на пин
подавать разное напряжение. В нашем случае мы будем использовать аналоговый
сигнал (который может менять свои параметры, например напряжение) командой analogWrite (пин, 0-255).
Тогда выбранный нами пин будет выдавать напряжение от 0 до 5 вольт в
зависимости от значения (которое можно изменять от 0 до 255).
Скетч привожу ниже. Но обратите внимание что этот скетч я
написал для платы WEMOS D1. Если у вас плата Arduino Uno то замените в скетче
имя пина с D7 на 7 и у
вас все обязательно заработает. Я пока временно использую плату WEMOS D1, но
как появиться у меня Arduino Uno то скетчи буду писать именно для нее. Но пока
что давайте попробуем разобраться со скетчем.
int LED
= D7;
int x=5;
void setup()
{
// пин со
светодиодом — выход, как и раньше...
pinMode(LED, OUTPUT);
}
void loop()
{
// цикл
управления яркостью 0 до 255
x=x+x;
if (x >
255)x=-10; // плавное нарастание
if (x < 20)x=10;
// плавное угасание
// выдаём
результат на светодиод
// delay (200);
analogWrite(D7, x);
delay (200);
}
У нас задействованы два оператора if. Именно они и заставляют светодиод
мерцать. Достигается это двумя циклами с условиями. Первый цикл с условием
проверяет чтобы величина х не стала больше 255 (как только это произойдет, то х
станет равным «минус 10» и величина х пойдет на убыль. Второй цикл
контролирует, чтобы во время работы «на убыль» величина х не стала меньше 20
(когда это произойдет то х будет присвоено значение «плюс 10» и величина х
снова начнет увеличиваться, пока не достигнет верхнего порога, контролируемого
первым циклом. И так будет крутиться до бесконечности.
Надеюсь что у вас все тоже получиться, тем более что это все элементарно просто. Пожелаю моим читателям успеха, и увидимся очень скоро в следующем уроке по набору ардуино. А пока давайте посмотрим как мигает светодиод (или даже несколько - включим их параллельно) уже в реале, а не на симуляторе.
В этом контексте существенный интерес представляет, также, "связка" ESP-12F WeMos D1 WiFi и Arduino UNO.
ОтветитьУдалитьА также, управление этой "связкой" из "внешнего" ПО.
См. примеры здесь:
https://roamer55.ru/main_programming/arduino/arduino_technosphere_000/arduino_technosphere_000_005/