Arduino LED Matrix Ekran Kontrolü

1
1491
Okunma

Arduino LED Matrix Ekran Kontrolü

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.

İpucuPinMode 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

1 Yorum

CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.