Charlieplexing yra daugelio šviesos diodų valdymo technika naudojant kelis įvesties / išvesties kaiščius. Charlieplexing yra tas pats, kas multipleksavimas, tačiau jis naudoja trijų būsenų logiką (didelis, mažas įvestis), kad dramatiškai sumažintų smeigtukų skaičių ir padidintų multipleksavimo efektyvumą. „Charlieplexing“ technika pavadinta jos išradėjo Charlie Alleno, kuris išrado šią techniką 1995 m., Anksčiau „Arduino“ naudojome multipleksavimo techniką, kad susietume 4 skaitmenų 7 segmentų ekraną ir valdytume 8x8 LED matricą.
Charlieplexing leidžia valdyti N * (N - 1) šviesos diodus, kur N yra kaiščių skaičius. Pavyzdžiui, galite valdyti 12 šviesos diodų, naudodami 4 „Arduino“ kaiščius 4 * (4-1) = 12. Šviesos diodai yra diodai, o dioduose srovė teka tik viena kryptimi. Taigi „Charlieplexing“ metu mes sujungiame du šviesos diodus lygiagrečiai vienas kitam, bet priešingo poliškumo, kad vienu metu įsijungtų tik vienas LED. Kalbant apie „Arduino“ ar kitas mikrovaldiklių plokštes, niekada neturite pakankamai įvesties / išvesties kaiščių. Jei dirbate projekte, kuriame turite sąsają su LCD ekranu, daugybe šviesos diodų ir kai kuriais jutikliais, tada jūs jau nebeturite kaiščių. Esant tokiai situacijai, galite sumažinti charlieplex šviesos diodus, kad sumažintumėte kaiščių skaičių.
Šioje pamokoje mes ketiname naudoti „Charlieplexing“ techniką 12 šviesos diodų valdymui naudojant 4 „Arduino“ kaiščius.
Būtini komponentai
- „Arduino UNO“
- LED (12)
- 4 rezistorius (330 omų)
- Šuolių laidai
- Bandomoji Lenta
Grandinės schema
Iš esmės šioje grandinės schemoje 12 šviesos diodų per rezistorius sujungiami su 4 „Arduino“ kaiščiais. Kiekvienas „Arduino“ kaištis yra sujungtas su trimis šviesos diodais. Yra šešios šviesos diodų grupės, ir kiekvienoje grupėje yra prijungti 2 šviesos diodai, ir abu šviesos diodai yra lygiagrečiai vienas kitam, bet priešingo poliškumo, kad vienu metu įsijungtų tik vienas šviesos diodas. Taigi pagal grandinės schemą, kad įjungtumėte 1 lemputę, ant A kaiščio turi būti HIGH signalas ir B kaiščio LOW signalas, o C ir D kaiščiai turi būti atjungti. Ta pati procedūra bus taikoma ir kitiems šviesos diodams. Visa lentelių kaiščių nustatymų lentelė pateikiama žemiau:
LED | 8 kaištis | 9 kaištis | 10 kaištis | 11 kaištis |
1 | AUKŠTAS | MAŽAI | ĮVADAS | ĮVADAS |
2 | MAŽAI | AUKŠTAS | ĮVADAS | ĮVADAS |
3 | ĮVADAS | AUKŠTAS | MAŽAI | ĮVADAS |
4 | ĮVADAS | MAŽAI | AUKŠTAS | ĮVADAS |
5 | ĮVADAS | ĮVADAS | AUKŠTAS | MAŽAI |
6 | ĮVADAS | ĮVADAS | MAŽAI | AUKŠTAS |
7 | AUKŠTAS | ĮVADAS | MAŽAI | ĮVADAS |
8 | MAŽAI | ĮVADAS | AUKŠTAS | ĮVADAS |
9 | ĮVADAS | AUKŠTAS | ĮVADAS | MAŽAI |
10 | ĮVADAS | MAŽAI | ĮVADAS | AUKŠTAS |
11 | AUKŠTAS | ĮVADAS | ĮVADAS | MAŽAI |
12 | MAŽAI | ĮVADAS | ĮVADAS | AUKŠTAS |
Po jungčių mano aparatinė įranga atrodo kaip paveikslėlyje žemiau. Kaip matote iš paveikslėlio, yra šešios šviesos diodų grupės ir kiekvienoje grupėje 2 šviesos diodai yra sujungti priešais vienas kitą. „Arduino UNO“ modulį maitina USB prievadas.
Kodo paaiškinimas
Pilnas kodas su darbiniu vaizdo įrašu pateikiamas šios pamokos pabaigoje, čia mes paaiškiname visą programą, kad suprastume projekto darbą.
„Arduino“ kodo pradžioje nustatykite visus kaiščius, prie kurių prijungti šviesos diodai. Po to nustatykite bendrą šviesos diodų skaičių ir šviesos būseną.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Dabar sukurkite matricą, kaip įjungti ir išjungti šviesos diodus iš eilės, galite pakeisti seką pakeisdami kaiščio būseną ir kaiščio konfigūraciją. Pagal šią matricą pirmiausia bus įjungtas LED1, tada LED2 ir pan.
int matrica = { // 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}}, ……………………………. ……………………………..
Dabar tuštumos ciklo viduje programa vykdys matricą „LED_COUNT“, kad įjungtų ir išjungtų šviesos diodus tam tikra seka.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); vėlavimas (1000 / LED_Num); }
Dabar prijunkite „Arduino“ su nešiojamuoju kompiuteriu, teisingai pasirinkite plokštę ir prievadą, tada spustelėkite mygtuką „Įkelti“. Įkėlus kodą, jūsų šviesos diodai turėtų pradėti mirksėti.
Taigi, naudojant „ Charlieplexing“ techniką galima valdyti daugybę šviesos diodų, naudojant mažiau „Arduino“ kaiščių. Šį metodą galite naudoti norėdami valdyti daugiau šviesos diodų. Pavyzdžiui, jei norite valdyti 20 šviesos diodų, tiesiog redaguokite matricą ir pridėkite likusių šviesos diodų sąlygas.
Žemiau rasite visą kodą ir veikiantį vaizdo įrašą.