#include "Arduino_LED_Matrix.h" # define PIN_TRIGGER 9 // Pin 9: PIN_TRIGGER # define PIN_ECHO 8 // Pin 8 Empfang // LED-Matrix leer initialisieren byte led_frame[8][12] = {0}; ArduinoLEDMatrix matrix; int maxDistance = 20; // Funktion, um die LED-Höhe basierend auf der gemessenen Entfernung zu berechnen int calc_LED_Height(int distance) { // Begrenze die Entfernung auf die maximale Entfernung if (distance > maxDistance) { distance = maxDistance; } // Berechne die Höhe der LEDs int ledHeight = (distance * 8) / maxDistance; return ledHeight; } void setup() { pinMode(PIN_TRIGGER, OUTPUT); pinMode(PIN_ECHO, INPUT); Serial.begin(9600); matrix.begin(); } int count = 0; // Spaltenzähler in der LED-Matrix // scroll the frame one column to the left void scroll_matrix() { for(int col=1; col < 12;col++) { for(int row = 0;row <8;row++) { led_frame[row][col-1] = led_frame[row][col]; } } } // draw the LED frame void draw_matrix(int leds, int count) { if(count == 12) { scroll_matrix(); } for(int l =7;l >leds; l--) { led_frame[l][count] = 1; } matrix.renderBitmap(led_frame, 8, 12); } void loop() { long distance = 0; // Signalstörungen vermeiden, daher einmal kurz Trigger auf LOW digitalWrite(PIN_TRIGGER, LOW); delay(5); // Signal PIN_TRIGGER digitalWrite(PIN_TRIGGER, HIGH); delayMicroseconds(10); digitalWrite(PIN_TRIGGER, LOW); // pulseIn -> Signallaufzeit messen long Zeit = pulseIn(PIN_ECHO, HIGH); // distance in cm berechnen distance = (Zeit / 2) * 0.03432; // distance anzeigen Serial.print("distance in cm: "); Serial.println(distance); // Anzahl der LEDs in der Spalte berechnen int leds = calc_LED_Height(distance); // Matrix neuzeichnen draw_matrix(leds,count); delay(1000); if( count < 12) { // maximal 12 Spalten, danach wird gescrollt. count++; } }