Charlieplexing ir metode, kā kontrolēt daudzas gaismas diodes, izmantojot dažas I / O tapas. Charlieplexing ir tas pats, kas multipleksēšana, taču tas izmanto triju stāvokļu loģiku (augstu, zemu ievadi), lai dramatiski samazinātu tapu skaitu un iegūtu multipleksēšanas efektivitāti. Charlieplexing tehnika ir nosaukta pēc tās izgudrotāja Čārlija Alena, kurš šo tehniku izgudroja 1995. gadā. Mēs iepriekš Arduino izmantojām multipleksēšanas tehniku, lai saskarnētu četrciparu 7 segmentu displeju un vadītu 8x8 LED matricu.
Charlieplexing ļauj kontrolēt N * (N - 1) gaismas diodes, kur N ir tapu skaits. Piemēram, jūs varat kontrolēt 12 gaismas diodes, izmantojot 4 Arduino tapas 4 * (4-1) = 12. Gaismas diodes ir diodes, un diodēs strāva plūst tikai vienā virzienā. Tātad, izmantojot Charlieplexing, mēs savienojam divus LED paralēli viens otram, bet ar pretēju polaritāti, lai vienlaikus ieslēgtos tikai viens LED. Runājot par Arduino vai citām mikrokontrolleru plāksnēm, jums nekad nav pietiekami daudz ievades / izvades tapu. Ja jūs strādājat ar projektu, kurā jums ir nepieciešams saskarne ar LCD displeju, virkni LED un dažiem sensoriem, tad jums jau nav adatu. Šajā situācijā jūs varat charlieplex gaismas diodes, lai samazinātu tapu skaitu.
Šajā apmācībā mēs izmantosim Charlieplexing tehniku, lai kontrolētu 12 gaismas diodes, izmantojot 4 Arduino tapas.
Nepieciešamās sastāvdaļas
- Arduino UNO
- LED (12)
- 4 rezistors (330 omi)
- Džemperu vadi
- Maizes dēlis
Ķēdes shēma
Būtībā šajā shēmā 12 gaismas diodes ir savienotas ar 4 Arduino tapām caur rezistoriem. Katra Arduino tapa ir savienota ar trim gaismas diodēm. Ir sešas gaismas diožu grupas, un katrā grupā ir savienotas 2 gaismas diodes, un abas gaismas diodes ir paralēlas viena otrai, bet ar pretēju polaritāti, lai vienlaikus ieslēgtos tikai viena gaismas diode. Tātad saskaņā ar ķēdes shēmu, lai ieslēgtu 1. vadu, uz tapas A ir jābūt HIGH signālam un uz tapas B - LOW signālam, un ir jāatvieno tapas C un D. Tāda pati procedūra tiks ievērota arī pārējiem gaismas diodēm. Katras gaismas diodes tapu iestatījumu pilnā tabula ir sniegta zemāk:
LED | 8. tapa | 9. tapa | 10. tapa | 11. tapa |
1 | AUGSTS | ZEMS | IEVADE | IEVADE |
2 | ZEMS | AUGSTS | IEVADE | IEVADE |
3 | IEVADE | AUGSTS | ZEMS | IEVADE |
4 | IEVADE | ZEMS | AUGSTS | IEVADE |
5 | IEVADE | IEVADE | AUGSTS | ZEMS |
6 | IEVADE | IEVADE | ZEMS | AUGSTS |
7 | AUGSTS | IEVADE | ZEMS | IEVADE |
8 | ZEMS | IEVADE | AUGSTS | IEVADE |
9 | IEVADE | AUGSTS | IEVADE | ZEMS |
10 | IEVADE | ZEMS | IEVADE | AUGSTS |
11 | AUGSTS | IEVADE | IEVADE | ZEMS |
12 | ZEMS | IEVADE | IEVADE | AUGSTS |
Pēc savienojumiem mana aparatūra izskatās kā attēlā zemāk. Kā redzams no attēla, ir sešas gaismas diožu grupas, un katrā grupā 2 gaismas diodes ir savienotas pretēji viena otrai. Arduino UNO moduli darbina USB ports.
Kods Paskaidrojums
Šīs apmācības beigās ir norādīts pilnīgs kods ar darba video, šeit mēs izskaidrojam visu programmu, lai saprastu projekta darbību.
Arduino koda sākumā definējiet visu tapu, pie kuras ir savienoti gaismas diodes. Pēc tam definējiet kopējo gaismas diožu skaitu un vadīto stāvokli.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Tagad izveidojiet matricu LED ieslēgšanai un izslēgšanai secībā, secību var mainīt, mainot tapas stāvokli un tapas konfigurāciju. Saskaņā ar šo matricu vispirms tiks ieslēgts LED1, pēc tam LED2 un tā tālāk.
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}}, ……………………………. ……………………………..
Tagad tukšuma cilpas iekšpusē programma izpildīs matricu LED_COUNT, lai ieslēgtu un izslēgtu gaismas diodes dotajā secībā.
void loop () { par (int l = 0; l <LED_Num; l ++) { lightOn (l); kavēšanās (1000 / LED_Num); }
Tagad savienojiet Arduino ar klēpjdatoru un pareizi izvēlieties dēli un portu un pēc tam noklikšķiniet uz pogas Augšupielādēt. Pēc koda augšupielādes gaismas diode jāsāk mirgot.
Tātad šādā veidā Charlieplexing tehniku var izmantot, lai kontrolētu daudzas gaismas diodes, izmantojot mazāk Arduino tapu. Jūs varat izmantot šo metodi, lai kontrolētu vairāk gaismas diodes. Piemēram, ja vēlaties kontrolēt 20 gaismas diodes, vienkārši rediģējiet matricu un pievienojiet nosacījumus atlikušajām gaismas diodēm.
Zemāk atrodiet pilnu kodu un darba video.