Charlieplexing je tehnika upravljanja mnogim LED-ima pomoću nekoliko I / O pinova. Charlieplexing je isto što i multipleksiranje, ali koristi logiku tri stanja (visoki, niski ulaz) kako bi dramatično smanjio broj pinova i postigao učinkovitost tijekom multipleksiranja. Tehnika Charlieplexing dobila je ime po svom izumitelju Charlieju Allenu, koji je tehniku izumio 1995. godine. Ranije smo u Arduinu koristili tehniku multipleksiranja za povezivanje četveroznamenkastog 7-segmentnog zaslona i upravljanja 8x8 LED matricom.
Charlieplexing vam omogućuje upravljanje N * (N - 1) LED-ima, gdje je N broj pinova. Na primjer, možete upravljati 12 LED dioda pomoću 4 Arduino pinova 4 * (4-1) = 12. LED diode su diode, a kod dioda struja teče samo u jednom smjeru. Dakle, u Charlieplexingu spajamo dvije LED diode paralelno jedna s drugom, ali s suprotnim polaritetom tako da se odjednom uključuje samo jedna LED dioda. Što se tiče Arduina ili drugih ploča mikrokontrolera, nikad nemate dovoljno ulazno / izlaznih pinova. Ako radite na projektu u kojem trebate povezati LCD zaslon, hrpu LED-a i neke senzore, tada ste već ostali bez igla. U toj situaciji možete charlieplex LED-om smanjiti broj pinova.
U ovom uputstvu koristit ćemo tehniku Charlieplexinga za upravljanje 12 LED dioda pomoću 4 Arduino igle.
Komponente potrebne
- Arduino UNO
- LED (12)
- 4 otpornik (330 ohma)
- Jumper žice
- Breadboard
Kružni dijagram

U osnovi, u ovom shematskom dijagramu, 12 LED-a spojeno je s 4 Arduino-pina kroz otpornike. Svaki pin Arduina povezan je s tri LED diode. Postoji šest grupa LED-a, a u svaku su skupinu povezane po 2 LED-e, a obje LED-e međusobno su paralelne, ali suprotnog polariteta, tako da se istodobno uključuje samo jedna LED-a. Dakle, prema shemi sklopa za uključivanje vodilice 1, na pinu A mora postojati HIGH signal i na pinu B LOW signal, a C i D treba odspojiti. Isti postupak slijedit će se i za ostale LED diode. Cjelovita tablica postavki pinova za svaku LED diodu data je u nastavku:
| LED | Pribadača 8 | Pin 9 | Pribadača 10 | Pribadača 11 |
| 1 | VISOKO | NISKO | ULAZNI | ULAZNI |
| 2 | NISKO | VISOKO | ULAZNI | ULAZNI |
| 3 | ULAZNI | VISOKO | NISKO | ULAZNI |
| 4 | ULAZNI | NISKO | VISOKO | ULAZNI |
| 5 | ULAZNI | ULAZNI | VISOKO | NISKO |
| 6 | ULAZNI | ULAZNI | NISKO | VISOKO |
| 7 | VISOKO | ULAZNI | NISKO | ULAZNI |
| 8 | NISKO | ULAZNI | VISOKO | ULAZNI |
| 9 | ULAZNI | VISOKO | ULAZNI | NISKO |
| 10 | ULAZNI | NISKO | ULAZNI | VISOKO |
| 11 | VISOKO | ULAZNI | ULAZNI | NISKO |
| 12 | NISKO | ULAZNI | ULAZNI | VISOKO |
Nakon povezivanja moj hardver izgleda poput donje slike. Kao što možete vidjeti sa slike, postoji šest skupina LED-a, au svaku su skupinu 2 LED-a spojene jedna nasuprot drugoj. Modul Arduino UNO napaja se putem USB priključka.

Objašnjenje koda
Kompletni kôd s radnim video zapisom dan je na kraju ovog vodiča, ovdje objašnjavamo kompletan program za razumijevanje rada projekta.
Na početku Arduino koda definirajte sve pinove na koje su povezane LED diode. Nakon toga definirajte ukupan broj LED-a i led stanje.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Sada stvorite matricu za uključivanje i isključivanje LED dioda u nizu, možete promijeniti redoslijed mijenjanjem stanja pina i konfiguracije pina. Prema ovoj matrici prvo će se uključiti LED1, a zatim LED2 i tako dalje.
int matrica = { // PIN_CONFIG PIN_STATE // ABCDABCD {{IZLAZ, IZLAZ, ULAZ, ULAZ}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Sada unutar petlje praznine , program će izvršiti LED_COUNT matricu za uključivanje i isključivanje LED dioda u zadanom slijedu.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); kašnjenje (1000 / LED_Num); }
Sada spojite Arduino s prijenosnim računalom i pravilno odaberite ploču i port, a zatim kliknite gumb Prenesi. Nakon prijenosa koda, vaše LED diode trebale bi treptati.

Dakle, ovako se Charlieplexing tehnika može koristiti za upravljanje mnogim LED-ima koristeći manje Arduino pinova. Ovom metodom možete kontrolirati veći broj LED-a. Na primjer, ako želite kontrolirati 20 LED-a, samo uredite matricu i dodajte uvjete za preostale LED-e.
Kompletni kod i radni video pronađite u nastavku.
