пятница, 5 февраля 2016 г.

Мерцающий светодиод


Всем моим читателям привет. Сегодня мы продолжим изучение ардуино. В этом уроке мы постараемся разобраться как заставить светодиод мерцать. До этого он просто мигал, то есть иными словами на него приходили периодические импульсы тока, заставляя его зажигаться, и затем некоторое время на светодиод не поступало напряжение – он гас. А можно сделать так, чтобы светодиод зажигался по нарастающей яркостью и так же гас? Оказывается да! Вам интересно? Тогда читаем дальше…

Все что нам нужно будет сделать – только написать скетч. Да разобраться как работает одна команда, которая будет отправлять на пин разное напряжение, тем самым заставляя светиться светодиод по разному. Схема остается та же: светодиод подключен к резистору на 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» и величина х снова начнет увеличиваться, пока не достигнет верхнего порога, контролируемого первым циклом. И так будет крутиться до бесконечности. 


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

1 комментарий:

  1. В этом контексте существенный интерес представляет, также, "связка" ESP-12F WeMos D1 WiFi и Arduino UNO.
    А также, управление этой "связкой" из "внешнего" ПО.
    См. примеры здесь:
    https://roamer55.ru/main_programming/arduino/arduino_technosphere_000/arduino_technosphere_000_005/

    ОтветитьУдалить