Създадохме поредица от уроци за Raspberry Pi, в които сме обхванали взаимодействието на Raspberry Pi с всички основни компоненти като LED, LCD, бутон, DC мотор, серво мотор, стъпков двигател, ADC, регистър за смяна и др. публикува някои прости проекти за Raspberry Pi за начинаещи, заедно с някои добри IoT проекти. Днес, в продължение на тези уроци, ще контролираме 8x8 LED матричен модул от Raspberry Pi. Ще напишем програма на python за показване на символи на матричния модул.
Също така проверете взаимодействието на 8x8 LED матрица с Arduino и LED матрица с AVR микроконтролер.
Необходими компоненти:
Тук използваме Raspberry Pi 2 Model B с OS Raspbian Jessie. Всички основни хардуерни и софтуерни изисквания са обсъдени по-рано, можете да ги потърсите във въведението на Raspberry Pi и мигащият индикатор Raspberry PI за начало, освен това, от което се нуждаем:
- Raspberry Pi Board
- Захранване (5v)
- 1000uF кондензатор (свързан през захранване)
- 1KΩ резистор (8 броя)
8x8 LED матричен модул:
8 * 8 LED матричен модул съдържа 64 LED (Светоизлъчващи диоди), които са подредени под формата на матрица, поради което името е LED матрица. Тези компактни модули се предлагат в различни размери и много цветове. Човек може да ги избере по удобство. ПИН конфигурацията на модула е както е показано на снимката. Имайте предвид, че пиновете на модула не са в ред, така че ПИН кодовете трябва да бъдат номерирани точно както е показано на снимката, за да се избегнат грешки.
В модула LED Matrix има 8 + 8 = 16 общи терминала. Над тях имаме 8 общи положителни клеми и 8 общи отрицателни клеми, под формата на 8 реда и 8 колони, за свързване на 64 LED в матрична форма. Ако модулът трябва да бъде изчертан под формата на електрическа схема, ще имаме снимка, както е показано по-долу:
Така че за 8 реда имаме 8 общи положителни терминала (9, 14, 8, 12, 17, 2, 5). Помислете за първия ред, светодиодите от D1 до D8 имат общ положителен терминал и щифтът се извежда на PIN9 на модула LED Matrix. Когато искаме да бъдат включени един или всички светодиоди в ред, съответният щифт на LED MODULE трябва да бъде захранван с + 3.3v.
Подобно на често срещаните положителни терминали, ние имаме 8 общи отрицателни терминала като колони (13, 3, 4, 10, 6, 11, 15, 16). За заземяване на който и да е светодиод във всяка колона, съответният общ отрицателен извод трябва да бъде заземен.
Обяснение на веригата:
Връзките, които се осъществяват между Raspberry Pi и LED матричен модул, са показани в таблицата по-долу.
LED матричен модул Пин. |
Функция |
Raspberry Pi GPIO Pin No. |
13 |
ПОЛОЖИТЕЛНО0 |
GPIO12 |
3 |
ПОЛОЖИТЕЛНО1 |
GPIO22 |
4 |
ПОЛОЖИТЕЛЕН2 |
GPIO27 |
10 |
ПОЛОЖИТЕЛЕН3 |
GPIO25 |
6 |
ПОЛОЖИТЕЛЕН4 |
GPIO17 |
11. |
ПОЛОЖИТЕЛЕН5 |
GPIO24 |
15 |
ПОЛОЖИТЕЛНО6 |
GPIO23 |
16. |
ПОЛОЖИТЕЛНО7 |
GPIO18 |
9 |
ОТРИЦАТЕЛЕН0 |
GPIO21 |
14. |
ОТРИЦАТЕЛЕН1 |
GPIO20 |
8 |
ОТРИЦАТЕЛЕН2 |
GPIO26 |
12 |
ОТРИЦАТЕЛЕН3 |
GPIO16 |
1 |
ОТРИЦАТЕЛЕН4 |
GPIO19 |
7 |
ОТРИЦАТЕЛЕН5 |
GPIO13 |
2 |
ОТРИЦАТЕЛЕН6 |
GPIO6 |
5 |
ОТРИЦАТЕЛЕН7 |
GPIO5 |
Ето финалната схема на свързване на 8x8 LED матрица с Raspberry Pi:
Работно обяснение:
Тук ще използваме Мултиплексираща техника, за да покажем символи на 8x8 LED матричен модул. Така че нека да обсъдим подробно това мултиплексиране. Кажете, че ако искаме да включим LED D10 в матрицата, трябва да захраним PIN14 на модула и да заземим PIN3 на модула. С този светодиод D10 ще се включи, както е показано на фигурата по-долу. Това също трябва да се провери първо за MATRIX, за да се знае, че всичко е наред.
Сега, да кажем, че ако искаме да включим D1, трябва да включим PIN9 на матрицата и да заземим PIN13. С този светодиод D1 ще свети. Текущата посока в този случай е показана на фигурата по-долу.
Сега за сложната част, помислете, че искаме да включим едновременно D1 и D10. Така че трябва да захранваме както PIN9, PIN14, така и да заземим PIN13, PIN3. Това ще включи LED D1 и D10, но заедно с това ще включи и LED D2 и D9. Това е така, защото те споделят общи терминали. Така че, ако искаме да включим светодиодите по диагонала, ще бъдем принудени да включим всички светодиоди по пътя. Това е показано на фигурата по-долу:
За да избегнем този проблем, използваме техника, наречена Мултиплексиране. Ние също обсъдихме тази Мултиплексираща техника, докато свързваме 8x8 LED матрица с AVR, тук обясняваме отново. Същата техника на мултиплексиране се използва и при превъртане на текст на 8x8 LED матрица с Arduino и с AVR микроконтролер.
Човешкото око не може да улови честота повече от 30 HZ. Това е, ако светодиодът се включва и изключва непрекъснато със скорост 30 HZ или повече. Окото вижда светодиода като постоянно включен. Това обаче не е така и светодиодът всъщност ще се включва и изключва постоянно. Тази техника се нарича Мултиплексиране.
Да кажем например, че искаме да включим само LED D1 и LED D10, без да включваме D2 и D9. Номерът е, че първо ще осигурим захранване само на LED D1, използвайки ПИН 9 и 13 и ще изчакаме 1mSEC, а след това ще го изключим. След това ще осигурим захранване на LED D10 с помощта на ПИН 14 и 3 и ще изчакаме 1mSEC, след което ще го изключим. Цикълът продължава непрекъснато с висока честота и D1 & D10 ще се включват и изключват бързо и двата светодиода ще изглеждат непрекъснато включени за нашето око. Означава, че осигуряваме захранване само на един ред (LED) наведнъж, като елиминираме шансовете за включване на други светодиоди в други редове. Ще използваме тази техника, за да покажем всички герои.
По-нататък можем да го разберем с един пример, например ако искаме да покажем „A“ на матрицата, както е показано по-долу:
Както казахме, ще включим един ред за миг, При t = 0m SEC, PIN09 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 1m SEC, PIN14 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ) по това време, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 2m SEC, PIN08 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN13, PIN3, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 3m SEC, PIN12 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN13, PIN3, PIN15, PIN16 са заземени (останалите COLUMN щифтове са HIGH в този момент)
При t = 4m SEC, PIN01 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 5m SEC, PIN07 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ) по това време, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 6m SEC, PIN02 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN13, PIN3, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При t = 7m SEC, PIN05 е зададен HIGH (в този момент другите ROW щифтове са НИСКИ), PIN13, PIN3, PIN15, PIN16 са заземени (в този момент другите COLUMN щифтове са HIGH)
При тази скорост дисплеят ще се вижда като непрекъснато показващ символ „А“, както е показано на фигурата.
Програмата Python за показване на символи на LED матрица с помощта на Raspberry Pi е дадена по-долу. Програмата е добре обяснена с коментари. Стойностите на порта за всеки знак са дадени в програмата. Можете да покажете каквито символи искате, като просто промените стойностите „pinp“ в „for loops“ в дадената програма. Също така проверете демонстрационния видеоклип по-долу.