Світлодіодне серце на atmega8 - blog the xelfaer

У мережі досить багато є варіантів виконання світлодіодного серця виконаного на основі мікроконтролерів, ось і я вирішив поділитися своєю реалізацією. Довго не доходили руки для написання статті, то часу не вистачає, то ще що то, але все ж кому то точно стане в нагоді навіть якщо не сьогодні, то в недалекому майбутньому.

Креслень не яких не було, все робилося по ходу роботи, проблеми виникають в процесі вирішувалися в ході роботи.
Просто подарувати світиться хустці звичайно варіант, але не в моєму випадку. За основу була взята шкатулка з фанери:

Світлодіодне серце на atmega8 - blog the xelfaer

Так як в моїх умови проживання і через брак необхідних інструментів - шкатулку я замовив в магазині.
Для додання більш благородного вигляду для неблагородною породи деревини з якого виготовлена ​​шкатулка було вирішено використовувати морилку. Чесно зізнаюся, що не коли до цього не працював з ними, зазвичай справа обмежувалася використанням оліфи. Після пошуків вибір зупинив на спиртовій морилці під червоне дерево Хімекспрес. Так як на той момент були сприятливі погодні умови, її довелося замовити в сусідньому місті в магазині. Далі необхідно було підібрати лак, який нормально ляже на дерево після використання морилки. Після вивчення даного питання в мережі, вибір припав на меблевий лак НЦ-218.
Начебто для декорування все є і можна починати обробку поверхні. Після розтину морилкою поверхні шкатулки першим шаром, вона чомусь лягла не сильно рівномірно, я мав місце трохи дурницю і розкрити її вдруге, і тут мене чекав «приємний» сюрприз - колір перетворився не під червоне дерево, а вже більше нагадує чорне дерево. Вже пізніше з'ясувалося, що морилку можна було розбавити, але вже було пізно. Далі почалося розтин лаком ... Відразу обмовлюся чому обрана зв'язка спиртова морилка + нітроцелюлозний лак - час сушки вироби після обробки, так як все впиралося в терміни. Розкривати нитролаком виріб ще збочення цікаве заняття, лак при нанесенні дуже швидко сохне і при його нанесенні головне покривати рівномірно поверхню і не залишати розлучень бо потім їх буде не приховати. Як знову ж потім з'ясувалося, що можна було розбавити лак до робочої в'язкості розчинником РМЛ або розчинником марки 646. Так як лак був густий, то нанесення його тампоном було дуже важким, тому наносив широким пензлем, а кромки - тонким пензликом для малювання. Все шкатулка покривалася 6-ю шарами лаку в 12 заходів так як необхідно було її як то тримати і покривати рівномірно всі частини. В даному випадку якщо порівнювати - то використання лаку на масляній основі простіше і зручніше в порівнянні з нітролаком, так як масляний лак дозволяє виправити патьоки, що не рівномірність нанесення, не такий їдкий запах. Мінус його використання - довго сохне. Після розтину лаком зрозумів ще одну свою помилку: необхідно було зняти петлі шкатулки перед розкриттям, але так як вже поїзд поїхав - довелося їх скручувати і відмивати від лаку після розтину.

Тепер приступимо до електронної начинки. Для цього потрібно:
1) Мікроконтролер ATmega8;
2) 22 SMD світлодіоди червоних;
3) 22 SMD резистора 620 Ом;
4) 1 SMD резистор 10 кОм;
5) 1 SMD конденсатор 0.1 мкФ.
де: мікроконтролер ATmega8 необхідний в корпусі TQFP, а все SMD деталі типорозміру 0805.

Все розлучувалося спочатку в програмі Sprint Layout 5, а пізніше додана розводка виконана в EagleCAD 6.6.0. Ось власне як вийшла розлучена плата в Sprint Layout:

Світлодіодне серце на atmega8 - blog the xelfaer

і плата в EagleCAD:

Світлодіодне серце на atmega8 - blog the xelfaer

В кінцевому варіанті маємо отримати так:

