A charlieplexing számos LED vezérlésének technikája néhány I / O tű segítségével. A charlieplexing megegyezik a multiplexeléssel, de a háromállapotú logikát (magas, alacsony bemenet) használja a csapok számának drámai csökkentésére és a multiplexelés hatékonyságának növelésére. A Charlieplexing technika a feltalálójáról, Charlie Allenről kapta a nevét, aki 1995-ben feltalálta a technikát. Korábban az Arduinóban multiplexelési technikát alkalmaztunk a 4-jegyű 7-szegmenses kijelző összekapcsolására és a 8x8-as LED-mátrix meghajtására.
A Charlieplexing lehetővé teszi N * (N - 1) LED-ek vezérlését, ahol N a csapok száma. Például 12 LED-et vezérelhet 4 Arduino csap segítségével 4 * (4-1) = 12. A LED-ek diódák, és a diódákban az áram csak egy irányban folyik. Tehát a Charlieplexingben két LED-et kapcsolunk egymással párhuzamosan, de ellentétes polaritással, így egyszerre csak egy LED világít. Ha Arduino vagy más mikrokontroller lapokról van szó, soha nincs elég bemeneti / kimeneti tű. Ha olyan projekten dolgozik, amelyben be kell illesztenie az LCD-kijelzőt, egy csomó LED-et és néhány érzékelőt, akkor már nincsenek csapjai. Ebben a helyzetben charlieplex LED-ekkel csökkentheti a csapok számát.
Ebben az oktatóanyagban a Charlieplexing technikát fogjuk használni a 12 LED vezérléséhez 4 Arduino csap segítségével.
Szükséges alkatrészek
- Arduino UNO
- LED (12)
- 4 ellenállás (330 ohm)
- Jumper huzalok
- Kenyérlemez
Kördiagramm
Alapvetően ebben a kapcsolási rajzban 12 LED van összekapcsolva 4 Arduino csapdal az ellenállásokon keresztül. Az Arduino minden egyes tűje három LED-del van összekötve. A LED-eknek hat csoportja van, és mindegyik csoportban 2 LED van csatlakoztatva, és mindkét LED párhuzamos egymással, de ellentétes polaritással, így egyszerre csak egy LED világít. Tehát az 1-es led bekapcsolásának kapcsolási rajza szerint HIGH jelnek kell lennie az A tűn és egy LOW jelnek a B csapon, és a C és D csapokat le kell választani. Ugyanezt az eljárást fogjuk követni a többi LED esetében is. Az egyes LED-ekhez tartozó csapok beállításainak teljes táblázata az alábbiakban található:
VEZETTE | 8. tű | 9. tű | 10. tű | 11. tű |
1 | MAGAS | ALACSONY | BEMENET | BEMENET |
2 | ALACSONY | MAGAS | BEMENET | BEMENET |
3 | BEMENET | MAGAS | ALACSONY | BEMENET |
4 | BEMENET | ALACSONY | MAGAS | BEMENET |
5. | BEMENET | BEMENET | MAGAS | ALACSONY |
6. | BEMENET | BEMENET | ALACSONY | MAGAS |
7 | MAGAS | BEMENET | ALACSONY | BEMENET |
8. | ALACSONY | BEMENET | MAGAS | BEMENET |
9. | BEMENET | MAGAS | BEMENET | ALACSONY |
10. | BEMENET | ALACSONY | BEMENET | MAGAS |
11. | MAGAS | BEMENET | BEMENET | ALACSONY |
12. | ALACSONY | BEMENET | BEMENET | MAGAS |
A csatlakozások után a hardverem úgy néz ki, mint az alábbi képen. Amint a képből látható, hat LED csoport van, és mindegyik csoportban 2 LED van egymással szemben. Az Arduino UNO modult az USB port táplálja.
Kód Magyarázat
A teljes kód egy működő videóval a leírás végén található, itt elmagyarázzuk a teljes programot, hogy megértsük a projekt működését.
Az Arduino kód kezdetén határozza meg az összes csapot, amelyhez a LED-ek csatlakoznak. Ezt követően határozza meg a LED-ek teljes számát és a led állapotot.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Most hozzon létre egy mátrixot a LED-ek be- és kikapcsolásához egymás után, a sorrendet megváltoztathatja a pin állapotának és a pin konfigurációjának módosításával. E mátrix szerint először a LED1-et kapcsolják be, majd a LED2-et és így tovább.
int mátrix = { // 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}}, ……………………………. ……………………………..
Most a void ciklus belsejében a program végrehajtja a LED_COUNT mátrixot a LED-ek be- és kikapcsolásához az adott sorrendben.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); késleltetés (1000 / LED_Num); }
Most csatlakoztassa az Arduino-t a laptophoz, és válassza ki a táblát és a portot, majd kattintson a Feltöltés gombra. A kód feltöltése után a LED-eknek villogniuk kell.
Így a Charlieplexing technikával sok LED vezérelhető kevesebb Arduino csap segítségével. Ezzel a módszerrel több LED-et vezérelhet. Például, ha 20 LED-et szeretne vezérelni, csak szerkessze a mátrixot, és adja hozzá a fennmaradó LED-ek feltételeit.
Az alábbiakban megtalálja a teljes kódot és a működő videót.