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.

selector rotary switch arduino nano rgb led

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).

shooting star animation

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

arduino nano

2. Kabel data Mini USB

kabel data micro usb

3. Breadboard

kabel data micro usb

4. WS2812 5 Volt, 120 LED

ws2812 12 V

5. Adaptor 5v 5A

adaptor 5V 5A

6. Selector switch + Kabel Jumper

Selector switch with soldered jumper cable

7. Resistor 330 ohm

Resistor 330 ohm

8. Kabel Jumper

jumper cable

Langkah-langkah Praktikum

  1. 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.

    arduino nano usb port
    device manager

    Buka Arduino IDE, pilih Board & port Arduino Nano.

    device manager

    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.

    device manager
  2. Assembling

    Rangkai komponen-komponen elektrikal di atas seperti pada wiring diagram berikut:

    wiring diagram

Untuk lebih jelasnya silakan tonton video dari channel youtube Kode Erik di bawah ini. Kalau ada pertanyaan silakan komen di youtube dan jangan lupa subscribe: