5 phus button neopixel arduino

Cara mudah mengontrol LED Neopixel dengan 5 push button menggunakan Arduino. Tutorial cocok untuk pemula, lengkap dengan skema, kode, dan penjelasan


5 phus button neopixel

Ingin membuat proyek Arduino yang lebih interaktif dan berwarna? Kali ini, kita akan membahas cara mengontrol LED Neopixel menggunakan 5 push button. Dengan kombinasi sederhana ini, kamu bisa menciptakan efek cahaya yang unik dan menarik hanya dengan menekan tombol. Proyek ini sangat cocok bagi pemula maupun hobiis yang ingin memahami cara kerja input digital pada Arduino dan bagaimana menghubungkannya dengan output visual berupa LED RGB Neopixel. Yuk, kita mulai eksperimennya!

untuku kode di bawah ini

#include <Adafruit_NeoPixel.h>

#define NUM_LEDS 8
#define LED_PIN  7

// Tombol
const int buttons[] = {2, 3, 4, 5, 6};
const int numButtons = 5;

Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  for (int i = 0; i < numButtons; i++) {
    pinMode(buttons[i], INPUT);
  }
  strip.begin();
  strip.show(); // Clear LED
}

void loop() {
  if (digitalRead(buttons[0]) == HIGH) {
    setColor(strip.Color(255, 0, 0)); // Merah
  } else if (digitalRead(buttons[1]) == HIGH) {
    setColor(strip.Color(0, 255, 0)); // Hijau
  } else if (digitalRead(buttons[2]) == HIGH) {
    setColor(strip.Color(0, 0, 255)); // Biru
  } else if (digitalRead(buttons[3]) == HIGH) {
    rainbowCycle(5);
  } else if (digitalRead(buttons[4]) == HIGH) {
    strobe(strip.Color(255, 255, 255), 100);
  }
}

void setColor(uint32_t color) {
  for (int i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, color);
  }
  strip.show();
}

void strobe(uint32_t color, int delayTime) {
  setColor(color);
  delay(delayTime);
  setColor(strip.Color(0, 0, 0));
  delay(delayTime);
}

void rainbowCycle(uint8_t wait) {
  for (int j = 0; j < 256; j++) {
    for (int i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i * 256 / strip.numPixels() + j) & 255));
    }
    strip.show();
    delay(wait);
    if (anyButtonPressed()) break; // keluar jika tombol lain ditekan
  }
}

bool anyButtonPressed() {
  for (int i = 0; i < numButtons; i++) {
    if (digitalRead(buttons[i]) == HIGH) return true;
  }
  return false;
}

uint32_t Wheel(byte WheelPos) {
  if (WheelPos < 85) {
    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if (WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
    WheelPos -= 170;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
Kalilandak Info – Tutorial Arduino & Proyek Elektronik Lengkap Bahasa Indonesia
NextGen Digital Welcome to WhatsApp chat
Halo! ada yang bisa saya bantu?
Type here...