Eine bestimmte Distanz mit einem Ultraschallsensor erfassen und LED damit steuer

Guten Morgen
Ich habe in einem Tutorial eine ganz einfache Schaltung mit dem HC-SR04 gefunden. Ich habe sie nachgebaut und es hat alles funktioniert so dasss es mir eine Distanz in cm anzeigt. Danach kam mir aber eine Idee was wenn man damit eine LED steuern könnte aber nur bei einer bestimmten Distanz. Gedacht getan (mit meinem nicht sehr grossen Wissen übers programmieren) aber es funktioniert nicht. :frowning:

Bitte um Hilfe hier ist die Schaltung:#include "SR04.h"

#define TRIG_PIN 12
#define ECHO_PIN 11
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
int LED = 8;

void setup() {
   Serial.begin(9600);
   delay(1000);
   pinMode(LED,OUTPUT);
}

void loop() {
   a=sr04.Distance();
   Serial.print(a);
   Serial.println("cm");
   delay(1000);
   if (digitalRead(a) == 10)
   {
    digitalWrite(LED,HIGH); 
   }
}

Challenger

challenger:
Bitte um Hilfe hier ist die Schaltung:

Du meinst sicher den Sketch.

Das hier

  if (digitalRead(a) == 10)
{
digitalWrite(LED,HIGH); 
}

sollte so aussehen.

  if (a == 10)
{
digitalWrite(LED,HIGH); 
}
else
{
digitalWrite(LED,LOW); 
}

Danke viel mals ganu an dem lag es. :slight_smile:

challenger:
Danke viel mals ganu an dem lag es. :slight_smile:

Gerne...alles klar.

Bei solchen If Bedingungen ist es meist besser nicht auf eine genaue Zahl zu kontrollieren sondern auf einen Bereich.
zB:
if (a >= 10 && a<= 12)

Das ist vor allem bei Float-Zahlen notwendig da diese Prinzipbedingt eine bestimmte Ungenauigkeit haben. zB 3.0-2.0 ergibt nicht unbedingt 1.0 sondern 1,0001 oder 9,9995. (Zahlen erfunden. Diehnen nur zur Veranschaulichung des Problems)

Grüße Uwe

Die Angaben im Serial Monitor sind nicht im Float sonder in int also normale Zahle. Trotzdem Danke für den nützlichen Tipp:D