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
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
- /* --------------------------------------------------
- * Import library neopixel
- */
- #include <Adafruit_NeoPixel.h>
- /* --------------------------------------------------
- * Membuat objek led strip bernama "strip" untuk digunakan (nama bebas)
- * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
- */
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);
- Mengaktifkan strip, agar dapat digunakan
- strip.begin();
- Mengatur brightness / kecerahan
- strip.setBrightness(nilai_kecerahan)
nilai kecerahan dimulai dari 0 - 255,
semakin besar semakin cerah
- Mendefinisikan warna (via RGB)
- 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)
- strip.ColorHSV(hue, saturation, value);
- // atau cukup dengan
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
- strip.fill(warna)
Misal: untuk mengatur warna kuning pada semua led jadi seperti berikut
- strip.fill(strip.Color(255, 255, 0));
- Mengatur warna pada led tertentu
- 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
- strip.setPixelColor(2, strip.Color(0, 0, 255));
- Mematikan seluruh led
- strip.clear();
- Menampilkan pengaturan warna pada led strip
- 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
- 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.
- /* --------------------------------------------------
- * Import library neopixel
- */
- #include <Adafruit_NeoPixel.h>
- /* --------------------------------------------------
- * Membuat objek led strip untuk digunakan
- * dengan format: Adafruit_NeoPixel(jumlah_lednya, pin_arduino, NEO_GRB + NEO_KHZ800)
- */
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);
- /* --------------------------------------------------
- * memulai tampilan strip
- * (dilakukan didalam setup karena strip.begin() cukup di lakukan sekali)
- */
- void setup() {
- strip.begin(); // mengaktifkan led strip
- strip.show(); // menampilkan tampilan strip (karena belum ada settingan apapun jadi mati semua)
- }
- void loop() {
- strip.fill(strip.Color(0, 0, 255)); // Mengatur warna menjadi biru
- strip.show(); // Menampilkan settingan diatas pada led (apply)
- delay(500); // Jeda 1 detik
- strip.fill(strip.Color(255, 0, 0)); // Mengatur warna menjadi merah
- strip.show(); // Menampilkan settingan diatas pada led (apply)
- delay(500); // jeda 1 detik
- }
Diatas, saya menggunakan strip.fill() untuk mengatur keseluruhan warna dan menampilkannya menggunakan strip.show(). cukup simple..