Go Down

Topic: Eine bestimmte Distanz mit einem Ultraschallsensor erfassen und LED damit steuer (Read 113 times) previous topic - next topic

challenger

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. :(

Bitte um Hilfe hier ist die Schaltung:#include "SR04.h"
Code: [Select]
#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
Intelligenz, behaupten die Intelligenten, ist die Fähigkeit, sich der Situation anzupassen.
Wenn du ein Buch verkehrt in die Hand genommen hast, lerne, es verkehrt zu lesen!

Wieslaw Brudzinski

HotSystems

Bitte um Hilfe hier ist die Schaltung:
Du meinst sicher den Sketch.

Das hier

Code: [Select]
 if (digitalRead(a) == 10)
{
digitalWrite(LED,HIGH);
}


sollte so aussehen.

Code: [Select]
 if (a == 10)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}


I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

challenger

Intelligenz, behaupten die Intelligenten, ist die Fähigkeit, sich der Situation anzupassen.
Wenn du ein Buch verkehrt in die Hand genommen hast, lerne, es verkehrt zu lesen!

Wieslaw Brudzinski

HotSystems

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

uwefed

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

challenger

Die Angaben im Serial Monitor sind nicht im Float sonder in int also normale Zahle. Trotzdem Danke für den nützlichen Tipp:D
Intelligenz, behaupten die Intelligenten, ist die Fähigkeit, sich der Situation anzupassen.
Wenn du ein Buch verkehrt in die Hand genommen hast, lerne, es verkehrt zu lesen!

Wieslaw Brudzinski

Go Up