Arduino İle RGB Led 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)
Arduino ile Rgb Led Kullanımı Projesi için İhtiyaç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.
}