Долго ли, коротко ли — добрались до прошивки светильника. Особо здесь говорить не о чем, разве что о тонкостях управления. Сначала я планировал сделать включение по поднесению руки, а переключение цветов — по нажатию кнопки. Подумав, однако, пришел к выводу, что ночник может висеть высоко, а цвета захочется переключить, вот прям вынь да положь! Не бежать же за лестницей! Тогда родилась новая концепция (да, будем использовать умные слова): цвета должны переключаться также по поднесению руки, но только если ее задержать на некоторое время. Секунд пять, скажем. После этого каждые три секунды светильник переключается на следующий из 13 цветов. Если убрать руку, не дождавшись переключения цвета, то ночник просто выключится.
Следующее: в ходе экспериментов было обнаружено, что антенна датчика может ловить своего рода «фон». Так, при использовании в качестве антенны тонких проволочек, фон не превышал 0.5 вольт, зато с куском текстолита он поднимался выше 1 вольта. Следуя принципу черного ящика (согласно которому, конечный пользователь не обязан знать, как работает эта фиговина, ибо «во многой мудрости есть многие печали»), я сделал просто: при первом включении ночника срабатывает функция, замеряющая фоновое значение на датчике. Если при дальнейшей работе напряжение поднимется на определенную величину, то датчик сработает. Это позволит даже использовать корпус из металла — например, от готового уличного светильника, каких полно в магазинах осветительных приборов. Программная реализация, конечно, далека от идеальной, я не использовал компаратор (как следовало бы), но для моих целей сгодился и получившийся говнокод.
А теперь самое главное. Пользователь хоть и не обязан знать, как работает программа, но он должен иметь доступ к необходимым настройкам. Я позаботился и об этом. Выглядит оно вот так:

- номер цвета по умолчанию
- "отклонение" для срабатывания датчика
- "фоновое" значение
- время ожидания до переключения цвета
- время между переключением цветов (в разработке)
То есть настройки светильника можно будет менять, просто устанавливая значения в соответствующие ячейки EEPROM перед прошивкой. Разумеется, все еще есть некоторые проблемы, вызванные моей невнимательностью. Например то, что после второй смены цвета светильник все равно гаснет, забыл где-то выставить флаг на отмену выключения. Но это уже отладка.
Таким образом, остается последнее — сборка корпуса. Как выяснилось, проволочные антенны все же не настолько чувствительны, как хотелось бы, поэтому стенки ночника будут собраны из шести рамок, материалом для которых послужит фольгированный стеклотекстолит. Вместо оргстекла для рассеивателя попробую взять бесцветную пластиковую пленку, какую используют при переплете курсовых, дипломов, докторских… и прочих никому не нужных опусов. Это позволит здорово уменьшить вес конечного устройства. Развязка близка. Посмотрим, что получится…








Обсуждение закрыто.