Vytvořili jsme řadu návodů Raspberry Pi, ve kterých jsme pokryli rozhraní Raspberry Pi se všemi základními komponenty, jako jsou LED, LCD, tlačítka, stejnosměrný motor, servomotor, krokový motor, ADC, posuvný registr atd. Máme také zveřejnil několik jednoduchých projektů Raspberry Pi pro začátečníky a několik dobrých projektů IoT. Dnes, v pokračování těchto výukových programů, se chystáme na Control 8x8 LED Matrix Module od Raspberry Pi. Napíšeme program v pythonu, který bude zobrazovat znaky na maticovém modulu.
Zkontrolujte také rozhraní 8x8 LED Matrix s Arduino a LED Matrix s AVR Microcontorller.
Požadované komponenty:
Zde používáme Raspberry Pi 2 Model B s Raspbian Jessie OS. Všechny základní hardwarové a softwarové požadavky jsou již dříve diskutovány, můžete si je vyhledat v Raspberry Pi Introduction a Raspberry PI LED Blinking pro začátek, kromě toho, co potřebujeme:
- Deska Raspberry Pi
- Napájení (5 V)
- 1000uF kondenzátor (připojený přes napájecí zdroj)
- 1KΩ rezistor (8 kusů)
8x8 LED maticový modul:
8 * 8 LED maticový modul obsahuje 64 LED (Light Emitting Diodes), které jsou uspořádány ve formě matice, proto se jmenuje LED matice. Tyto kompaktní moduly jsou k dispozici v různých velikostech a mnoha barvách. Jeden si je může vybrat z pohodlí. Konfigurace PIN modulu je zobrazena na obrázku. Mějte na paměti, že vývody modulu nejsou v pořádku, takže PINy by měly být očíslovány přesně tak, jak je znázorněno na obrázku, aby nedošlo k chybám.
V modulu LED Matrix je 8 + 8 = 16 společných svorek. Nad nimi máme 8 společných kladných svorek a 8 společných záporných svorek ve formě 8 řádků a 8 sloupců pro připojení 64 LED v maticové formě. Pokud by měl být modul nakreslen ve formě schématu zapojení, máme obrázek, jak je znázorněno níže:
Takže pro 8 řádků máme 8 společných pozitivních terminálů (9, 14, 8, 12, 17, 2, 5). Vezměme si první řádek, LED diody od D1 do D8 mají společnou kladnou svorku a pin je vyveden na PIN9 modulu LED Matrix. Pokud chceme, aby jedna nebo všechny LED diody v ŘÁDKU svítily, měl by být odpovídající pin LED MODULE napájen +3,3 V.
Podobně jako společné kladné svorky máme 8 společných záporných svorek jako sloupce (13, 3, 4, 10, 6, 11, 15, 16). Pro uzemnění jakékoli LED v libovolném sloupci musí být příslušná společná záporná svorka uzemněna.
Vysvětlení obvodu:
Spojení mezi Raspberry Pi a LED maticovým modulem jsou uvedena v následující tabulce.
LED Matrix Module Pin č. |
Funkce |
Pin GPIO Raspberry Pi č. |
13 |
POZITIVNÍ0 |
GPIO12 |
3 |
POZITIVNÍ 1 |
GPIO22 |
4 |
POZITIVNÍ2 |
GPIO27 |
10 |
POZITIVNÍ3 |
GPIO25 |
6 |
POZITIVNÍ4 |
GPIO17 |
11 |
POZITIVNÍ 5 |
GPIO24 |
15 |
POZITIVNÍ6 |
GPIO23 |
16 |
POZITIVNÍ 7 |
GPIO18 |
9 |
NEGATIVNÍ0 |
GPIO21 |
14 |
NEGATIVNÍ 1 |
GPIO20 |
8 |
NEGATIVNÍ2 |
GPIO26 |
12 |
NEGATIVNÍ 3 |
GPIO16 |
1 |
NEGATIVNÍ 4 |
GPIO19 |
7 |
NEGATIVNÍ 5 |
GPIO13 |
2 |
NEGATIVNÍ 6 |
GPIO6 |
5 |
NEGATIVNÍ 7 |
GPIO5 |
Tady je závěrečné schéma zapojení pro propojení 8x8 LED Matrix s Raspberry Pi:
Pracovní vysvětlení:
Zde použijeme techniku multiplexování k zobrazení znaků na 8x8 LED maticovém modulu. Pojďme si tedy o tomto multiplexování podrobně promluvit. Řekněme, že pokud chceme v matici rozsvítit LED D10, musíme napájet PIN14 modulu a uzemnit PIN3 modulu. S touto LED se D10 rozsvítí, jak je znázorněno na následujícím obrázku. Toto by mělo být také nejprve zkontrolováno, aby MATRIX věděl, že je vše v pořádku.
Nyní řekněme, že pokud chceme zapnout D1, musíme napájet PIN9 matice a uzemnit PIN13. S touto LED bude svítit D1. Aktuální směr je v tomto případě uveden na následujícím obrázku.
Nyní, pokud jde o složitou část, zvažte, že chceme zapnout současně D1 i D10. Měli bychom tedy napájet oba PIN9, PIN14 a uzemnit oba PIN13, PIN3. Tím se rozsvítí LED D1 a D10, ale současně se rozsvítí také LED D2 a D9. Je to proto, že sdílejí společné terminály. Pokud tedy chceme rozsvítit LED podél úhlopříčky, budeme nuceni rozsvítit všechny LED podél cesty. To je znázorněno na následujícím obrázku:
Abychom se tomuto problému vyhnuli, používáme techniku nazvanou Multiplexing. Také jsme diskutovali o této technice multiplexování při propojení 8x8 LED Matrix s AVR, zde to vysvětlujeme znovu. Stejná technika multiplexování se také používá při posouvání textu na matici 8x8 LED s Arduino a s mikrokontrolérem AVR.
Lidské oko nedokáže zachytit frekvenci vyšší než 30 Hz. To znamená, že LED svítí a zhasíná nepřetržitě rychlostí 30 Hz nebo více. Oko vidí, že LED trvale svítí. To však není tento případ a LED se bude ve skutečnosti neustále zapínat a vypínat. Tato technika se nazývá multiplexování.
Řekněme například, že chceme zapnout pouze LED D1 a LED D10 bez zapnutí D2 a D9. Trik spočívá v tom, že nejprve poskytneme napájení pouze LED D1 pomocí PIN 9 a 13 a počkáme na 1 mSEC, a poté jej vypneme. Poté poskytneme energii LED D10 pomocí PIN 14 a 3 a počkáme na 1 mSEC, poté ji vypneme. Cyklus probíhá nepřetržitě s vysokou frekvencí a D1 a D10 se rychle zapínají a vypínají a obě LED diody se zdají být pro naše oko trvale zapnuté. Znamená to, že dodáváme energii pouze do jedné řady (LED) najednou, což eliminuje pravděpodobnost zapnutí dalších LED v jiných řadách. Tuto techniku použijeme k zobrazení všech postav.
Můžeme to dále pochopit na jednom příkladu, jako když chceme na matici zobrazit „A“, jak je znázorněno níže:
Jak již bylo řečeno, zapneme jeden řádek za okamžik, Při t = 0 m SEC je PIN09 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tuto chvíli jsou PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 uzemněny (ostatní PINY COLUMN jsou v tomto okamžiku VYSOKÉ)
Při t = 1 m SEC je PIN14 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÉ) v tuto chvíli jsou PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 uzemněny (ostatní piny COLUMN jsou v tomto okamžiku VYSOKÉ)
Při t = 2 m SEC je PIN08 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tomto okamžiku jsou PIN13, PIN3, PIN15, PIN16 uzemněny (ostatní Sloupcové piny jsou v tomto okamžiku VYSOKÉ)
Při t = 3 m SEC je PIN12 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tomto okamžiku, PIN13, PIN3, PIN15, PIN16 jsou uzemněny (ostatní COLUMN piny jsou v tomto okamžiku VYSOKÉ)
Při t = 4 m SEC je PIN01 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tuto chvíli jsou PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 uzemněny (ostatní piny COLUMN jsou v tomto okamžiku VYSOKÉ)
Při t = 5 m SEC je PIN07 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÉ) v tuto chvíli jsou PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 uzemněny (ostatní piny COLUMN jsou v tomto okamžiku VYSOKÉ)
Při t = 6 m SEC je PIN02 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tomto okamžiku jsou PIN13, PIN3, PIN15, PIN16 uzemněny (ostatní Sloupcové piny jsou v tomto okamžiku VYSOKÉ)
V čase t = 7 m SEC je PIN05 nastaven na VYSOKÝ (ostatní ROW piny jsou v tuto chvíli NÍZKÝ) v tomto okamžiku jsou PIN13, PIN3, PIN15, PIN16 uzemněny (ostatní COLUMN piny jsou v tomto okamžiku VYSOKÉ)
Při této rychlosti bude displej považován za nepřetržitě zobrazující znak „A“, jak je znázorněno na obrázku.
Níže je uveden program Python pro zobrazování znaků na LED Matrix pomocí Raspberry Pi. Program je dobře vysvětlen komentáři. Hodnoty portů pro každý znak jsou uvedeny v programu. Můžete zobrazit libovolné znaky, které chcete, pouhou změnou hodnot „pinp“ v řetězci „for loops“ v daném programu. Zkontrolujte také ukázkové video níže.