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

Cara Mengontrol WS2812B LED yang Dapat Dialamatkan Secara Individual menggunakan Arduino

Dalam tutorial ini kita akan belajar bagaimana mengontrol LED RGB yang dapat dialamatkan secara individual atau strip LED WS2812B menggunakan Arduino. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini untuk lebih jelasnya.

Ringkasan

Pertama kami akan menjelaskan prinsip kerja melalui beberapa contoh dasar dan kemudian melihat Proyek Arduino yang sangat keren menggunakan LED ini, meja kopi LED interaktif DIY. Meja kopi dilengkapi LED WS2812B, sensor jarak inframerah untuk mendeteksi objek, dan modul Bluetooth HC-05 untuk mengontrol warna melalui aplikasi Android yang dibuat khusus. Proyek ini sebenarnya merupakan kolaborasi antara saya dan Marija dari saluran YouTube Pahlawan Kreativitas.

Cara Kerja LED WS2812B

Mari kita mulai dengan melihat lebih dekat pada strip LED. Ini terdiri dari LED RGB tipe 5050 di mana IC driver LED WS2812B yang sangat ringkas terintegrasi.

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

Apa yang hebat tentang LED ini adalah kita dapat mengontrol bahkan seluruh strip LED hanya dengan satu pin dari papan Arduino kita. Setiap LED memiliki tiga konektor di setiap ujungnya, dua untuk daya dan satu untuk data. Panah menunjukkan arah aliran data. Panel output data dari LED sebelumnya terhubung ke panel Input Data dari LED berikutnya. Kami dapat memotong strip sesuai ukuran yang kami inginkan, serta menjauhkan LED menggunakan beberapa kabel.

Adapun daya mereka bekerja pada 5V dan masing-masing LED Merah, Hijau dan Biru menarik sekitar 20mA, atau total 60mA untuk setiap LED pada kecerahan penuh. Perhatikan bahwa saat Arduino diberi daya melalui USB, pin 5V hanya dapat menangani sekitar 400 mA, dan saat diberi daya menggunakan konektor daya barel, pin 5V dapat menangani sekitar 900 mA.

Jika Anda menggunakan lebih banyak LED dan jumlah arus yang akan ditarik melebihi batas yang disebutkan di atas, Anda harus menggunakan catu daya 5V yang terpisah. Dalam kasus seperti itu, Anda juga perlu menghubungkan dua garis Ground satu sama lain. Selain itu, disarankan untuk menggunakan resistor sekitar 330 Ohm antara Arduino dan pin data strip LED untuk mengurangi kebisingan pada saluran tersebut, serta kapasitor sekitar 100uF pada 5V dan Ground untuk memperlancar catu daya. .

Contoh LED Arduino dan WS2812B

Contoh 1

Sekarang sebagai contoh saya akan menggunakan 20 LED strip panjang, terhubung ke Arduino melalui resistor 330 Ohm dan ditenagai dengan catu daya 5V terpisah, seperti yang dijelaskan di atas. Untuk memprogram Arduino, kami akan menggunakan perpustakaan FastLED. Ini adalah perpustakaan yang sangat baik dan terdokumentasi dengan baik yang memungkinkan kontrol yang mudah dari LED WS2812B.

Anda bisa mendapatkan komponen yang diperlukan untuk contoh ini dari tautan di bawah:

  • Strip LED WS2812B  ………………….. 
  • Dewan Arduino ……………………………
  • Sumber Daya DC 5V 6A ……………… 

Berikut 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-tama kita perlu menyertakan perpustakaan FastLED, menentukan pin yang menghubungkan data strip LED, menentukan jumlah LED, serta menentukan array tipe CRGB. Jenis ini berisi LED, dengan tiga anggota data satu byte untuk masing-masing dari tiga saluran warna Merah, Hijau, dan Biru.

Di bagian pengaturan kita hanya perlu menginisialisasi FastLED dengan parameter yang ditentukan di atas. Sekarang loop utama kita dapat mengontrol LED kita sesuka kita. 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 “untuk”, kita dapat dengan mudah membuat beberapa animasi.

Berikut 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 "untuk" pertama menyalakan semua 20 LED dengan warna biru, dari LED pertama hingga terakhir dengan penundaan 40 milidetik. Putaran "untuk" berikutnya menyala lagi semua 20 LED, tetapi kali ini dalam warna merah dan dalam urutan terbalik, dari LED terakhir ke pertama.

Pustaka FastLED memiliki banyak fungsi lain yang dapat digunakan untuk membuat animasi dan pertunjukan cahaya yang sangat menarik, jadi terserah imajinasi Anda untuk membuat proyek LED 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 aku dan Marija dari Pahlawan Kreativitas.

Anda dapat memeriksa artikel situs webnya di mana dia menjelaskan seluruh proses pembuatan meja, mulai dari memotong dan merakit konstruksi kayu, hingga menyolder dan menghubungkan semua bagian elektronik menjadi satu. Di sini saya akan menjelaskan cara kerja bagian elektronik, cara membangun aplikasi Android khusus dan memprogram board Arduino.

