Новогодняя гирлянда Arduino NANO на пульте, 1000 вариаций (38 эффекта и 33 палитры)

«Какой же новый год и без елочки?»

— Ваши игрушки бракованные! — Что, не блестят? — Нет, не радуют!

Наверное каждому уже надоели скучные гирлянды с однотипными эффектами. Хочется что-то по серьезнее, с минимумом вложением и использованием головы (она и так болит от новогодней кутерьмы).

Здесь рассмотрим гирлянду на 100 светодиодов, с 1000 вариациями и ценой за контроллер 150 руб

Интересно? Следуйте далее…

Мои хотелки:

Использовать ленту на WS2811, и чтоб управлялось пультом. На Arduino, как правило, это не выполнимо, слабовато, ресурсов не хватает, лишнего ничего не прикрутишь.
Я уже был готов собрать это на контроллерах ARM. (валяются у меня много платок контроллеров с LPC1754) но паять не охота, и переводить код с Arduino времени нет.
Да я знаю что можно делать на ESP8266, но не хочу… (желающие могут портировать скетч самостоятельно)
И вот мучительно рыская в интернете в поисках интересных эффектов под разные библиотеки, я случайно набрел на страничку FastLED-Demos, где Andrew Tuline выкладывает эффекты для библиотеки FastLED.
Меня заинтересовал раздел notamesh

Я сказал Вау… и понеслось…

Итак.

Для повторения схемы:
Покупается гирлянда на WS2811 или WS2812 или им подобных (куплена наверно уже давно на прошлых распродажах).
Покупается модуль Arduino UNO, NANO или подобным на контроллере ATMega328
Берется модуль ИК (такой или такой )
Пульт от старого телевизора или видеомагнитофона, или плеера.
Блок питания 5 вольт и 3 ампера. Ну любой

У меня были 100 штук WS2812B я каждый светодиод закатал в прозрачную термоусадку, это дало свечение на 360 градусов.

Картинки
Светодиод
Светодиод

В закромах валялась платка на схеме NANO, блок питания, приемник ИК, и корпус от роутера все это соединил воедино.

Картинки
Коробочка
Внутри

У меня получилось:
вход с ИК пин 8 (PB0, D8, физический пин 12),
выход на гирлянду пин 14 (PC0, A0, физический пин 23)

Вот схема:

Проверяйте распиновку (например, у ИК приемников ножки могут отличаться)

Вы можете выбрать другие ножки Arduino, я покажу, где менять в скетче.

Теперь о скетче

Автор использовал библиотеки FastLED (https://github.com/FastLED/FastLED) и IRLremote.
Первую я оставил, вторую заменил на IRremote (https://github.com/z3t0/Arduino-IRremote), теперь пульт работает с библиотекой FastLED.

Мой вариант скетча с этими библиотеками https://yadi.sk/d/4aKV_Ug6HcFdWQ
Оригинальный скетч старался не переделывать (нет времени).
В будущем добавлю новых команд.

Продолжаем

Скачиваем библиотеки FastLED и IRremote и ставим.

Для установки библиотеки IRremote, по совету автора надо удалить Arduino / libraries / RobotIRremote

Берем пульт, загружаем пример из библиотеки IRremote с названием IRrecvDemo

В 11 строке int RECV_PIN = 11; 11 меняем на 8 (в моей схеме к этому пину подключен ИК приемник)
Загружаем скетч в Arduino.

Тыкаем на кнопки пульта и в режиме монитора порта будут появляться коды, запоминаем их.
Эти коды надо вставить в файлик commands.h,

Например:
для команды IR_A1 (увеличить яркость) у меня на пульте код клавиши 0xff4ab5
#define IR_A1 0xff4ab5 //N/P // Увеличение яркости A1
разберетесь я думаю.

Настройка моего скетча

У автора номера строк будут другими

В 75 строке выставляем пин приемника ИК int RECV_PIN = 8;
В 84 строке выставляем пин выхода на гирлянду #define LED_DT 14
Если у вас другие гирлянды то в строках 84- 87 выбирается ее тип.
И не забываем для 4 проводных гирлянд убрать комментарий в строке 208 и добавить в 209
// LEDS.addLeds<LED_TYPE, LED_DT, LED_CK, COLOR_ORDER >(leds, MAX_LEDS);
LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER >(leds, MAX_LEDS);
Если пины не напутали, то должно работать сразу

При первом запуске число светодиодов в гирлянде установлено в 20 шт
Поэтому, для тех кто не использует пульт надо в стоке 119 поставить нужное количество светодиодов,
#define INITLEN 20
а если вы уже запустили, то тогда меняем код в строке 225
NUM_LEDS = EEPROM.read(STRANDLEN);
На NUM_LEDS =100;
Где 100 это ваше количество светодиодов.

Для остальных, количество светодиодов можно настраивать с пульта

Я не ограничен в токе блока питания, если у вас блок питания слабее,
то в строке 211 меняем второе число на ваше
set_max_power_in_volts_and_milliamps(5, 3000);
где 3000 – максимальный ток блока питания в мА, его при необходимости меняем

Вроде все

Как будет время, добавлю эффектов и скетч сюда выложу.

Я записал видео эффекты (режим демонстрации)

И видео когда не меняя эффект, пультом переключал палитры.

Ну как то так….

С Наступающим Новым Годом!!

Планирую купить +2 Добавить в избранное +5 +9

(c) 2017 Источник материала

Пролистать наверх