Charlieplexing to technika sterowania wieloma diodami LED za pomocą kilku pinów I / O. Charlieplexing jest tym samym, co multipleksowanie, ale wykorzystuje logikę trójstanową (wysoki, niski sygnał wejściowy), aby radykalnie zmniejszyć liczbę pinów i zwiększyć wydajność w porównaniu z multipleksowaniem. Technika Charlieplexing została nazwana na cześć jej wynalazcy, Charliego Allena, który wynalazł tę technikę w 1995 roku. Wcześniej używaliśmy techniki multipleksowania w Arduino do łączenia 4-cyfrowego 7-segmentowego wyświetlacza i sterowania matrycą LED 8x8.
Charlieplexing pozwala kontrolować N * (N - 1) diod LED, gdzie N to liczba pinów. Na przykład możesz sterować 12 diodami LED za pomocą 4 pinów Arduino 4 * (4-1) = 12. Diody LED to diody, aw diodach prąd płynie tylko w jednym kierunku. Tak więc w Charlieplexing łączymy dwie diody LED równolegle ze sobą, ale z przeciwną polaryzacją, tak aby tylko jedna dioda LED włączała się na raz. Jeśli chodzi o Arduino lub inne płytki mikrokontrolera, nigdy nie masz wystarczającej liczby pinów wejścia / wyjścia. Jeśli pracujesz nad projektem, w którym musisz połączyć wyświetlacz LCD, kilka diod LED i kilka czujników, to już nie masz pinów. W takiej sytuacji można scharakteryzować diody LED, aby zmniejszyć liczbę pinów.
W tym samouczku wykorzystamy technikę Charlieplexing do sterowania 12 diodami LED za pomocą 4 pinów Arduino.
Wymagane składniki
- Arduino UNO
- Dioda (12)
- 4 rezystory (330 omów)
- Przewody połączeniowe
- Płytka prototypowa
Schemat obwodu
Zasadniczo na tym schemacie obwodu 12 diod LED jest połączonych z 4 pinami Arduino za pośrednictwem rezystorów. Każdy pin Arduino połączony jest z trzema diodami LED. Istnieje sześć grup diod LED, aw każdej grupie są połączone 2 diody LED, a obie diody są ze sobą równoległe, ale z przeciwną polaryzacją, tak że w danym momencie włącza się tylko jedna dioda LED. Tak więc zgodnie ze schematem obwodu, aby włączyć diodę 1, musi być sygnał WYSOKI na pinie A i sygnał NISKI na pinie B, a styki C i D muszą zostać odłączone. Ta sama procedura zostanie zastosowana dla pozostałych diod LED. Pełna tabela ustawień pinów dla każdej diody LED jest podana poniżej:
DOPROWADZIŁO | Pin 8 | Pin 9 | Pin 10 | Pin 11 |
1 | WYSOKI | NISKA | WEJŚCIE | WEJŚCIE |
2 | NISKA | WYSOKI | WEJŚCIE | WEJŚCIE |
3 | WEJŚCIE | WYSOKI | NISKA | WEJŚCIE |
4 | WEJŚCIE | NISKA | WYSOKI | WEJŚCIE |
5 | WEJŚCIE | WEJŚCIE | WYSOKI | NISKA |
6 | WEJŚCIE | WEJŚCIE | NISKA | WYSOKI |
7 | WYSOKI | WEJŚCIE | NISKA | WEJŚCIE |
8 | NISKA | WEJŚCIE | WYSOKI | WEJŚCIE |
9 | WEJŚCIE | WYSOKI | WEJŚCIE | NISKA |
10 | WEJŚCIE | NISKA | WEJŚCIE | WYSOKI |
11 | WYSOKI | WEJŚCIE | WEJŚCIE | NISKA |
12 | NISKA | WEJŚCIE | WEJŚCIE | WYSOKI |
Po podłączeniu mój sprzęt wygląda jak na poniższym obrazku. Jak widać na obrazku, jest sześć grup diod LED, aw każdej grupie 2 diody są połączone naprzeciw siebie. Moduł Arduino UNO zasilany jest z portu USB.
Objaśnienie kodu
Kompletny kod z działającym filmem znajduje się na końcu tego samouczka, tutaj wyjaśniamy cały program, aby zrozumieć działanie projektu.
Na początku kodu Arduino zdefiniuj wszystkie piny, do których podłączone są diody LED. Następnie określ całkowitą liczbę diod LED i stan diod.
# zdefiniować A 8 # zdefiniować B 9 # zdefiniować C 10 # zdefiniować D 11 # zdefiniować PIN_CONFIG 0 # zdefiniować PIN_STATE 1 # zdefiniować LED_Num 12
Teraz utwórz matrycę do włączania i wyłączania diod LED w sekwencji, możesz zmienić sekwencję, zmieniając stan pinów i konfigurację pinów. Zgodnie z tą matrycą dioda LED1 zostanie włączona najpierw, a następnie dioda LED2 i tak dalej.
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}}, ……………………………. ……………………………..
Teraz wewnątrz pustej pętli program wykona macierz LED_COUNT, aby włączyć i wyłączyć diody LED w podanej kolejności.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); opóźnienie (1000 / LED_Num); }
Teraz podłącz Arduino do laptopa i wybierz poprawnie płytkę oraz port, a następnie kliknij przycisk Upload. Po wgraniu kodu diody LED powinny zacząć migać.
W ten sposób technika Charlieplexing może być używana do sterowania wieloma diodami LED przy użyciu mniejszej liczby pinów Arduino. Możesz użyć tej metody do sterowania większą liczbą diod LED. Na przykład, jeśli chcesz sterować 20 diodami LED, po prostu edytuj matrycę i dodaj warunki dla pozostałych diod LED.
Znajdź pełny kod i działający film poniżej.