Entfernung messen mal ganz anders.
Per Infrarot-Sensor wird eine Entfernung ermittelt.
Der Microcontroller lässt daraufhin auf einem 1,5m langen LED-Streifen, nur die entsprechende Diode leuchten. So entsteht ein mitlaufendes Licht.

Benötigt wird zB. ein Elegoo Mega2560 R3.
Als Infrarot Sensor wird ein Sharp GP2Y0A02Y verwendet. Es hat eine Reichweite von 20 cm bis 150 cm.
Damit einzelne LED’s auf einem LED-Streifen angesteuert werden kann, habe ich mich für ein WS2812B Streifen entschieden und es auf 150 cm gekürzt. Insgesamt sind somit 45 LED’s ansprechbar.

Entwicklungsboard = Elegoo Mega2560 R3
Infrarot Senor = Sharp GP2Y0A02Y
LED streifen = WS2812B 150cm gekürzt auf 45 LEDs
Netzteil mit 5V 3A (Berechnung 0,06A pro LED mal 45 Stück = 2,7 A)
Infrarot Sensor Datenblatt: https://global.sharp/products/device/…
Arduino IDE = https://www.arduino.cc/en/main/software
Quellcode:
#include <Adafruit_NeoPixel.h>
#include <SharpIR.h>
#define ir A0 //Infrarot an den analogen A0
#define model 20150
#define LEDPIN 6 // Datenkabel des LED Streifen an Pin 6
#define NUMPIXELS 45 // Menge der NeoPixel LED´s
Adafruit_NeoPixel pixels(NUMPIXELS, LEDPIN, NEO_GRB + NEO_KHZ800);
SharpIR SharpIR(ir, model);
void setup() {
Serial.begin(9600);
pixels.begin();
}
void loop() {
pixels.clear(); // erstmal alle pixel colors auf 'off'
int dis=SharpIR.distance(); // liest die Distanz aus und schreibt wert in dis
int position = map(dis,20,145,6,44);
int position1 = (position - 1);
int position2 = (position + 1);
pixels.setPixelColor(position, pixels.Color(150, 0, 0));
pixels.setPixelColor(position1, pixels.Color(0, 10, 0));
pixels.setPixelColor(position2, pixels.Color(0, 10, 0));
Serial.println(dis);
pixels.show(); // sendet die Farbwerte an den LED Streifen
delay(500);
}