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

Для реализации проекта была выбрана плата Arduino UNO, так как есть готовые библиотеки для считывания и отправки инфракрасного сигнала. Вначале были прочитаны команды пульта, используя микросхему VS1838B (Ардуино библиотека писала, что это протокол LG и используются 28 бит). Попробовал генерировать такие же сигналы используя функцию sendLG - ничего не получилось (осциллоскопа нету, увидеть сигнал в живую возможности не было). Поэтому 8 команд (включить, выключить, ярче, темнее, белый, красный, синий, розовый) были прочитаны в режиме raw , и каждой команде соответствовал свой массив из 67 unsigned int значений. Конечно это плохое решение, потому что занимает 60% динамической памяти, но других вариантов как решить эту задачу у меня не было.

Далее была работа над меню устройства. Необходимо было дать возможность выставить текущее время, а также выбрать параметры освещения под каждый час. Был взят символьный дисплей 20х4 (использовал параллельное подключение, т.к. переходник на I2C глючил) и три кнопки, всего получилось семь окон для символьного дисплея. Для реализации меню пришлось повозится, используется Конечный автомат (Finite-state machine) с 77 состояниями.

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

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