Charlieplexing, birkaç I / O pini kullanarak birçok LED'i kontrol etme tekniğidir. Charlieplexing, çoklama ile aynıdır, ancak pin sayısını önemli ölçüde azaltmak ve çoğullamaya göre verimlilik elde etmek için üç durumlu mantığı (yüksek, düşük giriş) kullanır. Charlieplexing tekniği, 1995 yılında tekniği icat eden mucidi Charlie Allen'ın adını almıştır. Daha önce Arduino'da 4 basamaklı 7 segmentli ekranı arayüzlemek ve 8x8 LED matrisi sürmek için çoklama tekniğini kullandık.
Charlieplexing, N * (N - 1) LED'leri kontrol etmenizi sağlar; burada N, pin sayısıdır. Örneğin, 4 Arduino pini 4 * (4-1) = 12 kullanarak 12 LED'i kontrol edebilirsiniz. LED'ler diyotlardır ve diyotlarda akım yalnızca bir yönde akar. Yani Charlieplexing'de iki LED'i birbirine paralel olarak ancak zıt kutuplarla bağlarız, böylece bir seferde yalnızca bir LED yanar. Arduino veya diğer mikrodenetleyici kartlarına gelince, asla yeterli giriş / çıkış pinine sahip değilsiniz. LCD ekranı, bir grup LED'i ve bazı sensörleri arayüzlemeniz gereken bir proje üzerinde çalışıyorsanız, o zaman zaten pimleriniz tükenmiş demektir. Bu durumda, pin sayısını azaltmak için charlieplex LED'leri kullanabilirsiniz.
Bu eğitimde, 4 Arduino pini kullanarak 12 LED'i kontrol etmek için Charlieplexing tekniğini kullanacağız.
Gerekli Bileşenler
- Arduino UNO
- LED (12)
- 4 Direnç (330 ohm)
- Atlama Telleri
- Breadboard
Devre şeması
Temel olarak bu devre şemasında 12 LED 4 Arduino pini ile dirençler üzerinden bağlanır. Arduino'nun her bir pini üç LED ile bağlanmıştır. Altı LED grubu vardır ve her grupta 2 LED bağlanır ve her iki LED birbirine paraleldir ancak zıt kutuplara sahiptir, böylece bir seferde yalnızca bir LED yanar. Dolayısıyla, 1. ledin yanması için devre şemasına göre, A pininde YÜKSEK sinyal olması ve B pininde DÜŞÜK sinyal olması ve C ve D pinlerinin bağlantısının kesilmesi gerekir. Diğer LED'ler için de aynı prosedür izlenecektir. Her bir LED için tam pin ayarları tablosu aşağıda verilmiştir:
LED | Toplu iğne 8 | Toplu iğne 9 | Toplu iğne 10 | Toplu iğne 11 |
1 | YÜKSEK | DÜŞÜK | GİRİŞ | GİRİŞ |
2 | DÜŞÜK | YÜKSEK | GİRİŞ | GİRİŞ |
3 | GİRİŞ | YÜKSEK | DÜŞÜK | GİRİŞ |
4 | GİRİŞ | DÜŞÜK | YÜKSEK | GİRİŞ |
5 | GİRİŞ | GİRİŞ | YÜKSEK | DÜŞÜK |
6 | GİRİŞ | GİRİŞ | DÜŞÜK | YÜKSEK |
7 | YÜKSEK | GİRİŞ | DÜŞÜK | GİRİŞ |
8 | DÜŞÜK | GİRİŞ | YÜKSEK | GİRİŞ |
9 | GİRİŞ | YÜKSEK | GİRİŞ | DÜŞÜK |
10 | GİRİŞ | DÜŞÜK | GİRİŞ | YÜKSEK |
11 | YÜKSEK | GİRİŞ | GİRİŞ | DÜŞÜK |
12 | DÜŞÜK | GİRİŞ | GİRİŞ | YÜKSEK |
Bağlantılardan sonra donanımım aşağıdaki resimdeki gibi görünüyor. Resimden de görebileceğiniz gibi altı grup LED vardır ve her grupta 2 LED birbirine zıt olarak bağlanmıştır. Arduino UNO modülü, USB portu ile güçlendirilmiştir.
Kod Açıklama
Bu eğitimin sonunda bir çalışma videosu ile birlikte eksiksiz kod verilmiştir, burada projenin çalışmasını anlamak için tüm programı açıklıyoruz.
Arduino kodunun başlangıcında, LED'lerin bağlı olduğu tüm pinleri tanımlayın. Bundan sonra, toplam LED sayısını ve led durumunu tanımlayın.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Şimdi LED'leri sırayla açmak ve kapatmak için bir matris oluşturun, pin durumunu ve pin yapılandırmasını değiştirerek sıralamayı değiştirebilirsiniz. Bu matrise göre, önce LED1, sonra LED2 vb. Yanacaktır.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {DÜŞÜK, YÜKSEK, DÜŞÜK, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Şimdi boşluk döngüsünün içinde, program verilen sırayla LED'leri açmak ve kapatmak için LED_COUNT matrisini yürütecek.
geçersiz döngü () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); gecikme (1000 / LED_Num); }
Şimdi Arduino'yu dizüstü bilgisayara bağlayın ve kartı ve bağlantı noktasını doğru şekilde seçin ve ardından Yükle düğmesine tıklayın. Kodu yükledikten sonra, LED'leriniz yanıp sönmeye başlamalıdır.
Bu yüzden nasıl Charlieplexing tekniği daha az çaba isteyen işaretçilerine kullanarak birçok LED kontrol etmek için kullanılabilir. Daha fazla sayıda LED'i kontrol etmek için bu yöntemi kullanabilirsiniz. Örneğin, 20 LED'i kontrol etmek istiyorsanız, sadece matrisi düzenleyin ve kalan LED'ler için koşulları ekleyin.
Aşağıda tam kodu ve çalışma videosunu bulun.