#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel ring(16, 4, NEO_GRB + NEO_KHZ800);
volatile static bool Ring_An = false; // Ring startet asugeschaltet
void setup() {
Serial.begin(9600);
pinMode(3, INPUT_PULLUP); // Button
pinMode(4, OUTPUT); // LED-Ring
pinMode(A1, INPUT); // Helligkeitssensor
pinMode(A2, INPUT); // Potentiometer
ring.begin();
ring.show(); // Alle LEDs aus
attachInterrupt(digitalPinToInterrupt(3), toggleRing, FALLING);
}
void toggleRing(){
Ring_An = !Ring_An;
}
void loop() {
unsigned long lastDebounceTime = 0;
if(Ring_An == true){
unsigned long currentTime = millis();
while (currentTime - lastDebounceTime < 100){
}
float Ruderlage = map(analogRead(A2), 0, 1023, -7, 8);
int Helligkeit = map(analogRead(A1), 0, 1023, 255, 100);
ring.clear();
if (Ruderlage > 0) {
for (int i = 0; i < Ruderlage; i++) {
ring.setPixelColor(i, ring.Color(0, 255, 0)); // Grün
}
} else {
for (int i = 0; i < abs(Ruderlage); i++) {
ring.setPixelColor(15 - i, ring.Color(255, 0, 0)); // Rot
}
}
ring.setPixelColor(0, ring.Color(255, 255, 255));// Weiß bei LED 0
ring.setBrightness(Helligkeit);
ring.show();
}else{
ring.clear();
ring.show();
}
}