Minggu, 12 Januari 2020

Led Strip WS2812B Addressable RGB 30 Led/meter 5V


LED Strip menurut saya adalah keajaiban, karena hanya dengan 1 pin data, kita bisa mengatur belasan, puluhan, bahkan ratusan LED. http://badar-blog.blogspot.com/2019/10/mengontrol-led-strip-dengan-arduino.html gunakan library NeoPixel yang disediakan oleh Adafruit.






Setiap led membutuhkan 24 bit data untuk menampilkan tampilan dengan warna tertentu,
formatnya adalah 8 bit pertama untuk green, 8 bit kedua untuk red, 8 bit ketiga untuk blue. Tata cara menerapkan bit tersebut adalah dengan membuat interval logika 0 dan 1 seperti berikut


Cukup pusing kan? Jangan khawatir, kita tidak perlu bermain bit-bit tersebut tapi cukup dengan menggunakan library NeoPixel yang disediakan oleh Adafruit.

Singkatnya, dengan menggunakan library neopixel kita cukup menentukan led berapa? dihidupkan dengan warna apa? seberapa terang?

berikut script dasarnya:


  • Mengimport library dan mengkonfigurasi led strip yang digunakan

  1. /* --------------------------------------------------
  2. * Import library neopixel
  3. */
  4. #include <Adafruit_NeoPixel.h>
  5.  
  6. /* --------------------------------------------------
  7. * Membuat objek led strip bernama "strip" untuk digunakan (nama bebas)
  8. * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
  9. */
  10. Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);
  11.  

  • Mengaktifkan strip, agar dapat digunakan
  1. strip.begin();


  • Mengatur brightness / kecerahan
  1. strip.setBrightness(nilai_kecerahan)

nilai kecerahan dimulai dari 0 - 255,
semakin besar semakin cerah

  • Mendefinisikan warna (via RGB)
  1. strip.Color(merah, hijau, biru);

nilai masing-masing warna: 0 - 255

Misalnya: (255, 0, 0) menghasilkan warna merah
(255, 255, 0) menghasilkan warna kuning (campuran merah + hijau)

Tips: Search di google dengan keywoard "Color picker"pilih warna, ambil nilai rgbnya

  • Mendefinisikan warna (via HSV)
  1. strip.ColorHSV(hue, saturation, value);
  2. // atau cukup dengan
  3. strip.ColorHSV(hue);

nilai hue = 0 - 65536 (atau lebar integer 16 bit)
nilai saturation = 0-255
nilai value = 0-255

HSV adalah salah satu alternatif RGB jika kita ingin mendapatkan warna berdasarkan slider spektrum warna HSV seperti  gambar dibawah

  • Mengatur warna pada seluruh led
  1. strip.fill(warna)

Misal: untuk mengatur warna kuning pada semua led jadi seperti berikut

  1. strip.fill(strip.Color(255, 255, 0));


  • Mengatur warna pada led tertentu
  1. strip.setPixelColor(urutan_led, warnanya)

Urutan led dimulai dari 0, jadi untuk led ketiga ditulis 2

Misal: untuk mengatur warna biru pada led nomor 3 seperti berikut

  1. strip.setPixelColor(2, strip.Color(0, 0, 255));



  • Mematikan seluruh led
  1. strip.clear();

  • Menampilkan pengaturan warna pada led strip
  1. strip.show();

Semua kode pengaturan diatas seperti fill(), setPixelColor(), clear() tidak akan ngefek pada led strip sebelum strip.show() dilakukan, maka biasanya strip.show() dituliskan setelah kode-kode tersebut.
  • Mengambil jumlah led yang sudah dideklarasikan
  1. strip.numPixels();




Meng-install Library


  • Pastikan anda sudah menginstall Arduino
  • masuk ke sketch > include library > manage library
  • Pada search, ketikkan "Adafruit Neopixel"
  • Pilih yang single-wire-based, Klik install





Bermain dengan warna

konfigurasi led strip yang saya gunakan pada kode dibawah adalah
menggunakan 60 led dengan pin DI di pin 6 arduino,
Atur wiringnya, jangan lupa menghubungkan VCC dan GND

Skenario 1
Menampilkan warna biru, kemudian jeda setengah detik, lalu menampilkan warna merah, jeda lagi setengah detik, kemudian ulang dari awal lagi.

  1. /* --------------------------------------------------
  2. * Import library neopixel
  3. */
  4. #include <Adafruit_NeoPixel.h>
  5.  
  6. /* --------------------------------------------------
  7. * Membuat objek led strip untuk digunakan
  8. * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
  9. */
  10. Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);
  11.  
  12.  
  13. /* --------------------------------------------------
  14. * memulai tampilan strip
  15. * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
  16. */
  17. void setup() {
  18. strip.begin(); // mengaktifkan led strip
  19. strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
  20. }
  21.  
  22. void loop() {
  23. strip.fill(strip.Color(0, 0, 255)); // Mengatur warna menjadi biru
  24. strip.show(); // Menampilkan settingan diatas pada led (apply)
  25. delay(500); // Jeda 1 detik
  26. strip.fill(strip.Color(255, 0, 0)); // Mengatur warna menjadi merah
  27. strip.show(); // Menampilkan settingan diatas pada led (apply)
  28. delay(500); // jeda 1 detik
  29. }

Diatas, saya menggunakan strip.fill() untuk mengatur keseluruhan warna dan menampilkannya menggunakan strip.show(). cukup simple..

Tidak ada komentar:

Posting Komentar