Світлодіодна свічка на attiny

Світлодіодна свічка на Attiny. У ній використані світлодіоди високої яскравості і спеціальна програма для імітації справжньої свічки. Я думаю що така свічка корисна як реквізит до фільму або для використання її будинку. Вона виглядає як звичайнісінька свічка, але не має відкритого полум'я, не гріється і не коптить. Вона абсолютно пожежобезпечна.
Я думав про створення такої свічки в перебігу досить тривалого часу. Я вважаю, що найважча частина цього проекту це створення реалістичного мерехтіння, тому я вирішив, що природа зробить це краще ніж я. Я додав до своєї свічці світлочутливий резистор в зв'язці з постійним резистором. Разом вони діють як дільник напруги, напруга з якого подається на один з входів АЦП Attiny85 і записує результати проби через дискретні інтервали часу. Частота дискретизації 100мс. 8-розрядні значення рівня освітленості зберігаються в EEPROM, тому свічка запам'ятовує програму мерехтіння. Ви можете скидати програму мерехтіння і записувати його знову за все натисканням однієї кнопки.
Я зробив реєстратор освітлення (логгер) з відносно невеликою пам'яттю 500 байт на Attiny85. Проте, 500 байт @ з частотою дискретизації 100 мс дають мені
50 секунд часу. Це досить, щоб не бачити повторень в мерехтінні.

Я не згадав, що корпус і світлодіод я використовував від готової світлодіодним свічки. Не знаючи характеристик світлодіода я вирішив виміряти їх. Я запалив світлодіод з резистором приєднаним послідовно. На светодиоде у мене була напруга 2,01V. Я припускаю, що максимальний допустимий для нього струм - 20 мА макс і розрахував опір резистора при харчуванні 3мя батарейками АА по 5V кожна. Таким чином,
((3 * 1,5 В) - 2.01Vf) / 0.02mA = R124.5. Я думаю, найближчим значення по ряду це R220, з ним струм через світлодіод склав

Ось фото зібраної схеми готової до установки в корпус:


Робочий исходник програми ви можете завантажити нижче. У мене є кілька ідей, які я можливо реалізую в майбутньому.
Після запису мерехтіння свічок в EEPROM, я можу вважати дані. Нижче наведені 500 байт готової програми мерехтіння.
Художній альбом поліпшень:
А) Версія Attiny85, що дозволяє працювати від меншої напруги (2 батарей АА). У мене такого контролера не було, і довелося використовувати 3 батареї АА, які не влазять в корпус.
Б) Непогано було-б додати свічці режим автоматичного відходу в сплячий режим через кілька годин роботи з подальшим включенням від зовнішнього переривання (кнопки).

список радіоелементів
Наскільки я зрозумів, можна і без нього. Якщо eeprom прошити. Але файл викладений в неправильному кодуванні. Жодна з 4-х встановлених середовищ нормально його не відчинила. До того ж використовується бібліотека eeprom.h, яку не всі середовища поттягівают і в моїй наприклад взагалі немає даного МК. Якби виклали і прогу і eeprom вже відразу в робочому hex, був би вдячний. Оскільки сам новачок. Спробував змінити, контролер прошив. Світлодіод просто горить і на кнопку не реагує.
Робив подібне на ATtiny13A-AU. Прописав найпростіший генератор псевдовипадкових чисел. Запустив таймер в режимі ШІМ. Сторойжевой таймер в режимі генерації преріваній. Прописав змінну яка вважає вгору / вниз. Алгоритм простий. В основному циклі безперервно викликається генератор псевдовипадкових чисел. У перериванні сторожового таймера змінна порівнюється з обраним псевдовипадковим числом. Якщо змінна менше ніж псевдовипадкове, то перемнние інсрементіруется і видається в ШІМ-регістр. Якщо більше, то декрементируется. Коли значення змінної і сгенернірованного числа співпадуть, вибирається наступне число з генератора псевдовипадкових. Тільки частоту переривань сторожового таймера і розрядність змінної і ШІМ потрібно підібрати під приємне за швидкістю мерехтіння.

Pickit 2 - USB-програматор PIC-мікроконтролерів