In diesem Projekt werde ich Ihnen den HC-SR04 Ultraschallsensor vorstellen. Es funktioniert, indem Schallwellen vom Sender gesendet werden, die dann von einem Objekt abprallen und dann zum Empfänger zurückkehren. Sie können bestimmen, wie weit etwas entfernt ist, wenn die Schallwellen zum Sensor zurückkehren. Kommen wir gleich dazu!,
Verbindungen
Die verbindungen sind sehr einfach:
- VCC zu 5 V
- GND zu GND
- Trig zu pin 9
- Echo zu pin 10
Sie können tatsächlich verbinden Trig und Echo zu welchen pins sie wollen, 9 und 10 sind nur die, die ICH bin mit.
Code
Zuerst definieren wir die Pins, mit denen Trig und Echo verbunden sind.,
const int trigPin = 9; const int echoPin = 10;
Dann deklarieren wir 2 Floats, Dauer und Entfernung, die die Länge der Schallwelle und wie weit das Objekt entfernt ist.
float duration, distance;
Als nächstes deklarieren wir im Setup den Trig-Pin als Ausgang, den Echo-Pin als Eingang und starten die serielle Kommunikation.
void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); }
Jetzt, in der Schleife, setzen wir zuerst den trigPin für 2 Mikrosekunden niedrig, nur um sicherzustellen, dass der Pin zuerst niedrig ist., Dann stellen wir es für 10 Mikrosekunden hoch, was einen 8-Takt-Schallstoß vom Sender aussendet, der dann von einem Objekt springt und auf den Empfänger trifft(der mit dem Echopin verbunden ist).
Wenn die Schallwellen den Empfänger treffen, dreht er den Echopin hoch, so lange die Wellen unterwegs waren. Um das zu bekommen, können wir eine praktische Arduino-Funktion namens pulseIn () verwenden. Es werden 2 Argumente benötigt, der Pin, den Sie gerade hören(in unserem Fall der Echo-Pin), und ein Status(HOCH oder NIEDRIG)., Die Funktion wartet darauf, dass der Pin in den von Ihnen eingegebenen Zustand wechselt, startet das Timing und stoppt dann das Timing, wenn er in den anderen Zustand wechselt. In unserem Fall würden wir HOCH setzen, da wir mit dem Timing beginnen möchten, wenn der Echo-Pin hoch geht. Wir speichern die Zeit, in der Dauer variabel. (Es gibt die Zeit in Mikrosekunden zurück)
duration = pulseIn(echoPin, HIGH);
Jetzt, da wir die Zeit haben, können wir die Gleichung speed = distance/time, aber wir machen es Zeit x speed = distance weil wir die Geschwindigkeit haben. Welche Geschwindigkeit haben wir? Die Geschwindigkeit des Klangs, natürlich!, Die Schallgeschwindigkeit beträgt ungefähr 340 Meter pro Sekunde, aber da die Funktion pulseIn() die Zeit in Mikrosekunden zurückgibt, müssen wir auch eine Geschwindigkeit in Mikrosekunden haben, die leicht zu erreichen ist. Eine schnelle Google-Suche nach „Schallgeschwindigkeit in Zentimetern pro Mikrosekunde“ wird sagen, dass es so ist .0343 c/µS. Sie könnten rechnen, aber die Suche ist einfacher. Wie auch immer, mit diesen Informationen können wir die Entfernung berechnen! Multiplizieren Sie einfach die Dauer mit .0343 und teilen Sie es dann durch 2 (Weil die Schallwellen zum Objekt UND zurück wandern). Wir werden das in der Entfernungsvariablen speichern.,
distance = (duration*.0343)/2;
Der Rest druckt nur die Ergebnisse auf dem seriellen Monitor aus.
Serial.print("Distance: "); Serial.println(distance); delay(100); }
Titelbild von: Sparkfun
Schreibe einen Kommentar