Проект №5

Новогодняя Ёлка (Конструктор для пайки)


 





Описание: arduino — совместимый конструктор для пайки «Новогодняя Ёлка»
Время сборки: 1,5 час
Уровень умения: П
родвинутый
 



Необходимые инструменты и расходные материалы: 

Компьютер, лазерный принтер, текстолит, маркер для печатных плат Edding 792 0.8 мм черный), хлорное железо, утюг, ацетон, мини дрель (сверла диаметром: 0,8 — 1 мм),

ножовка по металлу, паяльная станция, пинцет, флюс, припой.


Конструктор разработан участниками проекта ARDUMAKERS™ (Романцовым Алексеем и Тен Сергеем)

Этот конструктор состоит из двух частей, «Stand Shield» и самой Ёлки которая будет к нему припаиваться.


Ёлка

Ёлка состоит из двух плат, на которых расположены 64 светодиода. Таким образом, что они собираются в матрицу 8х8


Stand Shield

Stand Shield — это подставка для Ёлки, на нём расположены два сдвиговых регистра, микросхема Дарлингтона и

микрофон с предусилителем.

Благодаря сдвиговым регистрам можно сократить количество пинов для подключения к матрице.


Требуемые компоненты

Наименование Кол-во
Печатная плата «Stand Shield» 1
Печатная плата «Ёлка» 2
ULN2803ADWR, Матрица из восьми транзисторов Дарлингтона, 500мА, 50В, SO18 1
74HC595D.118, 8-и битный сдвиговый регистр с выходным регистром-защелки и тремя состояниями, [SO-16] 2
KP-2012EC, Светодиод красный 2х1.2х1.1 12мКд 19
KPT-2012SYCK, Светодиод желтый 80мКд SMD 19
KP-2012SGD, Светодиод зеленый 2х1.2×1.1 12мКд 18
BL-LS0805DNB, Светодиод SMD 0805, синий 130″ 38мКд 470нМ (Blue) 8
0.125Вт 0805 360 Ом, 1%, Чип резистор (SMD)  (мы использовали 1 кОм т.к их у нас больше в наличии ) 8
1 am sot-23 2n3904 smd 40 в 200ma npn транзистор 1
0.125Вт 0805 100 кОм, 1%, Чип резистор (SMD) 1
0.125Вт 0805 10 кОм, 1%, Чип резистор (SMD) 2
ECM-30A, 4.5 В, 10 мм, Микрофон электретный 1
Кер.ЧИП конд. 0.1 мкФ X7R 50В 10% 0805, GRM21BR71H104K 2

Схема подключения матрицы


Скетч. Код программы

 
//******************************************************
// Проект ARDUMAKERS
// Код программы Новогодняя Ёлка
// http://ardumakers.ru
// источник: Beginning Arduino — Michael McRoberts
//******************************************************
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int counter = 0;
int LEDs[8][8] = {     
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0} 
};
void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void blankLED() 
{
  int x = 0;
  int y = 0;
  for (x = 0; x < 8; x++) 
  {
    for (y = 0; y < 8; y ++) 
    {
      LEDs[x][y] = 0;
    }
  }
}

void lightLED() 
{
  byte columnbitsToSend = 0;
  byte rowbitsToSend = 0;
  int x = 0;
  int y = 0;
  for (x = 0; x < 8; x++) 
  {
    columnbitsToSend = 0;
    rowbitsToSend = 0;
    for (y = 0; y < 8; y ++) 
    {
      if (LEDs[x][y] == 1) 
      {
        bitWrite(rowbitsToSend, y, HIGH);
      } 
    }
    digitalWrite(latchPin, LOW);
    bitWrite(columnbitsToSend, x, HIGH);
    shiftOut(dataPin, clockPin, MSBFIRST, columnbitsToSend);
    shiftOut(dataPin, clockPin, MSBFIRST, rowbitsToSend);
    digitalWrite(latchPin, HIGH);   
    delay(2);
  }
}

void loop()
{
  LEDs[random(8)][random(8)] = 1;
  if (counter > 200) 
  {
    blankLED();
    counter = 0;
  }
  lightLED();
  counter++;
}
скачать скетч



файлы для скачивания:

елка 1 слой.pdf

елка 2 слой.pdf