Back

Arduino İle 8×32 Esnek RGB Led Dot Matrix Kullanımı

Kayan yazı veya mesajların görüntülenmesi için bir yol mu gerekli ? Esnek 32 × 8 RGB LED Matrix ekran ihtiyaçlarınızı karşılayabilir! Bunun üzerinde 256 LED ile, isterseniz metin, desen veya hatta animasyon görüntüleyebilirsiniz. Bu nedenle, bu makalede, bu ekranın Arduino ile nasıl kullanılacağını öğreneceksiniz.

Temel olarak, bu ekran 32 x 8 = 256 LED’den oluşur ve bir ws2811 sürücüsü tarafından çalıştırılır, bu da 256 RGB LED’in tümünü kontrol etmeyi (veya adreslemeyi)  tek bir tel kontrol protokolü ile yapılabilir. Bu da verileri RGB LED matris ekranına iletmek için sadece bir kabloya ihtiyacımız olduğu anlamına gelir. Yayınlanacak bir diğer makalemiz olan IR kumanda devresi ile aynı mantıkta aslında. Kumanda kontrolünde de tek kanal(pin) üzerinden kontrol sağlanıyordu. Ekstra bilgi kısmını çok uzatmıyorum.

Aslında bu matrisi (FastLED kütüphanesi gibi) kontrol etmek için kullanılabilen çeşitli arduino kütüphaneleri mevcuttur, ancak bu derste Adafruit Kütüphaneleri kullanacağım.(Çünkü kullanımı çok rahat)

Proje için ihtiyaçlarımız

RGB matrisini bağlayan 3 ana kablo vardır: Kırmızı, Yeşil ve Beyaz(veya sarı). Kırmızı olan güç hattı (+ 5V), yeşil olan veri hattı ve beyaz(sarı) topraktır. Kırmızı kabloyu 5V pin, yeşil kabloyu dijital pin D3(digital 3)’e ve beyaz( sarı) kabloyu dişi jumper kablolarını kullanarak toprağa bağlayın.

Artık teller panele bağlı olduğu için, önce tüm LED’lerin test edildiğinden emin olmak için tüm LED’leri test edeceğiz. Bundan önce, Adafruit’ın NeoPixel kütüphanesini buradan indirebilirsiniz: https://github.com/adafruit/Adafruit_NeoPixel. Kütüphaneyi Arduino’nun kütüphane dizinine yükledikten sonra aşağıdaki kodu kopyalayıp Arduino’ya yükleyin:

#include <Adafruit_NeoPixel.h>
#include <avr/power.h>

#define PIN            3      //veri pini

// Arduino'ya kaç tane NeoPixel takılı
#define NUMPIXELS      256

// NeoPixel kütüphanesini kurduğumuzda, kaç adet piksel ve sinyal göndermek için hangi pinin kullanılacağını söyleriz.
// Daha eski NeoPixel şeritler için üçüncü parametreyi değiştirmeniz gerekebileceğini unutmayın - ipucu testine bakın
// olası değerler hakkında daha fazla bilgi için örnek.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 500; // yarım saniye delay

void setup() {
  pixels.begin(); // NoPixels kütüphanesini aktif eder
}

void loop() {
  // Bir NeoPixels seti için, ilk NeoPixel 0'dır, ikincisi 1'dir,
  //eksi bir piksel sayısının sonuna kadardır.

  for(int i=0;i<NUMPIXELS;i++){

    // pixels.Color  RGB degerleri yollama 0,0,0 ile 255,255,255 arasında
    pixels.setPixelColor(i, pixels.Color(0,150,0)); // Moderately bright green color.

    pixels.show(); // güncellenmiş piksel rengini donanıma gönderir.

    delay(delayval); // periyot için atanmış delay (milisaniye).
    pixels.clear();
  }
}

Test bittikten sonra, en üstteki kısma geçiyoruz: kaydırma metni! Bunu yapmak için önce bazı kütüphaneleri içe aktarmamız gerekecek:

Adafruit GFX Kütüphanesi: https://github.com/adafruit/Adafruit-GFX-Library

Adafruit NeoPixel Kütüphanesi: https://github.com/adafruit/Adafruit_NeoMatrix

Şimdilik, her bir turda 7 farklı renkte metin olarak kaydırma testi yapıyor olacağız, ancak isterseniz bunu değiştirebilirsiniz. Kod aşağıdaki gibidir:

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
//Robocombo.com

#define PIN 3


Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_BOTTOM    + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(5);
  matrix.setTextColor(colors[0]);
}

int x    = matrix.width();
int pass = 0;

void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(F("RoboCombo")); // buraya istediğiniz şeyi yazdırıp yazdırabilirsiniz.

  if(--x < -30
  ) {
    x = matrix.width();

    if(++pass >= 8) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(70); //yazı çok hızlı geçiyorsa 70 değerini büyültebilirsiniz.
}
 

Post a Comment