50 lines
2.1 KiB
C++
50 lines
2.1 KiB
C++
//----- Werte für den Ultraschallsensor -----
|
|
#define US_TRIG 12 // Pin an dem der TRIG Pin des Ultraschallsensor angeschlossen ist. 'GPIO' muss man weglassen -> also z.B. nicht GPIO88 sondern nur 88.
|
|
#define US_ECHO 14 // Pin an dem der ECHO Pin des Ultraschallsensor angeschlossen ist. 'GPIO' muss man weglassen -> also z.B. nicht GPIO88 sondern nur 88.
|
|
|
|
long abstand_cm, echo_dauer;
|
|
|
|
void setup() {
|
|
// Monitor
|
|
Serial.begin(115200); // Serial Monitor aktivieren. Mit dem Monitor kann man sich Werte und Meldungen anzeigen lassen.
|
|
|
|
// Ultraschallsensor
|
|
pinMode(US_TRIG, OUTPUT); // Ultraschallsensor: TRIG ist ein Ausgangspin. Es wird ein Signal zum Ultraschallsensor gesendet
|
|
pinMode(US_ECHO, INPUT); // Ultraschallsensor: ECHO ist ein Eingangspin. Es wird ein Signal vom Ultraschallsensor empfangen
|
|
}
|
|
|
|
void loop() {
|
|
|
|
AbstandMessen();
|
|
|
|
}
|
|
|
|
//-------------- Funktionen und Prozeduren -------------------------
|
|
|
|
long AbstandMessen(void){
|
|
long abstand_cm,echo_dauer;
|
|
// Messung starten - ein kurzer Pulse "HIGH" wird zum TRIG pin des Ultraschallsensors geschickt
|
|
digitalWrite(US_TRIG,LOW);
|
|
delayMicroseconds(2);
|
|
digitalWrite(US_TRIG,HIGH);
|
|
delayMicroseconds(10);
|
|
digitalWrite(US_TRIG,LOW);
|
|
|
|
// Messung der Dauer in Mikrosekundenmeasure bis das ECHO Pin vom Ultraschallsensor HIGH wird
|
|
echo_dauer = pulseIn(US_ECHO,HIGH);
|
|
|
|
// convert into cm ... 344m/sec is the speed of noise - thus 34400cm/sec ... or 34,400cm/milisec ... or 0,0344cm/microsec
|
|
// the echo has to go the distance twice - forth and back - so the duration has to be the half of the measured one
|
|
// distance_cm = echo_duration/2 * 0,0344 or distance_cm = echo_duration/2 / 29,1 or distance_cm = echo_duration * 0,0172
|
|
// distance_cm = (echo_duration/2) / 29.1;
|
|
abstand_cm = echo_dauer * 0.0172;
|
|
|
|
//Messwert am Monitor anzeigen
|
|
Serial.print("ABSTAND_MESSEN. Der Abstand in cm ist:");
|
|
Serial.println(abstand_cm);
|
|
|
|
//Kurz warten, bevor evetuell wieder eine Messung startet
|
|
delay(250);
|
|
|
|
return(abstand_cm);
|
|
}
|