#include <LiquidCrystal_I2C.h>
#define trig 8
#define echo 7
#define led_rot 12
#define led_gelb 11
#define led_gruen 10
LiquidCrystal_I2C lcd_1(0x27,20,4);
float abstand = 0.0;
void setup() {
Serial.begin(115200);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(led_rot, OUTPUT);
pinMode(led_gelb, OUTPUT);
pinMode(led_gruen, OUTPUT);
lcd_1.init();
lcd_1.backlight();
}
float readdistanceCM() {
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
abstand = pulseIn(echo, HIGH) / 58.0;
return abstand;
}
void loop() {
float distance = readdistanceCM();
lcd_1.setCursor(7,0);
delay(1000);
// LEDs steuern
if (distance < 30) {
// Weniger als 30 cm
setLEDs(HIGH, LOW, LOW);
lcd_1.print(distance);
delay(1000);
} else if (distance < 60) {
// Zwischen 30 cm und 60 cm
setLEDs(LOW, HIGH, LOW);
lcd_1.print(distance);
} else {
// Mehr als 60 cm
setLEDs(LOW, LOW, HIGH);
lcd_1.print(distance);
}
delay(2000);
}
// Funktion, um die LEDs zu setzen
void setLEDs(bool stateRot, bool stateGelb, bool stateGruen) {
digitalWrite(led_rot, stateRot);
digitalWrite(led_gelb, stateGelb);
digitalWrite(led_gruen, stateGruen);
}