Arduino LED Matrix Ekran Kontrolü
Arduino LED Matrix Ekran Kontrolü. LED ekranlar genellikle ortak anodların sıralarına ve ortak katot sütunlarına veya tersine yerleştirilmiş LED’lerin matrisleri olarak paketlenir. İşte tipik bir örnek ve şematik:
Bunlar çok kullanışlı görüntüler olabilir. Bir matrisi kontrol etmek için, hem satırlarını hem de sütunlarını mikrodenetleyicinize bağlarsınız. Sütunlar LED katotlarına bağlanır (bkz. Şekil 1), bu nedenle kolondaki LED’lerden herhangi birinin açılması için bir sütunun LOW olması gerekir. Satırlar, LED’lere anotlara bağlanır, böylece bireysel LED’in yanması için satırın YÜKSEK olması gerekir. Satır ve sütun hem yüksek hem de her ikisi de düşükse, LED’den hiçbir voltaj akmaz ve yanmaz.
Bireysel LED’i kontrol etmek için, kendi kolunu LOW ve satırını YÜKSEK olarak ayarlarsınız. Bir sıradaki birden çok LED’i kontrol etmek için, HIGH (YÜKSEK) satırını ayarlarsınız, ardından sütunu yüksek tutarsınız, ardından LOW veya HIGH (YÜKSEK) sütunlarını uygun şekilde ayarlayınız; DÜŞÜK bir sütun ilgili LED’i AÇIK konuma getirir ve YÜKSEK bir sütun bunu kapatır.
İpucu – PinMode komutunu kullanarak OUTPUT olarak ayarlanan pinler , aksi belirtilmedikçe LOW olarak ayarlanır.
Önceden yapılmış LED matrisler olsa da, yukarıda gösterildiği gibi şematik kullanarak, 64 LED’den kendi matrisinizi yapabilirsiniz.
Mikrodenetleyicinin hangi iğnelerinin satırları ve sütunları bağladığınız önemli değildir, çünkü yazılımı bir şeyler atayabilirsiniz. Pimleri, kablolamayı en kolay hale getiren bir şekilde bağlayın. Tipik bir düzen aşağıda gösterilmiştir.
Yukarıdaki şemaya göre, pin bağlantılarının bir matrisi:
Matris pin no. | Satır/Dizi | Sütun | Arduino pin numarası |
1 | 5 | – | 13 |
2 | 7 | – | 12 |
3 | – | 2 | 11 |
4 | – | 3 | 10 |
5 | 8 | – | 16 (analog pin 2) |
6 | – | 5 | 17 (analog pin 3) |
7 | 6 | – | 18 (analog pin 4) |
8 | 3 | – | 19 (analog pin 5) |
9 | 1 | – | 2 |
10 | – | 4 | 3 |
11 | – | 6 | 4 |
12 | 4 | – | 5 |
13 | – | 1 | 6 |
14 | 2 | – | 7 |
15 | – | 7 | 8 |
16 | – | 8 | 9 |
Donanım
- Arduino veya Genuino
- 8 x 8 LED Matrix
- 2 10k ohm potansiyometre
- bağlantı telleri
- breadboard
Devre
Matrisin 16 pini Arduino veya Genuino kartının 16 pimine bağlanır. Analog pinlerin dördü dijital girişler 16 ila 19 olarak kullanılır. Pinlerin sırası koddaki iki dizide verilir.
0 ve 1 analog pinlerine bağlı iki potansiyometre, matristeki yanan LED’in hareketini kontrol eder.
Kod
/* Satır-Kolon XY girişi ile 8x8 LED matris tarama Bu örnek, iki analog giriş kullanarak 8x8 LED matrisini kontrol eder. Bu örnek, Lumex LDM-24488NI Matrisi için çalışır. Görmek http://sigma.octopart.com/140413/datasheet/Lumex-LDM-24488NI.pdf pim bağlantıları için. Diğer LED katot sütun matrisleri için sadece pimi değiştirmeniz gerekir satır [] ve sütun [] dizilerindeki sayılar. satırlar anotlardır cols katotlar --------- Pin numaraları: Matris: - dijital pimler 2 ila 13 - dijital 16 ila 19 olarak kullanılan 2 ila 5 analog pin Potansiyometreler: - orta pimler sırasıyla 0 ve 1 analog pinlerine bağlanır - + 5V ve toprağa bağlı yan pinler oluşturuldu 27 Mayıs 2009 değiştirildi 30 Ağu 2011 Tom Igoe tarafından Bu örnek kod kamu malıdır. http://www.arduino.cc/en/Tutorial/RowColumnScanning daha fazla bilgi için http://www.tigoe.net/pcomp/code/category/arduinowiring adresine de bakın. */ // Satır iğnesi numaralarının 2 boyutlu dizisi: const int row[8] = { 2, 7, 19, 5, 13, 18, 12, 16 }; // 2 boyutlu sütun pin sayı dizisi: const int col[8] = { 6, 11, 10, 3, 17, 4, 8, 9 }; // 2 boyutlu piksel dizisi: int pixels[8][8]; // imleç pozisyonu: int x = 5; int y = 5; void setup() { // I/O pinlerini çıkışlar iterate olarak tekrar başladığında başlatır:(row) for (int thisPin = 0; thisPin < 8; thisPin++) { // çıkış pimlerini başlangıç durumuna getir:(row) pinMode(col[thisPin], OUTPUT); pinMode(row[thisPin], OUTPUT); // LED'lerin kapalı olduğundan emin olmak için kol pimlerini (yani katotlar) yüksek tutun: digitalWrite(col[thisPin], HIGH); } // piksel matrisini başlat: for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { pixels[x][y] = HIGH; } } } void loop() { // okuma girişi: readSensors(); // ekranı çiz: refreshScreen(); } void readSensors() { // son pozisyonu kapat: pixels[x][y] = HIGH; // X ve Y değerleri için sensörleri okuyun: x = 7 - map(analogRead(A0), 0, 1023, 0, 7); y = map(analogRead(A1), 0, 1023, 0, 7); // Yeni piksel konumunu düşük olarak ayarlayın, böylece LED bir sonraki adımda açılır // ekran yenileme: pixels[x][y] = LOW; } void refreshScreen() { // satırlar üzerinde yineleyin (anotlar): for (int thisRow = 0; thisRow < 8; thisRow++) { // satır pinini (anot) yüksek tutun: digitalWrite(row[thisRow], HIGH); // cols (katot) üzerinde yineleyin: for (int thisCol = 0; thisCol < 8; thisCol++) { // geçerli pikselin durumunu al; int thisPixel = pixels[thisRow][thisCol]; // satır YÜKSEK ve sütun DÜŞÜK olduğunda, // buluştukları LED yanar: digitalWrite(col[thisCol], thisPixel); // pikseli kapatın: if (thisPixel == LOW) { digitalWrite(col[thisCol], HIGH); } } // tüm satırı kapatmak için sıra iğnesini alçaltın: digitalWrite(row[thisRow], LOW); } }
Kaynak:arduino.cc