Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

Bergantung pada intensitas dari tiga LED individu Merah, Hijau, dan Biru kita dapat mensimulasikan warna apa pun yang kita inginkan.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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:

#include <FastLED.h> #define LED_PIN 7 #define NUM_LEDS 20 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); } void loop() { leds[0] = CRGB(255, 0, 0); FastLED.show(); delay(500); leds[1] = CRGB(0, 255, 0); FastLED.show(); delay(500); leds[2] = CRGB(0, 0, 255); FastLED.show(); delay(500); leds[5] = CRGB(150, 0, 255); FastLED.show(); delay(500); leds[9] = CRGB(255, 200, 20); FastLED.show(); delay(500); leds[14] = CRGB(85, 60, 180); FastLED.show(); delay(500); leds[19] = CRGB(50, 255, 20); FastLED.show(); delay(500); }Code language: Arduino (arduino)

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

Berikut adalah kode sumber Arduino untuk contoh kedua:

#include <FastLED.h> #define LED_PIN 7 #define NUM_LEDS 20 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); } void loop() { for (int i = 0; i <= 19; i++) { leds[i] = CRGB ( 0, 0, 255); FastLED.show(); delay(40); } for (int i = 19; i >= 0; i--) { leds[i] = CRGB ( 255, 0, 0); FastLED.show(); delay(40); } }Code language: Arduino (arduino)

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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.

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

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:

Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

DIY_Reactive_LED_Table_Control

1 file(s) 0.00 KB Download Menguasai Kontrol LED WS2812B dengan Arduino – Panduan Langkah demi Langkah

DIY_Reactive_LED_Table_Control MIT App Inventor Project File

1 file(s) 208.06 KB Download

Berikut adalah kode Arduino:

#include <SoftwareSerial.h> #include "FastLED.h" #define NUM_LEDS 45 #define LED_PIN 2 #define COLOR_ORDER GRB CRGB leds[NUM_LEDS]; SoftwareSerial Bluetooth(53, 52); // Arduino(RX, TX) - Bluetooth (TX, RX) // Initial background color int backR = 100; int backG = 50; int backB = 10; // Initial reactive color int reactiveR = 10; int reactiveG = 50; int reactiveB = 100; int brightness = 50; // Initial brightness String dataIn = ""; void setup() { FastLED.addLeds<WS2812, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); FastLED.setBrightness(brightness); Serial.begin(38400); Bluetooth.begin(38400); // Default baud rate of the Bluetooth module for (int pinNo = 0 + 3; pinNo <= 45 + 3; pinNo++) { pinMode(pinNo, INPUT); } } void loop() { if (Bluetooth.available() > 0) { dataIn = Bluetooth.readString(); delay(20); if (dataIn.startsWith("1")) { delay(10); String stringR = dataIn.substring(dataIn.indexOf("R") + 1, dataIn.indexOf("G")); reactiveR = stringR.toInt(); String stringG = dataIn.substring(dataIn.indexOf("G") + 1, dataIn.indexOf("B")); reactiveG = stringG.toInt(); String stringB = dataIn.substring(dataIn.indexOf("B") + 1, dataIn.indexOf("E")); reactiveB = stringB.toInt(); } else if (dataIn.startsWith("2")) { String stringR = dataIn.substring(dataIn.indexOf("R") + 1, dataIn.indexOf("G")); backR = stringR.toInt(); String stringG = dataIn.substring(dataIn.indexOf("G") + 1, dataIn.indexOf("B")); backG = stringG.toInt(); String stringB = dataIn.substring(dataIn.indexOf("B") + 1, dataIn.indexOf("E")); backB = stringB.toInt(); } else if (dataIn.startsWith("3")) { String stringBrightness = dataIn.substring(dataIn.indexOf("3") + 1, dataIn.length()); brightness = stringBrightness.toInt(); FastLED.setBrightness(brightness); } } for (int pinNo = 0; pinNo <= NUM_LEDS-1; pinNo++) { leds[pinNo] = CRGB( backR, backG, backB); if ( digitalRead(pinNo + 3) == LOW ) { leds[pinNo] = CRGB( reactiveR, reactiveG, reactiveB); } } FastLED.show(); delay(20); }Code language: Arduino (arduino)

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.


Proses manufaktur

  1. Membuat Remote IR Universal dengan Arduino: Panduan Langkah demi Langkah
  2. Membuat Remote Android Universal dengan Arduino, 1Sheeld & Kontrol IR
  3. Pusat Kontrol Daya Arduino: Kit N-FET, P-FET, Relay & RTC
  4. Kontrol Robotik Arm Custom Secara Jarak Jauh melalui IoT
  5. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  6. Kendalikan Rover Arduino dengan Mulus menggunakan Firmata dan Gamepad Xbox One
  7. Mengukur Massa Bumi dengan Arduino: Panduan DIY Langkah demi Langkah
  8. Membuat Robot Quadruped Arduino Cerdas: Panduan Langkah demi Langkah
  9. Pengendalian Kecerahan LED Lancar Menggunakan Bolt IoT dan Arduino UNO
  10. Membuat Kompas Digital Real-Time dengan Arduino & Processing