Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah
Dalam tutorial ini kita akan mempelajari cara mengontrol LED RGB yang dapat diaddress secara individual atau lembar LED WS2812B menggunakan Arduino. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawahnya untuk lebih banyak detail.
Ringkasan
Pertama kita akan menjelaskan prinsip kerja melalui beberapa contoh dasar dan kemudian melihat proyek Arduino yang sangat keren menggunakan LED ini, sebuah meja kopi LED interaktif DIY. Meja kopi ini memiliki LED WS2812B, sensor dekat inframerah untuk mendeteksi objek dan modul Bluetooth HC-05 untuk mengontrol warna melalui aplikasi Android yang dibuat sendiri. Proyek ini sebenarnya adalah kolaborasi antara saya dan Marija dari channel YouTube Creativity Hero.
Bagaimana LED WS2812B Bekerja
Mari kita mulai dengan melihat lebih dekat lembar LED. Ini terdiri dari LED RGB tipe 5050 di mana driver LED yang sangat kompak WS2812B IC terintegrasi.
Bergantung pada intensitas dari tiga LED individu Merah, Hijau, dan Biru kita dapat mensimulasikan warna apa pun yang kita inginkan.
Yang hebat tentang LED ini adalah kita dapat mengontrol bahkan seluruh lembar LED dengan hanya satu pin dari papan Arduino kita. Setiap LED memiliki tiga konektor di setiap ujung, dua untuk daya dan satu untuk data. Panah menunjukkan arah aliran data. Pad output data LED sebelumnya terhubung ke pad input data LED berikutnya. Kita dapat memotong lembar ke ukuran apa pun yang kita inginkan, serta memisahkan LED menggunakan beberapa kabel.
Seperti yang diketahui, untuk daya mereka bekerja pada 5V dan setiap LED Merah, Hijau dan Biru menarik sekitar 20mA, atau total 60mA untuk setiap LED pada kecerahan maksimal. Perhatikan bahwa saat Arduino disuayi melalui USB, pin 5V dapat menangani sekitar 400 mA, dan saat disuayi menggunakan konektor daya barrel, pin 5V dapat menangani sekitar 900 mA.
Jika Anda menggunakan lebih banyak LED dan jumlah arus yang akan mereka tarik melebihi batas yang disebutkan di atas, Anda harus menggunakan sumber daya 5V terpisah. Dalam hal ini Anda juga perlu menghubungkan dua garis Ground satu sama lain. Selain itu disarankan untuk menggunakan resistor sekitar 330 Ohm antara Arduino dan pin data lembar LED untuk mengurangi kebisingan pada garis tersebut, serta kapasitor sekitar 100uF di antara 5V dan Ground untuk meratakan sumber daya.
Contoh Arduino dan LED WS2812B
Contoh 1
Sekarang sebagai contoh saya akan menggunakan lembar LED panjang 20, yang terhubung ke Arduino melalui resistor 330 Ohm dan disuayi dengan sumber daya 5V terpisah, sebagaimana dijelaskan di atas. Untuk memprogram Arduino, kita akan menggunakan library FastLED. Ini adalah library yang excelente dan sangat terdokumentasi yang memungkinkan kontrol mudah LED WS2812B.
Anda dapat mendapatkan komponen yang diperlukan untuk contoh ini dari tautan di bawah ini:
Lembar LED WS2812B …………………..
Papan Arduino ……………………………
Sumber Daya DC 5V 6A ………………
Berikut adalah kode sumber Arduino untuk contoh pertama:
Deskripsi: Jadi pertama kita perlu menyertakan library FastLED, menentukan pin yang terhubung ke data lembar LED, menentukan jumlah LED, serta menentukan array tipe CRGB. Tipe ini berisi LED, dengan tiga anggota data satu byte untuk masing-masing saluran warna Merah, Hijau dan Biru.
Dalam bagian setup kita hanya perlu menginisialisasi FastLED dengan parameter yang telah ditentukan di atas. Sekarang di dalam loop utama kita dapat mengontrol LED kita dengan cara apa pun yang kita inginkan. Menggunakan fungsi CRGB kita dapat mengatur LED apa pun ke warna apa pun menggunakan tiga parameter warna Merah, Hijau dan Biru. Untuk membuat perubahan terjadi pada LED kita perlu memanggil fungsi FastLED.show().
Contoh 2
Menggunakan beberapa loop "for" kita dapat dengan mudah membuat beberapa animasi.
Berikut adalah kode sumber Arduino untuk contoh kedua:
Di sini loop "for" pertama menyalakan semua 20 LED warna biru, dari LED pertama hingga LED terakhir dengan penundaan 40 milidetik. Loop "for" berikutnya menyalakan lagi semua 20 LED, tetapi kali ini warna merah dan dalam urutan terbalik, dari LED terakhir hingga LED pertama.
Library FastLED memiliki banyak fungsi lain yang dapat digunakan untuk membuat animasi dan pementasan cahaya yang sangat menarik, jadi hanya tergantung pada imajinasi Anda untuk membuat proyek LED Anda berikutnya bersinar.
Meja Kopi LED Interaktif menggunakan LED WS2812B
Sekarang mari kita lihat proyek meja kopi LED interaktif DIY yang saya sebutkan di awal. Jadi ini adalah proyek kolaborasi antara saya dan Marija dari Creativity Hero.
Anda dapat memeriksa artikel situs webnya tempat dia menjelaskan seluruh proses pembuatan meja, mulai dari memotong dan merakit konstruksi kayu, hingga memasang dan menghubungkan semua bagian elektronik bersama-sama. Di sini saya akan menjelaskan bagaimana bagian elektronik bekerja, bagaimana membangun aplikasi Android kustom dan memprogram papan Arduino.
Berikut adalah skema rangkaian lengkap dari proyek ini.
Jadi meja ini terdiri dari 45 LED addressable, 45 sensor dekat inframerah dan modul Bluetooth HC-05, semuanya terhubung ke papan Arduino Mega. Rangkaian disuayi dengan sumber daya 5V 6A.
Anda dapat mendapatkan komponen yang diperlukan untuk contoh ini dari tautan di bawah ini:
Lembar LED WS2812B …………………..
Sensor Dekat IR ……………………
Modul Bluetooth HC-05 …….……
Papan Arduino ……………………………
Sumber Daya DC 5V 6A ………………
Terkait: Cara menggunakan LED RGB dengan Arduino | Tutorial
Kode Sumber
Berikut adalah kode Arduino untuk proyek ini dan jika kita mengabaikan fitur kontrol warna Bluetooth, kita dapat memperhatikan bahwa kode sebenarnya sangat sederhana.
#include "FastLED.h" #define NUM_LEDS 45 #define LED_PIN 2 #define COLOR_ORDER GRB CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); FastLED.setBrightness(brightness); // Set the 45 proximity sensors pins as inputs, from digital pin 3 to pin 48 for (int pinNo = 0 + 3; pinNo <= 45 + 3; pinNo++) { pinMode(pinNo, INPUT); } } void loop() { for (int pinNo = 0; pinNo <= NUM_LEDS-1; pinNo++) { leds[pinNo] = CRGB( 0, 255, 0); // Set all 45 LEDs to green color // If an object is detected on top of the particular sensor, turn on the particular led if ( digitalRead(pinNo + 3) == LOW ) { leds[pinNo] = CRGB( 0, 0, 255); // Set the reactive LED to bluee } } FastLED.show(); // Update the LEDs delay(20); }Code language: Arduino (arduino)
Deskripsi: Pertama kita perlu menentukan parameter dasar sebagaimana dijelaskan sebelumnya dan mengatur pin sensor dekat 45 sebagai input.
Di dalam loop utama menggunakan satu loop "for" kita mengatur semua LED ke warna tertentu, dan juga memeriksa apakah sensor dekat telah mendeteksi objek. Jika itu benar, atau status logika LOW dalam hal ini, warna reaktif tertentu akan diatur ke LED tertentu. Akhirnya menggunakan fungsi FastLED.show() kita memperbarui warna LED.
Untuk menyertakan fitur kontrol warna Bluetooth kita perlu menambahkan beberapa baris kode serta membuat aplikasi Android. Saya sudah memiliki tutorial terpisah tentang cara menggunakan modul Bluetooth HC-05 dengan Arduino dan cara membuat aplikasi Android Anda sendiri menggunakan aplikasi online MIT App Inventor, jadi Anda dapat selalu memeriksa mereka untuk lebih banyak detail.
Ini adalah cara kerja aplikasi Android. Ini terdiri dari gambar palet warna di mana kita dapat memilih warna, dua tombol centang di mana kita dapat memilih apakah warna yang dipilih akan diterapkan ke LED reaktif atau latar belakang dan slider untuk menyesuaikan kecerahan.
Jika kita melihat blok aplikasi, kita dapat melihat apa yang terjadi ketika kita menyentuh kanvas tempat gambar palet warna ditempatkan. Menggunakan blok .GetPixelColor kita mendapatkan nilai Merah, Hijau dan Biru untuk warna yang dipilih dan menggunakan blok Bluetooth SendText kita mengirim informasi ini ke Arduino dalam bentuk teks.
Bergantung pada kotak centang yang dipilih, kita mengirim karakter pertama atau penanda yang berbeda yang membantu saat menerima teks di Arduino. Hal yang sama terjadi ketika kita mengubah posisi slider, sebuah nilai dari 10 hingga 100 dikirim ke Arduino dalam bentuk teks, dengan penanda "3" di depannya.
Anda dapat mengunduh aplikasi Android di bawah ini, serta berkas proyek MIT App Inventor:
DIY_Reactive_LED_Table_Control
1 file(s) 0.00 KB Download
DIY_Reactive_LED_Table_Control MIT App Inventor Project File
Deskripsi: Pertama kita perlu menentukan komunikasi serial antara Arduino dan modul Bluetooth HC-05, atau pin yang terhubung ke modul. Dalam bagian setup kita perlu mengatur kecepatan komunikasi di mana modul ini bekerja. Kemudian di dalam loop utama menggunakan fungsi Bluetooth.available() kita memeriksa apakah ada data masuk dari Smartphone. Jika itu benar, menggunakan fungsi Bluetooth.readString() kita menerima data sebagai string. Kemudian menggunakan fungsi .startsWith() kita memeriksa karakter pertama atau penanda dan dengan cara itu mengetahui apakah kita ingin mengubah warna reaktif, latar belakang atau kecerahan.
Menggunakan fungsi .substring() kita mengekstrak nilai Merah, Hijau dan Biru dari teks yang diterima dan mengonversinya menjadi integer. Nilai-nilai ini kemudian digunakan dalam loop "for" di bawah ini yang mengatur warna dan menyalakan LED sebagaimana dijelaskan sebelumnya. Dengan cara yang sama kita menyesuaikan kecerahan LED.
Itu saja untuk tutorial ini. Jangan ragu untuk bertanya di bagian komentar di bawah.