// Angeschlossene LEDs.
int LED_GELB = 8;
int LED_ROT = 9;
int LED_BLAU = 10;
int LED_GRUEN = 11;
// Pins für den Sensor.
int TRIG_PIN = 2;
int ECHO_PIN = 3;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_GELB, OUTPUT);
pinMode(LED_ROT, OUTPUT);
pinMode(LED_BLAU, OUTPUT);
pinMode(LED_GRUEN, OUTPUT);
}
void loop() {
// Speichern, wie lange der Schall unterwegs ist.
long zeit;
// Speichern des gemessenen Abstandes.
long abstand;
// Wir messen den Abstand zum nächsten Objekt.
digitalWrite(TRIG_PIN, LOW); // Lautsprecher aus.
delay(2);
digitalWrite(TRIG_PIN, HIGH); // Lautsprecher gibt Ton aus.
delay(10);
digitalWrite(TRIG_PIN, LOW); // Lautsprecher aus.
zeit = pulseIn(ECHO_PIN, HIGH); // Hier wird gemessen, wann das Mikrofon den
// Ton hört.
abstand = zeit * 0.034 / 2; // Umrechnung des Abstands von Zeit in
// Zentimeter.
if (abstand < 25) { // Wenn der Abstand kleiner als 25 Zentimeter ist...
digitalWrite(LED_ROT, HIGH); // ... schalte die rote LED an,
// und alle anderen LEDs aus.
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_BLAU, LOW);
digitalWrite(LED_GRUEN, LOW);
} else if (abstand < 100) { // Größer als 25 cm und kleiner als 1m...
digitalWrite(LED_GELB, HIGH); // ... schalte die gelbe LED an,
// und alle anderen LEDs aus.
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_BLAU, LOW);
digitalWrite(LED_GRUEN, LOW);
} else if (abstand < 200) { // Größer als 1m und kleiner als 2m...
digitalWrite(LED_GRUEN, HIGH); // ... schalte die grüne LED an,
// und alle anderen LEDs aus.
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_BLAU, LOW);
digitalWrite(LED_GELB, LOW);
} else if (abstand < 300) { // Größer als 2m und kleiner als 3m...
digitalWrite(LED_BLAU, HIGH); // ... schalte die blaue LED an,
// und alle anderen LEDs aus.
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, LOW);
} else { // Sonst, wenn die Entfernung größer als 3m, schalte alle LEDs aus.
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_BLAU, LOW);
digitalWrite(LED_GRUEN, LOW);
}
}
Deine Messbahn ist wohl nicht ganz frei von Hindernissen, welche der
Sensor als solche erkennt und deshalb eine wechselnde Entfernung angibt.
Sorge für eine freie Messbahn, um, vor allem für die grüne und blaue
LED, genauere Ergebnisse zu erzielen. Stehe zudem gerade und ruhig beim
Messen oder stelle das Gerät auf eine feste Unterlage, denn schon durch
leichtes Ruckeln werden andere Bereiche erkannt und somit andere Werte
gemessen.