Світлодіодне серце на atmega8 - blog the xelfaer

Тепер залишилося додати закінчений вигляд внутрішньої частини шкатулки. Для цього було вирішено її обклеїти тканиною. Тканина була обрана темного червоного кольору - оксамит. Обклеїти нею виявилося не так просто тому що вона тонка і при обрізанні не виходить рівний зріз. Після пошуку інформації в мережі було знайдено варіант. зроблені картонні заготовки і безпосередньо на них наклеєна тканина, після чого всі вже обклеєні частини були приклеєні до самої скриньці.

Світлодіодне серце на atmega8 - blog the xelfaer

Тепер можна приступити до написання прошивки для мікроконтролерів. Прошивка робилася на швидку руку і код її залишає бажати кращого. Вибір ефектів які будуть відображатися це справа творча і обмежується тільки фантазією розробника і пам'яттю самого мікроконтролера. Я реалізував ті які мені припали власне до душі. Ось власне код самої прошивки:

#include
#include

// включити всі світлодіоди
void full_leds_on # 40; # 41;
# 123;
PORTD | = _BV # 40; PD4 # 41; ;
PORTB | = _BV # 40; PB6 # 41; ;
PORTD | = _BV # 40; PD3 # 41; ;
PORTB | = _BV # 40; PB7 # 41; ;
PORTD | = _BV # 40; PD2 # 41; ;
PORTD | = _BV # 40; PD5 # 41; ;
PORTD | = _BV # 40; PD1 # 41; ;
PORTD | = _BV # 40; PD6 # 41; ;
PORTD | = _BV # 40; PD0 # 41; ;
PORTD | = _BV # 40; PD7 # 41; ;
PORTC | = _BV # 40; PC5 # 41; ;
PORTB | = _BV # 40; PB0 # 41; ;
PORTC | = _BV # 40; PC4 # 41; ;
PORTB | = _BV # 40; PB1 # 41; ;
PORTC | = _BV # 40; PC3 # 41; ;
PORTB | = _BV # 40; PB2 # 41; ;
PORTC | = _BV # 40; PC2 # 41; ;
PORTB | = _BV # 40; PB3 # 41; ;
PORTC | = _BV # 40; PC1 # 41; ;
PORTB | = _BV # 40; PB4 # 41; ;
PORTC | = _BV # 40; PC0 # 41; ;
PORTB | = _BV # 40; PB5 # 41; ;
# 125;

// вимкнути всі світлодіоди
void full_leds_off # 40; # 41;
# 123;
PORTD =

_BV # 40; PD4 # 41; ;
PORTB =

_BV # 40; PB6 # 41; ;
PORTD =

_BV # 40; PD3 # 41; ;
PORTB =

_BV # 40; PB7 # 41; ;
PORTD =

_BV # 40; PD2 # 41; ;
PORTD =

_BV # 40; PD5 # 41; ;
PORTD =

_BV # 40; PD1 # 41; ;
PORTD =

Дана розводка друкованої плати відрізняється від зазначеної в моїй статті. Якщо не припаювали МК - давайте фото плати без нього. Полярність світлодіодів перевіряли перед запаюванням? Катод світлодіодів повинен припаюватися до загальної шині, в даному випадку - це окантовка серця. Як варіант мультиметром продзвоните їх на платі в режимі прозвонки ланцюга.

Прошийте МК поза схемою, підпаявши дроти до ніжок і подавши на неї харчування.

Спробуйте прошити просто через avrdude + відразу прошити фьюз повністю заводські:
hfuse: 0xd9
lfuse: 0xe1
так як якщо шити зазначені в статті (а у Вас поки не зрозуміло що не працює) буде небезпечно, так як буде відключений біт SPIEN, і МК можна буде тільки через паралельний програматор прошити.

"Спробуйте прошити просто через avrdude"
Вона у мене не працює, при натисканні кнопки прошити, пише "Помилка при запуску програми (0xc000007b)" і після цього закривається

З помилкою avrdude Я розібрався, але вона не визначає програматор Громова