Assalamualaikum, apa kabar para pengunjung setia triyonos.com dan pemirsa channel Youtube Kode Erik? Semoga Allah Subhanahu Wa Ta'ala senantiasa memberikan kita kesehatan, keselamatan dan keberkahan, Aamiin.
Alhamdulillah setelah gelaran Piala Dunia 2022 di Qatar berakhir dengan sukses dan menjadikan Qatar sebagai penyelenggara Piala Dunia terbaik sejauh ini, kini saatnya triyonos.com kembali berbagi tutorial pemrograman menarik lainnya. Kali ini saya akan melanjutkan tutorial "Mengatur Warna Lampu LED RGB 4 Kaki Menggunakan Selector / Rotary Switch dan Arduino Nano" dengan mengganti lampu LED RGB 4 kaki dengan lampu animasi LED Strip WS2812 5 Volt ke dalam rangkaian.
Masih membahas tentang komponen elektronika yang bernama selector switch atau rotary switch, bahasan di tutorial ini lebih menarik lagi. Bagaimana tidak, karena pada tutorial ini triyonos.com akan membahas bagaimana cara menggunakan selector switch untuk menggonta-ganti warna nyala lampu animasi LED Strip WS2812 berdasarkan posisi selector switch yang dipilih.
Sebelum teman-teman semua mempraktikkan tutorial ini, saya sangat sarankan untuk membaca dan pelajari dulu bahasan tentang selector / rotary switch-nya pada tutorial "Mengatur Warna Lampu LED RGB 4 Kaki Menggunakan Selector / Rotary Switch dan Arduino Nano".
Karena di tutorial tersebut dibahas mengenai apa itu selector switch, jenis / type selector switch yang digunakan, cara penyolderan kabel ke pin dan cara merangkai komponen-komponen elektrikal lainnya.
Di tutorial ini LED strip yang saya gunakan adalah LED Strip WS2812 5 Volt dengan mata lampu LED sebanyak 120 LED. Untuk power supply-nya saya menggunakan adaptor 5 Volt dengan arus 5 Ampere.
Dari sisi software diperlukan library FastLED untuk diinstal di Arduino IDE. Cara instalasi library FastLED bisa dilihat pada tutorial-tutorial saya tentang lampu animasi LED strip WS2812 sebelum ini. Sedangkan untuk animasinya saya menggunakan animasi Shooting Star dari channel Youtube Electriangle di video youtube yang berjudul Shooting Star Animation for Individually Addressable LEDs (Arduino, WS2812B, FastLED Library).
Source code nya saya modifikasi sedemikian rupa sehingga warna animasinya bisa bergonta-ganti menjadi warna Red, Green atau Blue sesuai dengan posisi rotary switch yang dipilih.
Berikut ini komponen-komponen elektrikal selengkapnya yang akan digunakan untuk praktikum kali ini:
1. Arduino Nano
2. Kabel data Mini USB
3. Breadboard
4. WS2812 5 Volt, 120 LED
5. Adaptor 5v 5A
6. Selector switch + Kabel Jumper
7. Resistor 330 ohm
8. Kabel Jumper
Langkah-langkah Praktikum
-
Upload Sketch
Colokkan Arduino Nano ke komputer melalui port USB dan pastikan port COM Arduino Nano terdeteksi di device manager. Di komputer saya Arduino Nano berkomunikasi dengan PC menggunakan port COM13.
Buka Arduino IDE, pilih Board & port Arduino Nano.
Copy paste sketch .ino berikut ini:
#include "FastLED.h" #define NUM_LEDS 120 // Enter the total number of LEDs on the strip #define PIN 7 // The pin connected to Din to control the LEDs const byte switchPin1 = 2; const byte switchPin2 = 3; const byte switchPin3 = 4; // Booleans for input states volatile bool D2_state = LOW; volatile bool D3_state = LOW; volatile bool D4_state = LOW; CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812B, PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.clear(); // Initialize all LEDs to "OFF" pinMode(switchPin1, INPUT); pinMode(switchPin2, INPUT); pinMode(switchPin3, INPUT); } void loop() { D2_state = digitalRead(switchPin1); D3_state = digitalRead(switchPin2); D4_state = digitalRead(switchPin3); if (D2_state == LOW && D3_state == LOW && D4_state == LOW) { for (int i=0; i<NUM_LEDS; i++) { leds[i] = CRGB::Black; FastLED.show(); } FastLED.clear(); } else { if (D2_state == HIGH) { shootingStarAnimation(255, 0, 0, 40, 30, 5000); } if (D3_state == HIGH) { shootingStarAnimation(0, 255, 0, 40, 30, 5000); } if (D4_state == HIGH) { shootingStarAnimation(0, 0, 255, 40, 30, 5000); } } } unsigned long previousMillis = 0; // Stores last time LEDs were updated int count = 0; // Stores count for incrementing up to the NUM_LEDs void shootingStarAnimation(int red, int green, int blue, int tail_length, int delay_duration, int interval){ unsigned long currentMillis = millis(); // Get the time if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // Save the last time the LEDs were updated count = 0; // Reset the count to 0 after each interval } if (count < NUM_LEDS) { leds[count % (NUM_LEDS+1)].setRGB(red, green, blue); // Set LEDs with the color value count++; } fadeToBlackBy(leds, NUM_LEDS, tail_length); // Fade the tail LEDs to black FastLED.show(); delay(delay_duration); // Delay to set the speed of the animation }Klik tombol upload dan tunggu sampai done uploading.
-
Assembling
Rangkai komponen-komponen elektrikal di atas seperti pada wiring diagram berikut: