Charlieplexing on tekniikka monien LEDien ohjaamiseksi muutamalla I / O-nastalla. Charlieplexing on sama kuin multipleksointi, mutta se käyttää kolmitilalogiikkaa (korkea, matala panos) piikkien määrän vähentämiseksi dramaattisesti ja tehokkuuden parantamiseksi multipleksoinnissa. Charlieplexing-tekniikka on nimetty keksijänsä, Charlie Allenin mukaan, joka keksi tekniikan vuonna 1995. Aikaisemmin käytimme multipleksointitekniikkaa Arduinossa nelinumeroisen 7-segmenttisen näytön liittämiseen ja 8x8-LED-matriisin ohjaamiseen.
Charlieplexing-toiminnolla voit ohjata N * (N - 1) -LED- valoja, joissa N on nastojen lukumäärä. Voit esimerkiksi ohjata 12 LEDiä käyttämällä 4 Arduino-nastaa 4 * (4-1) = 12. LEDit ovat diodeja, ja diodeissa virta kulkee vain yhteen suuntaan. Joten Charlieplexing-tekniikassa yhdistämme kaksi LEDiä rinnakkain toistensa kanssa, mutta päinvastaisessa järjestyksessä, jotta vain yksi LED syttyy kerrallaan. Kun kyseessä on Arduino tai muut mikrokontrollerilevyt, sinulla ei ole koskaan tarpeeksi tulo- / lähtönippejä. Jos työskentelet projektissa, jossa sinun on liitettävä LCD-näyttö, joukko LED-valoja ja joitain antureita, olet jo poissa nastoista. Tässä tilanteessa voit charlieplex-ledit vähentääksesi nastojen määrää.
Tässä opetusohjelmassa aiomme käyttää Charlieplexing-tekniikkaa 12 LEDin ohjaamiseen 4 Arduino-nastalla.
Tarvittavat komponentit
- Arduino UNO
- LED (12)
- 4 vastus (330 ohmia)
- Neulalangat
- Leipälauta
Piirikaavio
Periaatteessa tässä kytkentäkaaviossa 12 LEDiä on kytketty 4 Arduino-nastalla vastusten kautta. Jokainen Arduino-nasta on yhdistetty kolmella LEDillä. LED-ryhmiä on kuusi, ja kussakin ryhmässä on kytketty 2 LEDiä, ja molemmat ledit ovat samansuuntaisia toistensa kanssa, mutta päinvastaisessa järjestyksessä, joten vain yksi LED syttyy kerrallaan. Joten johtimen 1 kytkemisen kytkentäkaavion mukaan tapissa A on oltava HIGH-signaali ja tapissa B on LOW-signaali, ja tapit C ja D on irrotettava. Samaa menettelyä noudatetaan muillakin LEDeillä. Jokaisen LEDin nasta-asetusten täydellinen taulukko on annettu alla:
LED | Tappi 8 | Tappi 9 | Tappi 10 | Tappi 11 |
1 | KORKEA | MATALA | TULO | TULO |
2 | MATALA | KORKEA | TULO | TULO |
3 | TULO | KORKEA | MATALA | TULO |
4 | TULO | MATALA | KORKEA | TULO |
5 | TULO | TULO | KORKEA | MATALA |
6 | TULO | TULO | MATALA | KORKEA |
7 | KORKEA | TULO | MATALA | TULO |
8 | MATALA | TULO | KORKEA | TULO |
9 | TULO | KORKEA | TULO | MATALA |
10 | TULO | MATALA | TULO | KORKEA |
11 | KORKEA | TULO | TULO | MATALA |
12 | MATALA | TULO | TULO | KORKEA |
Liitäntöjen jälkeen laitteeni näyttää alla olevalta kuvalta. Kuten kuvasta näet, ledejä on kuusi ryhmää ja kussakin ryhmässä 2 LEDiä on kytketty toisiaan vastapäätä. Arduino UNO -moduuli saa virtansa USB-portista.
Koodin selitys
Täydellinen koodi toimivalla videolla on tämän opetusohjelman lopussa, tässä selitämme koko ohjelmaa projektin toiminnan ymmärtämiseksi.
Määritä Arduino-koodin alussa kaikki nastat, joihin LEDit kytketään. Määritä sen jälkeen LEDien kokonaismäärä ja led-tila.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Luo nyt matriisi LEDien kytkemiseksi päälle ja pois päältä peräkkäin, voit muuttaa sekvenssiä muuttamalla nastan tilaa ja nastan kokoonpanoa. Tämän matriisin mukaan LED1 kytketään ensin päälle, sitten LED2 ja niin edelleen.
int-matriisi = { // 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}}, ……………………………. ……………………………..
Nyt tyhjät silmukan sisällä, ohjelma suorittaa LED_COUNT-matriisin kytkeäksesi LEDit päälle ja pois päältä annetussa järjestyksessä.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); viive (1000 / LED_Num); }
Yhdistä nyt Arduino kannettavaan tietokoneeseen, valitse kortti ja portti oikein ja napsauta sitten Lataa-painiketta. Koodin lataamisen jälkeen LEDien tulisi alkaa vilkkua.
Joten Charlieplexing-tekniikkaa voidaan käyttää monien ledien ohjaamiseen vähemmän Arduino-nastoja käyttämällä. Voit käyttää tätä menetelmää ohjaamaan enemmän ledien määrää. Esimerkiksi, jos haluat ohjata 20 LEDiä, muokkaa matriisia ja lisää ehdot jäljellä oleville LEDeille.
Löydä täydellinen koodi ja toimiva video alla.