Charlieplexing je technika riadenia mnohých LED diód pomocou niekoľkých I / O pinov. Charlieplexing je rovnaký ako multiplexovanie, ale využíva trojstavovú logiku (vysoký, nízky vstup) na dramatické zníženie počtu pinov a na zvýšenie efektívnosti multiplexovania. Technika Charlieplexing je pomenovaná po svojom vynálezcovi Charlie Allenovi, ktorý túto techniku vynašiel v roku 1995. Predtým sme v Arduine používali techniku multiplexovania na prepojenie štvormiestneho 7-segmentového displeja a riadenie matice LED 8x8.
Charlieplexing vám umožňuje ovládať N * (N - 1) LED, kde N je počet pinov. Napríklad môžete ovládať 12 LED diód pomocou 4 pinov Arduino 4 * (4-1) = 12. LED diódy sú diódy a v diódach prúd preteká iba jedným smerom. Takže v Charlieplexingu spájame dve LED navzájom paralelne, ale s opačnou polaritou, takže sa naraz rozsvieti iba jedna LED. Pokiaľ ide o Arduino alebo iné dosky s mikrokontrolérmi, nikdy nemáte dostatok vstupných / výstupných pinov. Ak pracujete na projekte, v ktorom potrebujete prepojiť LCD displej, kopu LED diód a niekoľko senzorov, už ste v koncoch. V tejto situácii môžete charlieplex LED znížiť počet pinov.
V tomto výučbe použijeme techniku Charlieplexing na ovládanie 12 LED diód pomocou 4 pinov Arduino.
Súčasti sú povinné
- Arduino UNO
- LED (12)
- 4 rezistor (330 ohmov)
- Prepojovacie drôty
- Nepál
Schéma zapojenia
V zásade je v tejto schéme zapojenia 12 LED diód prepojených so 4 pinmi Arduino cez rezistory. Každý pin Arduina je spojený s tromi LED diódami. Existuje šesť skupín LED diód a v každej skupine sú pripojené 2 LED diódy a obe LED diódy sú navzájom paralelné, ale majú opačnú polaritu, takže sa súčasne rozsvieti iba jedna LED dióda. Takže podľa schémy zapojenia LED 1 musí byť na kolíku A signál HIGH a na kolíku B signál LOW a pin C a D musí byť odpojený. Rovnaký postup sa použije aj pri ostatných LED. Celá tabuľka nastavení pinov pre každú LED je uvedená nižšie:
LED | Kolík 8 | Pin 9 | Pin 10 | Pin 11 |
1 | VYSOKÁ | NÍZKY | VSTUP | VSTUP |
2 | NÍZKY | VYSOKÁ | VSTUP | VSTUP |
3 | VSTUP | VYSOKÁ | NÍZKY | VSTUP |
4 | VSTUP | NÍZKY | VYSOKÁ | VSTUP |
5 | VSTUP | VSTUP | VYSOKÁ | NÍZKY |
6 | VSTUP | VSTUP | NÍZKY | VYSOKÁ |
7 | VYSOKÁ | VSTUP | NÍZKY | VSTUP |
8 | NÍZKY | VSTUP | VYSOKÁ | VSTUP |
9 | VSTUP | VYSOKÁ | VSTUP | NÍZKY |
10 | VSTUP | NÍZKY | VSTUP | VYSOKÁ |
11 | VYSOKÁ | VSTUP | VSTUP | NÍZKY |
12 | NÍZKY | VSTUP | VSTUP | VYSOKÁ |
Po pripojení vyzerá môj hardvér ako na obrázku nižšie. Ako vidíte na obrázku, existuje šesť skupín LED diód a v každej skupine sú 2 LED diódy spojené navzájom. Arduino UNO modul je napájaný z USB portu.
Vysvetlenie kódu
Kompletný kód s pracovným videom je uvedený na konci tohto tutoriálu. Tu vysvetľujeme kompletný program, aby sme pochopili fungovanie projektu.
Na začiatku kódu Arduino definujte všetky kolíky, ku ktorým sú pripojené LED diódy. Potom 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
Teraz vytvorte maticu na postupné zapínanie a vypínanie LED diód. Poradie môžete zmeniť zmenou stavu a konfigurácie pinov. Podľa tejto matice sa najskôr zapne LED1, potom LED2 atď.
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}}, ……………………………. ……………………………..
Teraz vo vnútri prázdnej slučky program vykoná maticu LED_COUNT na zapínanie a vypínanie LED diód v danom poradí.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); oneskorenie (1000 / LED_Num); }
Teraz pripojte Arduino k notebooku, vyberte správne dosku a port a potom kliknite na tlačidlo Nahrať. Po nahraní kódu by mali LED diódy začať blikať.
Takto je možné pomocou techniky Charlieplexingu ovládať veľa LED pomocou menšieho počtu pinov Arduino. Touto metódou môžete ovládať väčší počet LED diód. Napríklad, ak chcete ovládať 20 LED diód, stačí upraviť maticu a pridať podmienky pre zostávajúce LED diódy.
Nájsť kompletný kód a pracovné videá nižšie.