Набор для самостоятельной сборки маленькой новогодней елочки со светодиодной подсветкой.
Набор позволяет освоить навыки SMD монтажа. Ключевым элементом набора является микроконтроллер Тайваньской фирмы PADAUK — PFS154-S16. Микроконтроллер содержит несколько прошитых программ, которые можно выбирать нажатием кнопки. На елочке расположено 13 светодиодов — белые, красные, синие и зеленые. Располагать можно на свой вкус и желание. На рисунке ниже представлена схема для правильной ориентации компонентов на плате.
С обратной стороны платы располагается отсек для батареи CR123 ( Батарея идет в комплекте).
В комплект входит :
Плата «Ёлка» с максимальными размерами 100х100мм
Отсек для батареи, Батарея CR123, включатель, кнопка, микроконтроллер PFS154-S16
Светодиоды SMD для поверхностного монтажа: белые, красные, синие, зеленные . По 5 штук каждого цвета. Комплект превышает необходимое количество для устранения ошибок монтажа и индивидуального выбора комбинаций.
Резисторы типоразмера 0805 — 15 шт.
Конденсатор типоразмера 0805 — 1 шт.
После монтажа, вставляем батарейку, включаем и ….
Сборка и пайка Ёлки
Большая часть используемых деталей относится к так называемым компонентам поверхностного монтажа или SMD (Surface-Mount-Device). Главное их отличие от обычных (DIP) — это возможность монтажа радиодеталей без сквозных отверстий в плате. При сборке таких плат обычно начинают с микросхем и/или самых мелких корпусов. Сердце этой игрушки — микроконтроллер с 16 выводами. С него и стоит начать. Располагать его надо ориентируясь на ключ — это первый вывод корпуса. На печатной плате контактная площадка первого вывода для этой микросхемы помечена кружком.
Следующий элемент — это резисторы. У нас они все одного номинала. Располагать их можно в любом направлении. На плате их 13 штук. Есть еще один керамический конденсатор, так же как и резисторы не критичный к полярности.
Самый сложный элемент для монтажа — светодиоды. Они очень не любят перегрева. Кроме того, нужно строго следить за полярностью при установке. На чертеже указано расположение катода. На самом светодиоде катод обозначается маленьким срезанным уголком.
Когда вся «мелочь» установлена, можно переходить к крупным деталям.
Припаиваем включатель и кнопку. Здесь можно не соблюдать полярность.
Переходим к батарейному отсеку. Очень важно установить правильно, соблюдая полярность.
После сборки, схема не требует наладки и начинает работать сразу после включения.
Для особо пытливых ниже дается схема устройства
#include "extern.h"
byte button_indeks=0; // s4et4ik nagatia knopki
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/4 // SYSCLK=IHRC/4
void Prog_1 (void);
void Prog_2 (void);
void Prog_3 (void);
void Prog_4 (void);
void Prog_5 (void);
$ INTEN T16;
$ T16M IHRC,/64, BIT8;//IHRC SYSCLK
INTRQ = 0;
ENGINT;
$ PA.7 In, Pull; #define Knop PA.7
$ PB.0 Out, Low; #define L11 PB.0
$ PB.1 Out, Low; #define L21 PB.1
$ PA.0 Out, Low; #define L24 PA.0
$ PB.3 Out, Low; #define L31 PB.3
$ PB.2 Out, Low; #define L32 PB.2
$ PA.4 Out, Low; #define L33 PA.4
$ PA.3 Out, Low; #define L34 PA.3
$ PB.5 Out, Low; #define L41 PB.5
$ PB.4 Out, Low; #define L42 PB.4
$ PA.5 Out, Low; #define L43 PA.5
$ PA.6 Out, Low; #define L44 PA.6
$ PB.6 Out, Low; #define L51 PB.6
$ PB.7 Out, Low; #define L54 PB.7
while (1)
{
if (button_indeks == 0 ) { Prog_1();}
if (button_indeks == 1 ) { Prog_2();}
if (button_indeks == 2 ) { Prog_3();}
if (button_indeks == 3 ) { Prog_4();}
if (button_indeks == 4 ) { Prog_5();}
}
}
void Prog_1 (void)
{
if (button_indeks == 0 ){$ L11 toggle;.DELAY 500000; $ L11 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L21 toggle;.DELAY 500000; $ L21 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L24 toggle;.DELAY 500000; $ L24 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L31 toggle;.DELAY 500000; $ L31 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L32 toggle;.DELAY 500000; $ L32 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L33 toggle;.DELAY 500000; $ L33 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L34 toggle;.DELAY 500000; $ L34 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L41 toggle;.DELAY 500000; $ L41 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L42 toggle;.DELAY 500000; $ L42 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L43 toggle;.DELAY 500000; $ L43 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L44 toggle;.DELAY 500000; $ L44 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L51 toggle;.DELAY 500000; $ L51 toggle;.DELAY 500000;}
if (button_indeks == 0 ){$ L54 toggle;.DELAY 500000; $ L54 toggle;.DELAY 500000;}
}
void Prog_2 (void)
{
if ( button_indeks == 1) {$ L11 toggle;$ L21 toggle;$ L31 toggle;$ L41 toggle;$ L51 toggle; .DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L21 toggle;$ L31 toggle;$ L41 toggle;$ L51 toggle; .DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L21 toggle;$ L32 toggle;$ L42 toggle;$ L51 toggle;.DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L21 toggle;$ L32 toggle;$ L42 toggle;$ L51 toggle;.DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L24 toggle;$ L33 toggle;$ L43 toggle;$ L54 toggle;.DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L24 toggle;$ L33 toggle;$ L43 toggle;$ L54 toggle;.DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L24 toggle;$ L34 toggle;$ L44 toggle;$ L54 toggle;.DELAY 700000;}
if ( button_indeks == 1) {$ L11 toggle;$ L24 toggle;$ L34 toggle;$ L44 toggle;$ L54 toggle;.DELAY 700000;}
}
void Prog_3 (void)
{
if (button_indeks == 2 ){$ L11 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L11 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L21 toggle;$ L24 toggle; .DELAY 700000;}
if (button_indeks == 2 ){$ L21 toggle;$ L24 toggle; .DELAY 700000;}
if (button_indeks == 2 ){$ L31 toggle;$ L32 toggle;$ L33 toggle;$ L34 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L31 toggle;$ L32 toggle;$ L33 toggle;$ L34 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L41 toggle;$ L42 toggle;$ L43 toggle;$ L44 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L41 toggle;$ L42 toggle;$ L43 toggle;$ L44 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L51 toggle;$ L54 toggle;.DELAY 700000;}
if (button_indeks == 2 ){$ L51 toggle;$ L54 toggle;.DELAY 700000;}
}
void Prog_4 (void)
{
if (button_indeks == 3 ){$ L11 toggle;$ L21 toggle;$ L31 toggle;$ L41 toggle;$ L51 toggle;.DELAY 500000;}
if (button_indeks == 3 ){$ L11 toggle;$ L21 toggle;$ L31 toggle;$ L41 toggle;$ L51 toggle;.DELAY 500000;}
if (button_indeks == 3 ){$ L32 toggle;$ L33 toggle;$ L42 toggle;$ L43 toggle;.DELAY 500000;}
if (button_indeks == 3 ){$ L32 toggle;$ L33 toggle;$ L42 toggle;$ L43 toggle;.DELAY 500000;}
}
void Prog_5 (void)
{
if (button_indeks == 4 ){$ L11 High; $ L24 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L11 Low; $ L34 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L24 Low; $ L44 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L34 Low; $ L54 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L44 Low; $ L51 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L54 Low; $ L41 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L51 Low; $ L31 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L41 Low; $ L21 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L31 Low; $ L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L21 Low; $ L42 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L33 Low; $ L32 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L42 Low; $ L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L32 Low; $ L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L21 Low; $ L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L31 Low; $ L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L21 Low; $ L42 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L33 Low; $ L32 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L42 Low; $ L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L32 Low; $ L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$ L21 Low; $ L43 High;.DELAY 300000;}
}
void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{ // T16 Trig
//.DELAY 1000;
if (Knop == 0 ) {.DELAY 100000;
button_indeks++;
if (button_indeks>4) button_indeks=0 ;
$ PB.0 Out, Low;
$ PB.1 Out, Low;
$ PA.0 Out, Low;
$ PB.3 Out, Low;
$ PB.2 Out, Low;
$ PA.4 Out, Low;
$ PA.3 Out, Low;
$ PB.5 Out, Low;
$ PB.4 Out, Low;
$ PA.5 Out, Low;
$ PA.6 Out, Low;
$ PB.6 Out, Low;
$ PB.7 Out, Low;
}
Intrq.T16 =0;
//...
}
popaf;
}