LED Strip zeigt gemessene Länge an

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, das die Distanz anzeigt.

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.

Hardware:

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)

Weitere Informationen:

Infrarot Sensor Datenblatt: https://global.sharp/products/device/…

Software:

Arduino IDE = https://www.arduino.cc/en/main/software

Verdrahtung:

Elegoo Mega2560 R3

  • Pin 6 → Data-Eingang des WS2812B LED-Streifens
  • Pin A0 → Signal-Ausgang des Sharp IR-Sensors
  • GND → Gemeinsame Masse mit Netzteil und Sensor
  • 5V → Nur für Sensor, nicht für LED-Streifen!

Sharp GP2Y0A02YK0F

  • VCC → 5V vom Mega2560
  • GND → GND vom Mega2560
  • Signal → A0 am Mega2560

WS2812B (45 LEDs)

  • +5V → +5V vom externen Netzteil
  • GND → GND vom Netzteil UND GND vom Mega2560
  • Data In → Pin 6 am Mega2560 (ggf. über 330 Ω Widerstand)

Netzteil (5V, mind. 3A)

  • +5V → direkt zum LED-Streifen
  • GND → gemeinsam mit LED-Streifen und Mega2560 verbinden

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);
  
  }

, , ,
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.