суббота, 12 марта 2016 г.

Имитация горения свечи…

Всем моим читателям большой привет. Продолжаю осваивать удивительный мир микроконтроллеров Ардуино. На этот раз появилась идея реализовать мигание светодиодов в более менее интересный проект, который так же будет использован в будущем проекте «Умный ночник». Но пока что будем идти вперед, и как говориться начало пути это первый шаг. А первый шаг как раз и будет решением задачи – сделать так чтобы светодиоды мерцали, таким образом, чтобы это напоминало горение свечи…

За основу решил взять три светодиодов: один красный и два желтых. Затем используя ШИМ (широко импульсную модуляцию) и генерацию случайных чисел заставить их мерцать случайным образом. Случайно будет продолжительность их горения, и продолжительность пауз между их включениями. То есть иными словами все три светодиода будут зажигаться разным напряжением (благодаря ШИМ) соответственно яркость их свечения будет все время меняться. И поскольку они разных цветов, то благодаря разной яркостью и продолжительности свечения мы будем получать разные световые эффекты, которые должны нам напомнить горение свечи.

А теперь от идеи пора переходить к практической реализации, а точнее алгоритму работы светодиодов. Он оказался таким простым, благодаря оператору случайных чисел. Вот попробуйте сами разобраться как будет работать такая строчка кода: analogWrite (led_red, random(120) + 135); на самом деле все просто: с помощью команды analogWrite на вывод (который может генерировать ШИМ, это могут быть пины с номерами: 9, 10, 11) будет подаваться напряжение от 0 до 5 вольт благодаря генерации случайных чисел от 135 до 255). Полный скетч привожу ниже:
int led_gel1 = 9; // желтый светодиод
int led_red = 10; // красный светодиод
int led_gel2 = 11; //желтый светодиод
void setup()
{
  pinMode (led_gel1, OUTPUT);
  pinMode (led_red, OUTPUT);
  pinMode (led_gel2, OUTPUT);
}

void loop()
{
  analogWrite (led_gel1, random(120) + 135);
  analogWrite (led_red, random(120) + 135);
  analogWrite (led_gel2, random(120) + 135);
  delay (random(100));
}
Как видите все действительно просто. Собираю схему пока на макетной плате, и проверяю. В целом все работает, но чтобы действительно получить эффект горящей свечи, светодиоды я поместил в полупрозрачный пластиковый колпачок (от использованной жидкости для полоскания рта). Под полупрозрачным колпачком светодиоды действительно зажигаясь напоминали горение свечи. Но особо эффективно смотрится конечно же ночью.


Какие планы на будущий проект «умный ночник»? Конечно же сделать его автоматическим и многорежимным. Автоматически он зажигает светодиоды в режим «свечи» при низком уровне освещения, тут конечно же понадобиться фоторезистор. Так же можно сделать управление с пульта: включением дополнительной подсветки (здесь уже с помощью реле можно включить мощную нагрузку, например светодиодную ленту).  Как говориться идеи есть, теперь можно постепенно их начинать реализовывать. 


5 комментариев: