Charlieplexing je technika ovládání mnoha LED diod pomocí několika I / O pinů. Charlieplexing je stejný jako multiplexování, ale používá třístavovou logiku (vysoký, nízký vstup), aby dramaticky snížil počet pinů a získal efektivitu při multiplexování. Technika Charlieplexing je pojmenována po jejím vynálezci Charlie Allenovi, který tuto techniku vynalezl v roce 1995. Dříve jsme v Arduinu používali techniku multiplexování k propojení 4místného 7segmentového displeje a řízení 8x8 LED matice.
Charlieplexing umožňuje ovládat N * (N - 1) LED, kde N je počet pinů. Můžete například ovládat 12 LED diod pomocí 4 pinů Arduino 4 * (4-1) = 12. LED diody jsou diody a u diod proudí proud pouze jedním směrem. Takže v Charlieplexingu spojujeme dvě LED paralelně navzájem, ale s opačnou polaritou, takže se rozsvítí pouze jedna LED. Pokud jde o Arduino nebo jiné desky mikrokontroléru, nikdy nemáte dostatek vstupních / výstupních pinů. Pokud pracujete na projektu, ve kterém potřebujete propojit LCD displej, spoustu LED diod a některé senzory, pak už jste v nedohlednu. V této situaci můžete charlieplex LED snížit počet pinů.
V tomto tutoriálu použijeme techniku Charlieplexing k ovládání 12 LED pomocí 4 pinů Arduino.
Požadované komponenty
- Arduino UNO
- LED (12)
- 4 rezistor (330 ohmů)
- Propojovací dráty
- Nepájivá deska
Kruhový diagram
V zásadě je v tomto schématu zapojení 12 LED diod spojeno se 4 piny Arduino přes rezistory. Každý pin Arduina je spojen se třemi LED. Existuje šest skupin LED diod a v každé skupině jsou připojeny 2 LED diody a obě LED diody jsou navzájem rovnoběžné, ale s opačnou polaritou, takže se najednou rozsvítí pouze jedna LED. Takže podle schématu zapojení pro zapnutí LED 1 musí být na kolíku A signál HIGH a na kolíku B signál LOW a musí být odpojeny kolíky C a D. Stejný postup bude použit i pro ostatní LED. Celá tabulka nastavení kolíků pro každou LED je uvedena níže:
VEDENÝ | Kolík 8 | Kolík 9 | Kolík 10 | Kolík 11 |
1 | VYSOKÝ | NÍZKÝ | VSTUP | VSTUP |
2 | NÍZKÝ | VYSOKÝ | VSTUP | VSTUP |
3 | VSTUP | VYSOKÝ | NÍZKÝ | VSTUP |
4 | VSTUP | NÍZKÝ | VYSOKÝ | VSTUP |
5 | VSTUP | VSTUP | VYSOKÝ | NÍZKÝ |
6 | VSTUP | VSTUP | NÍZKÝ | VYSOKÝ |
7 | VYSOKÝ | VSTUP | NÍZKÝ | VSTUP |
8 | NÍZKÝ | VSTUP | VYSOKÝ | VSTUP |
9 | VSTUP | VYSOKÝ | VSTUP | NÍZKÝ |
10 | VSTUP | NÍZKÝ | VSTUP | VYSOKÝ |
11 | VYSOKÝ | VSTUP | VSTUP | NÍZKÝ |
12 | NÍZKÝ | VSTUP | VSTUP | VYSOKÝ |
Po připojení vypadá můj hardware jako na obrázku níže. Jak vidíte z obrázku, existuje šest skupin LED diod a v každé skupině jsou 2 LED diody připojeny proti sobě. Modul Arduino UNO je napájen z USB portu.
Vysvětlení kódu
Kompletní kód s fungujícím videem je uveden na konci tohoto tutoriálu, zde vysvětlujeme kompletní program, abychom porozuměli fungování projektu.
Na začátku kódu Arduino definujte všechny kolíky, ke kterým jsou připojeny LED. Poté definujte celkový počet LED a stav LED.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Nyní vytvořte matici pro zapnutí a vypnutí LED v sekvenci, můžete změnit sekvenci změnou stavu a konfigurace kolíku. Podle této matice se nejprve zapne LED1, potom LED2 atd.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Nyní uvnitř smyčky void program provede matici LED_COUNT a zapne a vypne LED v dané sekvenci.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); zpoždění (1000 / LED_Num); }
Nyní připojte Arduino k notebooku, vyberte správně desku a port a poté klikněte na tlačítko Nahrát. Po nahrání kódu by vaše LED diody měly začít blikat.
Takto lze použít techniku Charlieplexingu k ovládání mnoha LED diod pomocí menšího počtu pinů Arduino. Tuto metodu můžete použít k ovládání většího počtu LED diod. Například pokud chcete ovládat 20 LED, stačí upravit matici a přidat podmínky pro zbývající LED.
Najít kompletní kód a pracovní videa níže.