#include <Adafruit_NeoPixel.h>
#define TIME_CLK 10 // Grundtakt
#define LED_RGB_1 14 // DIN von LED-Ring 1 ist an GPIO 14 angeschlossen
#define LED_RGB_2 12 // DIN von LED-Ring 2 ist an GPIO 12 angeschlossen
#define NUM_PIXELS 16 // Anzahl der LEDs
#define FORWARD 0
#define BACKWARD 1
Adafruit_NeoPixel led_ring_1(NUM_PIXELS, LED_RGB_1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel led_ring_2(NUM_PIXELS, LED_RGB_2, NEO_GRB + NEO_KHZ800);
unsigned char r1 = 0x00;
unsigned char g1 = 0xFF;
unsigned char b = 0x00;
unsigned char r2 = 0xFF;
unsigned char g2 = 0x00;
unsigned char i;
unsigned char time_counter = 0, time_step = 3;
unsigned char led_counter = NUM_PIXELS;
boolean direction = BACKWARD;
void setup() {
led_ring_1.begin();
led_ring_2.begin();
Serial.begin(115200);
Serial.println("RGB-Lauflichter");
Serial.println("=========================================================");
}
void loop() {
time_step = analogRead(13) >> 5;
if (time_counter >= time_step) {
time_counter = 0;
if (led_counter < (NUM_PIXELS - 1)) {
led_counter++;
r1 += 0x10;
g1 -= 0x10;
r2 -= 0x10;
g2 += 0x10;
} else {
led_counter = 0;
r1 = 0x00;
g1 = 0xFF;
r2 = 0xFF;
g2 = 0x00;
if (direction == FORWARD) {
direction = BACKWARD;
} else {
direction = FORWARD;
}
}
if (direction == FORWARD) {
for(i = 0; i < NUM_PIXELS; i++) {
if (i < led_counter) {
led_ring_1.setPixelColor(i, led_ring_1.Color(r1, g1, b));
led_ring_2.setPixelColor(i, led_ring_2.Color(r2, g2, b));
} else {
led_ring_1.setPixelColor(i, led_ring_1.Color(r2, g2, b));
led_ring_2.setPixelColor(i, led_ring_2.Color(r1, g1, b));
}
}
led_ring_1.show();
led_ring_2.show();
} else {
for(i = 0; i < NUM_PIXELS; i++) {
if (i < (NUM_PIXELS - led_counter)) {
led_ring_1.setPixelColor(i, led_ring_1.Color(r2, g2, b));
led_ring_2.setPixelColor(i, led_ring_2.Color(r1, g1, b));
} else {
led_ring_1.setPixelColor(i, led_ring_1.Color(r1, g1, b));
led_ring_2.setPixelColor(i, led_ring_2.Color(r2, g2, b));
}
}
led_ring_1.show();
led_ring_2.show();
}
} else {
time_counter++;
}
delay(TIME_CLK);
}