#include <Adafruit_NeoPixel.h>

#define PIN_LED_STRIP    6   // Pin, an dem der LED-Streifen angeschlossen ist
#define NUM_LEDS         30  // Anzahl der LEDs im Streifen

#define TRIGGER_PIN      9   // Pin für Ultraschall-Sensor Trigger
#define ECHO_PIN         10  // Pin für Ultraschall-Sensor Echo

#define MAX_DISTANCE     400 // Maximale Messdistanz (in cm)
#define MIN_DISTANCE     2   // Minimale Distanz für LED-Anzeige (in cm)

int num_leds_to_light;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN_LED_STRIP, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600);
  strip.begin();
  strip.show(); // Alle LEDs ausschalten
  pinMode(TRIGGER_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(TRIGGER_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);
  duration = pulseIn(ECHO_PIN, HIGH);
  distance = (duration / 2) / 29.1; // Berechnung der Entfernung in Zentimetern

  if (distance >= MIN_DISTANCE && distance <= MAX_DISTANCE) {
    num_leds_to_light = map(distance, MIN_DISTANCE, MAX_DISTANCE, 0, NUM_LEDS);
    int red = map(num_leds_to_light, 0, NUM_LEDS, 255, 0);
    int green = map(num_leds_to_light, 0, NUM_LEDS, 0, 255);
    strip.clear();
    strip.setPixelColor(num_leds_to_light, red, green, 0);
    strip.show();
  }
  delay(10);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
neopixels:DOUT
neopixels:VDD
neopixels:VSS
neopixels:DIN
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND