// https://forum.arduino.cc/t/frage-zu-neo-pixel-streifen/1346465
#include <Adafruit_NeoPixel.h>
#define LED_PIN 8
#define SWITCH_A_PIN 2
#define SWITCH_B_PIN 3
#define SWITCH_C_PIN 4
#define NUMPIXELS 30 // 100
#define SHORT_WAIT 100 // 25
#define LONG_WAIT 2000 // 1000
Adafruit_NeoPixel pixels(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool st;
void setup()
{
pinMode(SWITCH_A_PIN, INPUT_PULLUP);
pinMode(SWITCH_B_PIN, INPUT_PULLUP);
pinMode(SWITCH_C_PIN, INPUT_PULLUP);
pixels.begin();
}
void loop()
{
if (!digitalRead(SWITCH_A_PIN)) setA();
else if (!digitalRead(SWITCH_B_PIN)) setB();
else if (!digitalRead(SWITCH_C_PIN)) setC();
}
void setA()
{
for (int j = 0; j < NUMPIXELS; j++) {
setd(0, j);
delay(SHORT_WAIT);
}
delay(LONG_WAIT);
for (int j = 0; j < NUMPIXELS; j++) {
setd(j, NUMPIXELS - 1);
delay(SHORT_WAIT);
}
pixels.clear();
pixels.show();
}
void setB()
{
for (int j = NUMPIXELS - 1; j > 0; j--) {
setd(j - 1, NUMPIXELS - 1);
delay(SHORT_WAIT);
}
delay(LONG_WAIT);
for (int j = NUMPIXELS - 1; j > 0; j--) {
setd(0, j - 1);
delay(SHORT_WAIT);
}
pixels.clear();
pixels.show();
}
void setC()
{
pixels.setPixelColor(0, pixels.Color(0, 255, 0));
delay(SHORT_WAIT);
pixels.show();
pixels.setPixelColor(NUMPIXELS-1, pixels.Color(0, 255, 0));
delay(SHORT_WAIT);
pixels.show();
delay(2*LONG_WAIT);
pixels.clear();
pixels.show();
}
void setd(int st, int ed)
{
pixels.clear();
for (int i = st; i <= ed; i++) { // For each pixel...
pixels.setPixelColor(i, pixels.Color(0, 255, 0 ));
//delay(5);
}
pixels.show();
}