#include <Adafruit_NeoPixel.h>
#define TASTERPIN 3
#define RINGPIN 2
#define SENSORPIN A0
#define POTIPIN A1
Adafruit_NeoPixel LEDRing(16, RINGPIN, NEO_GRB + NEO_KHZ800);
void brightnessLEDRing(int a) {
int brightness = map(a, 0, 1023, 255, 0); // Luxwerte invertiert auf Helligkeit mappen
LEDRing.setBrightness(brightness);
LEDRing.show();
}
void rudderIndicator(int b) {
if (b >= 12 && b < 28) {
int numLEDs = map(b, 28, 12, 0, 8); // Map to 0-8 LEDs
for (int i = 0; i < 8; i++) {
if (i < numLEDs) {
LEDRing.setPixelColor(8 + i, 0, 255, 0); // Green LEDs on the right side
} else {
LEDRing.setPixelColor(8 + i, 0, 0, 0); // Turn off remaining LEDs on the right side
}
}
for (int i = 0; i < 8; i++) {
LEDRing.setPixelColor(7 - i, 0, 0, 0); // Turn off all LEDs on the left side
}
} else if (b > 28 && b <= 44) {
int numLEDs = map(b, 28, 44, 0, 8); // Map to 0-8 LEDs
for (int i = 0; i < 8; i++) {
if (i < numLEDs) {
LEDRing.setPixelColor(7 - i, 255, 0, 0); // Red LEDs on the left side
} else {
LEDRing.setPixelColor(7 - i, 0, 0, 0); // Turn off remaining LEDs on the left side
}
}
for (int i = 0; i < 8; i++) {
LEDRing.setPixelColor(8 + i, 0, 0, 0); // Turn off all LEDs on the right side
}
}
LEDRing.show();
}
void setup() {
pinMode(TASTERPIN, INPUT_PULLUP);
LEDRing.begin();
for (int i = 0; i < 16; i++) {
LEDRing.setPixelColor(i, 0, 0, 0); // Clear LED ring
}
LEDRing.show();
}
void loop() {
bool tasterstatus = digitalRead(TASTERPIN);
static bool vorherigerTasterstatus = HIGH;
static long lastDebounceTime = 0;
static int zaehlwert = 0;
if (tasterstatus != vorherigerTasterstatus && millis() - lastDebounceTime >= 50) {
lastDebounceTime = millis();
if (tasterstatus == LOW) {
zaehlwert ++;
//Serial.println (zaehlwert);
}
}
if (zaehlwert % 2 == 1) {
int luxWert = map(analogRead(SENSORPIN), 0, 1023, 1023, 0);
brightnessLEDRing(luxWert);
int potiWert = analogRead(POTIPIN);
int voltWert = 44 - (potiWert * (44 - 12) / 1023.0);
rudderIndicator(voltWert);
}
else {
for (int c = 0; c < 16; c++) {
LEDRing.setPixelColor(c, 0, 0, 0);
}
LEDRing.show();
}
vorherigerTasterstatus = tasterstatus;
}