Berikut skema rangkaian lengkap dari proyek ini.

Jadi tabel terdiri dari 45 LED yang dapat dialamatkan, 45 sensor jarak inframerah dan modul Bluetooth HC-05, semuanya terhubung ke papan Arduino Mega. Sirkuit ini ditenagai dengan catu daya 5V 6A.

Anda bisa mendapatkan komponen yang diperlukan untuk contoh ini dari tautan di bawah:

  • Strip LED WS2812B  ………………….. 
  • Sensor Kedekatan IR …………………… 
  • Modul Bluetooth HC-05 …….…… 
  • Dewan Arduino ……………………………
  • Sumber Daya DC 5V 6A ……………… 

Terkait: Cara menggunakan LED RGB dengan Arduino | Tutorial

Kode Sumber

Berikut kode Arduino untuk proyek ini dan jika kami mengecualikan fitur kontrol warna Bluetooth, kami dapat melihat bahwa kode tersebut 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 mendefinisikan parameter dasar seperti yang dijelaskan sebelumnya dan mengatur 45 pin sensor jarak sebagai input.

Di loop utama menggunakan loop "untuk" tunggal, kami mengatur semua LED ke warna tertentu, dan juga memeriksa apakah sensor jarak telah mendeteksi suatu objek. Jika itu benar, atau keadaan logika RENDAH dalam kasus ini, warna reaktif tertentu akan diatur ke LED tertentu. Di akhir menggunakan fungsi FastLED.show() kami memperbarui warna LED.

Untuk memasukkan fitur kontrol warna Bluetooth, kita perlu menambahkan beberapa baris kode lagi serta membuat aplikasi Android. Saya sudah memiliki tutorial terpisah tentang cara menggunakan modul Bluetooth HC-05 dengan Arduino dan cara membuat aplikasi Android sendiri menggunakan aplikasi online MIT App Inventor, sehingga Anda selalu dapat memeriksanya untuk detail selengkapnya.

Inilah cara kerja aplikasi Android. Ini terdiri dari gambar palet warna dari mana kita dapat mengambil warna, dua tombol centang dari mana kita dapat memilih apakah warna yang dipilih akan diterapkan ke LED reaktif atau latar belakang dan penggeser 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 kami mendapatkan nilai Merah, Hijau dan Biru untuk warna yang diambil dan menggunakan blok Bluetooth SendText kami mengirimkan informasi ini ke Arduino dalam bentuk teks.

Tergantung pada kotak centang yang dipilih, kami mengirim karakter atau penanda pertama yang berbeda yang membantu saat menerima teks di Arduino. Hal yang sama terjadi ketika kita mengubah posisi slider, nilai dari 10 menjadi 100 dikirim ke Arduino dalam bentuk teks, dengan penanda “3” di depan.

Anda dapat mengunduh aplikasi Android di bawah ini, serta file proyek MIT App Inventor:

DIY_Reactive_LED_Table_Control

1 file 0.00 KB Unduh

DIY_Reactive_LED_Table_Control File Proyek Penemu Aplikasi MIT

1 file 208.06 KB Unduh

Berikut 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 mendefinisikan komunikasi serial antara Arduino dan modul Bluetooth HC-05, atau pin yang terhubung dengan modul. Di bagian setup kita perlu mengatur baud rate di mana modul ini bekerja. Kemudian pada main loop menggunakan fungsi Bluetooth.available() kita cek apakah ada data yang masuk dari Smartphone. Jika itu benar, menggunakan fungsi Bluetooth.readString() kami menerima data sebagai string. Kemudian menggunakan fungsi .startsWith() kita memeriksa karakter pertama atau penanda dan dengan cara itu kita tahu apakah kita ingin mengubah warna reaktif, latar belakang atau kecerahan.

Menggunakan fungsi .substring() kami mengekstrak nilai Merah, Hijau dan Biru dari teks yang diterima dan mengubahnya menjadi bilangan bulat. Nilai-nilai ini kemudian digunakan dalam loop "untuk" di bawah yang mengatur warna dan menyalakan LED seperti yang dijelaskan sebelumnya. Dengan cara yang sama kita menyesuaikan kecerahan LED.

Jadi itu saja untuk tutorial ini. Jangan ragu untuk mengajukan pertanyaan apa pun di bagian komentar di bawah.


Proses manufaktur

  1. Cara Meretas Remote IR
  2. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  3. Pusat Kontrol Arduino
  4. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  5. Arduino dengan Bluetooth untuk Mengontrol LED!
  6. Kontrol Arduino Rover menggunakan Firmata dan Pengontrol Xbox One
  7. Cara Mengukur Massa Bumi Menggunakan Arduino
  8. Arduino Quadruped
  9. Mengontrol Kecerahan LED Menggunakan Bolt dan Arduino
  10. Cara Membuat Kompas menggunakan Arduino dan Mengolah IDE