В този урок ще проектираме 8x8 LED матричен скролиращ дисплей, използвайки Arduino Uno, който ще показва скролиращи азбуки.
8x8 LED Matrix съдържа 64 светодиода (Светоизлъчващи диоди), които са подредени под формата на матрица, поради което името е LED матрица. Ще направим тази матрица, като споим тези 64 светодиода върху перфборда или DOT печатната платка. Светодиодите могат да бъдат от всякакъв цвят, изберете тези, които са на ваше разположение. След това ще напишем програма за Arduino за управление на тези 64 светодиодни матрици. Според програмата UNO захранва подходящи светодиоди, за да показва персонажи по превъртащ се начин.
Необходими компоненти:
- Arduino Uno
- 64 светодиода
- Перфборд с други инструменти за запояване
- 1KΩ резистор (8 броя)
- Захранване (5v)
Обяснение на веригата и работата:
Има 64 светодиода, подредени в матрична форма. Така че имаме 8 колони и 8 реда. Над тези редове и колони се събират всички положителни терминали в един ред. За всеки ред има един общ положителен терминал за всички 8 светодиода в този ред. Това е показано на фигурата по-долу,
Така че за 8 реда имаме 8 общи положителни клеми. Помислете за първия ред, както се вижда на фигурата, 8 светодиода от D57 до D64 имат общ положителен терминал и са означени с „ПОЗИТИВНО0“. Сега, ако искаме да свети един или всички светодиоди в първия ред на матрицата, тогава трябва да включим PIN0 на LED матрицата. По същия начин, ако искаме да светим всеки светодиод (или всички) във всеки ред, тогава трябва да захраним съответния общ положителен терминален щифт на съответния ред.
Това все още не е приключило и просто оставянето на MATRIX ROWS с положително предлагане няма да даде нищо. Трябва да заземим негативите на светодиодите, за да ги светят. Така че в матрицата 8x8 LED всички отрицателни клеми на светодиодите във всяка колона се събират, за да образуват осем общи отрицателни терминала, като всички отрицателни клеми в първата колона са свързани заедно с PIN-A1 (NEGATIVE7). Това е показано на фигурата по-долу:
Човек трябва да обърне внимание на тези щифтове, докато запоява светодиодите на Perfboard.
Сега, ако трябва да заземем някакъв светодиод в първата колона, тогава ще заземим PIN-A1 (НЕГАТИВНО7) на МАТРИЦАТА и той ще заземи всички светодиоди в първата колона. Същият процес важи и за всички останали седем често срещани отрицателни колони.
От сега знаете как работят Общото положително и Общото отрицание. Нека ги съберем, за да видим как работят заедно и окончателният Circuit for Scrolling 8x8 LED Matrix display ще изглежда така:
Управление на 8x8 LED матрица с помощта на мултиплексиране:
Сега да кажем, че искаме да включим LED57, тогава трябва да включим PIN0 на UNO и да заземим PIN-8 на UNO. Сега, за да включим LED57 и LED50, трябва да включим PIN0, PIN1 и да заземим PIN8, PIN9. Но това не само ще включи D57, D50, но и D49, D58. За да избегнем това, използваме техника, наречена Мултиплексиране. Вече обсъдихме подробно тази Мултиплекс техника в 8x8 LED матрица; преминете през тази статия за подробно обяснение. Тук обясняваме накратко мултиплексирането.
Човешкото око не може да улови честота повече от 30 HZ. Това е, ако светодиодът се включва и изключва непрекъснато със скорост 30 HZ или повече. Окото вижда светодиода като постоянно включен. Това обаче не е така и светодиодът всъщност ще се включва и изключва постоянно. Тази техника се нарича Мултиплексиране.
Да кажем например, че искаме да включим само LED57 и LED50, без да включваме D49 и D58. Номерът е, че първо ще осигурим захранване на първия ред, за да включим LED57 и да изчакаме 1mSEC, а след това ще го изключим. След това ще осигурим захранване на втория ред, за да включи LED50 и ще изчакаме 1mSEC, след което ще го изключим. Цикълът върви непрекъснато с висока честота и LED57 и LED50 ще се включват и изключват бързо и двата светодиода ще изглеждат непрекъснато включени за нашето око. Означава, че предоставяме захранване само на един ред наведнъж, елиминирайки шансовете за включване на други светодиоди в други редове. Ще използваме тази техника, за да покажем всички герои.
Има и библиотека, наречена LedControlMS.h, за да се погрижите за цялата тази сложност на мултиплексиране, където трябва само да въведете знака или номера, който искате да отпечатате на LED матрица, проверете тази Arduino LED матрица с проект MAX7219 за повече подробности.
Обяснение на програмирането:
В нашия код сме записали десетична стойност за всеки знак и сме ги програмирали в Arduino. Програмата е написала да измества тези стойности към следващия ред на всеки 0,2 секунди, това ще се разглежда като превъртане на символите нагоре, много е просто.
За да промените символите, които ще се показват, просто заменете стойността в масива char ALPHA според стойностите на символите, дадени по-долу, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,026,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // М 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,0,0,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // Т 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Например, ако искате да покажете DAD на LED матрицата, първо заменете стойностите на символите в масива char ALPHA, като поставите стойности за символи D, A и D от горния списък:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Общите стойности вече са 5 * 10 = 50 стойности, така че
Замяна, за (int x = 0; x <142; x ++) // 150-8 (за спиране на преливането) {…….. С, за (int x = 0; x <42; x ++) // 50-8 (за спиране на преливането) {……..
Така че просто трябва да промените номера.
С това сте направили програмирането и сега можете да превъртате всеки текст на 8x8 LED матрицата, да проверите пълния код по-долу с демонстрационно видео.