Wie funktioniert ein SR04 Sensor,
In das Programm wollen wir die Entfernung eines Objekts vor der Ultraschall-Sensor zu berechnen. Dieser Sensor kann einen "Ping" zu einem bestimmten Zeitpunkt senden und empfangen der Ping-Befehl wieder auf die Beine auf ein Objekt an einem anderen beliebigen Zeitpunkt.
Ein Ping ist nichts anderes als ein Klang, der für die Menschen hören nicht hörbar ist und deshalb ist dieser Sensor "Ultraschall" genannt wird.
Der Sensor senden Sie ein Ping-Signal an eine Zeit t1 und den springenden Ping auf eine Zeit t2 zu erhalten.
Zu wissen, die Geschwindigkeit des Schalls, der Zeit Unterschied Δt = t2 - t1 geben uns eine Vorstellung von der Entfernung eines Objekts.
Beispiel, wenn Δt = 500 Mikrosekunden, wir wissen, es dauerte 250 Mikrosekunden für den Ping, ein Objekt zu schlagen und eine weitere 250 Mikrosekunden zurückzukommen.
Die ungefähre Geschwindigkeit des Schalls in trockener Luft wird durch die Formel gegeben:
c = 331.5 + 0,6 * [Lufttemperatur in Grad Celsius]
Bei 20° C, C = 331.5 + 0,6 * 20 = 343,5 m/s
Wenn wir die Geschwindigkeit in Zentimetern pro Mikrosekunden konvertieren, erhalten wir:
c = 343,5 * 100 / 1000000 = 0,03435 cm/ss
Die Entfernung ist daher D = (Δt/2) * c
oder D = 250 * 0.03435 = 8,6 cm
Anstelle von Speed of Sound, können wir auch die "Pace of Sound".
Das Tempo der Sound = 1 / Geschwindigkeit des Klangs = 1 / 0.03435 = 29,1 ss/cm
In diesem Fall werden Sie die Gleichung zur Berechnung der Entfernung: D = (Δt/2) / Tempo des Klangs
und für das obige Beispiel: D = 250 / 29,1 = 8,6 cm
Lets Start! Hier ist der Code!
_______________________________________________________________________________________________
enthalten Sie die Bibliothekscode:
#include
#define TrigPin 0
#define EchoPin 7
initialisieren Sie die Bibliothek mit den Nummern der Schnittstelle pins
LiquidCrystal lcd (2, 1, 5, 4, 3, 2);
void setup() {}
PinMode (TrigPin, Ausgang);
PinMode (EchoPin, Eingabe);
}
void loop() {}
setzen Sie den Cursor in Spalte 0, Zeile 1
(Hinweis: Zeile 1 ist die zweite Zeile, da die Zählung mit 0 beginnt):
lcd.setCursor (0, 1);
Drucken Sie die Anzahl der Sekunden seit dem Reset:
Int Dauer, Distanz;
DigitalWrite (TrigPin, HIGH);
delayMicroseconds(1000);
DigitalWrite (TrigPin, LOW);
Dauer = PulseIn (EchoPin, HIGH);
Abstand = (Dauer/2) / 29,1;
Wenn (Abstand > = 200 || Abstand < = 0) {}
LCD.Print ("Wobot: D");
}
Else {}
LCD.Print(Distance);
LCD.Print ("cm");
}
Delay(500);
}
________________________________________________________________________________________________
Dieses wird Haken bis zu Ihrem 16 X 2 LCD-Anzeige und Druck der Abstand
Haken, LCD, RS = Pin 2 E = Pin 1 D4 = Pin 5 D5 = Pin4 D6 = Pin 3 D7 = Pin 2
SR04 Trigger auf Pin 0
SR04 Echo auf Pin 7
Ich hoffe, das hilft!
dieser Code verwendet nicht das LCD-Display, sondern druckt die CM-Lesungen in den Serial Monitor unter Extras auf der Arduino Programm Loader.
________________________________________________________________________________________
/*
HC-SR04 Ping Distanzsensor]
VCC auf Arduino 5v GND mit Arduino GND
Echo auf Arduino pin 13 Trig Arduino Pin 12
Mehr Infos unter: http://goo.gl/kJ8Gl
*/
#define TrigPin 0
#define EchoPin 7
void setup() {}
Serial.Begin (9600);
PinMode (TrigPin, Ausgang);
PinMode (EchoPin, Eingabe);
}
void loop() {}
Int Dauer, Distanz;
DigitalWrite (TrigPin, HIGH);
delayMicroseconds(1000);
DigitalWrite (TrigPin, LOW);
Dauer = PulseIn (EchoPin, HIGH);
Abstand = (Dauer/2) / 29,1;
Wenn (Abstand > = 200 || Abstand < = 0) {}
Serial.println ("out of Range");
}
Else {}
Serial.Print(Distance);
Serial.println ("cm");
}
Delay(500);
}
_____________________________________________________________________________________________