Charlieplexing är en teknik för att styra många lysdioder med några få I / O-stift. Charlieplexing är samma som multiplexing, men det använder tri-state-logiken (hög, låg ingång) för att minska antalet stift dramatiskt och för att få effektivitet över multiplexing. Charlieplexing-tekniken är uppkallad efter dess uppfinnare, Charlie Allen, som uppfann tekniken 1995. Vi använde tidigare multiplexeringsteknik i Arduino för att koppla samman fyrsiffrig 7-segment display och köra 8x8 LED-matris.
Charlieplexing låter dig styra N * (N - 1) lysdioder, där N är antalet stift. Du kan till exempel styra 12 lysdioder med 4 Arduino-stift 4 * (4-1) = 12. Lysdioder är dioder, och i dioder flyter strömmen bara i en riktning. Så i Charlieplexing ansluter vi två lysdioder parallellt med varandra men med motsatt polaritet så att bara en lysdiod tänds åt gången. När det gäller Arduino eller andra mikrokontrollerkort har du aldrig tillräckligt med in- / utgångsstift. Om du arbetar med ett projekt där du behöver gränssnitt LCD-skärm, en massa lysdioder och några sensorer, är du redan slut på stiften. I den situationen kan du ladda LED-lampor för att minska antalet stift.
I den här guiden ska vi använda Charlieplexing-tekniken för att styra de 12 lysdioderna med 4 Arduino-stift.
Komponenter krävs
- Arduino UNO
- LED (12)
- 4 motstånd (330 ohm)
- Bygeltrådar
- Bakbord
Kretsschema
I grund och botten, i detta kretsschema, är 12 lysdioder anslutna med fyra Arduino-stift genom motstånd. Varje stift av Arduino är ansluten med tre lysdioder. Det finns sex grupper av lysdioder, och i varje grupp är två lysdioder anslutna, och båda lysdioderna är parallella med varandra men med motsatt polaritet så att endast en lysdiod tänds åt gången. Så enligt kretsschemat för att slå på led 1 måste det finnas en HÖG signal på stift A och en LÅG signal på stift B, och stift C och D måste kopplas bort. Samma procedur kommer att följas för de andra lysdioderna. Den fullständiga tabellen med stiftinställningar för varje lysdiod ges nedan:
LED | Stift 8 | Stift 9 | Stift 10 | Stift 11 |
1 | HÖG | LÅG | INMATNING | INMATNING |
2 | LÅG | HÖG | INMATNING | INMATNING |
3 | INMATNING | HÖG | LÅG | INMATNING |
4 | INMATNING | LÅG | HÖG | INMATNING |
5 | INMATNING | INMATNING | HÖG | LÅG |
6 | INMATNING | INMATNING | LÅG | HÖG |
7 | HÖG | INMATNING | LÅG | INMATNING |
8 | LÅG | INMATNING | HÖG | INMATNING |
9 | INMATNING | HÖG | INMATNING | LÅG |
10 | INMATNING | LÅG | INMATNING | HÖG |
11 | HÖG | INMATNING | INMATNING | LÅG |
12 | LÅG | INMATNING | INMATNING | HÖG |
Efter anslutningarna ser min hårdvara ut som bilden nedan. Som du kan se på bilden finns det sex grupper av lysdioder och i varje grupp är 2 lysdioder anslutna mittemot varandra. Arduino UNO-modulen drivs av USB-port.
Kodförklaring
Komplett kod med en fungerande video ges i slutet av denna handledning, här förklarar vi hela programmet för att förstå hur projektet fungerar.
I början av Arduino-koden definiera alla stift som lysdioder är anslutna till. Definiera därefter det totala antalet lysdioder och ledt tillstånd.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Skapa nu en matris för att slå på och av lysdioder i en sekvens, du kan ändra sekvensen genom att ändra stiftstatus och stiftkonfiguration. Enligt denna matris kommer LED1 att slås på först sedan LED2 och så vidare.
int matrix = { // 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}}, ………………………………. ………………………………..
Nu inne i tomrumslängden kommer programmet att köra LED_COUNT-matrisen för att slå på och av lysdioder i den givna sekvensen.
ogiltig slinga () { för (int l = 0; l <LED_Num; l ++) { lightOn (l); fördröjning (1000 / LED_Num); }
Anslut nu Arduino till den bärbara datorn och välj kortet och porten korrekt och klicka sedan på uppladdningsknappen. Efter att ha laddat upp koden bör dina lysdioder börja blinka.
Så detta är hur Charlieplexing-tekniken kan användas för att styra många lysdioder med färre Arduino-stift. Du kan använda den här metoden för att styra fler antal lysdioder. Om du till exempel vill styra 20 lysdioder, redigerar du bara matrisen och lägger till villkoren för återstående lysdioder.
Hitta den fullständiga koden och arbetsvideo nedan.