Код моделирования основан на великой работе Марка Шермана. Для большинства светодиодных свечей случайное мерцание довольно примитивное, и они лишены довольно «жуткого» элемент света свечи: движущейся тени, отбрасываемой свечой.
В данной конструкции четыре светодиода расположены в квадрате, их яркость образует «центр» светового баланса, который можно плавно перемещать.
Этот «основанный на физике» свет свечи обладает следующими свойствами:
- У «пламени» есть положение и скорость.
- Если положение не отцентрировано, скорость будет увеличиваться к центру пропорционально смещению (закон пружин Гука).
- Случайные «толчки» в центральное положение света выполняются для имитации случайных сквозняков.
- Сила сквозняков периодически меняется (чередование периодов затишья и ветра).
Генератор псевдослучайных чисел
Реализация моделирования свечи требует случайных чисел для реалистичного мерцания свечи. Однако обычные библиотеки для генерации случайных чисел требуют относительно большого объема памяти. К счастью, Лукаш Подкалицкий разработал легкий генератор случайных чисел на основе сдвигового регистра с линейной обратной связью Галуа для ATtiny13A.
Этот метод гнерации используется и в конструкции данной светодиодной свечи, но с небольшими изменениями. При компиляции этой функции требуется всего 86 байт флэш-памяти.
//Начальное состояние (подойдет любое ненулевое значение) uint16_t rn = 0xACE1; // Генератор псевдослучайных чисел uint16_t prng(uint16_t maxvalue) { rn = (rn >> 0x01) ^ (-(rn & 0x01) & 0xB400); return(rn % maxvalue); }
Компиляция и загрузка прошивки с использованием Arduino IDE
- Убедитесь, что вы установили MicroCore .
- Перейдите в Инструменты -> Плата -> MicroCore и выберите ATtiny13.
- Перейдите в Инструменты и выберите следующие параметры платы: (Clock: 1.2 MHz internal osc.; BOD: disabled; Timing: Micros disabled)
- Подключите программатор к компьютеру и к разъему ICSP на плате.
- Перейдите в Инструменты -> Программатор и выберите свой ISP-программатор (например, USBasp ).
- Перейдите в Инструменты -> Записать загрузчик, чтобы записать фьюзы.
- Откройте Candle.ino и нажмите « Загрузить».
Скачать файлы проекта (60,0 KiB, скачано: 365)
