I dette projekt vil jeg introducere dig til HC-SR04 Ultrasonic sensor. Det virker ved at sende lydbølger fra senderen, som derefter hoppe ud af et objekt og derefter vende tilbage til modtageren. Du kan bestemme, hvor langt væk noget er, når det tager for lydbølgerne at komme tilbage til sensoren. Lad os få ret til det!,
Forbindelser
forbindelser er meget simpelt:
- VCC til 5V
- GND til GND
- Trig at pin 9
- Echo til ben 10
Du kan faktisk tilslutte Trig og Echo hvilket ben du ønsker, 9 og 10 er lige dem jeg bruger.
Koden
Først skal vi definere de pins, der Trig og Ekko er forbundet til.,
const int trigPin = 9; const int echoPin = 10;
derefter erklærer vi 2 flyder, varighed og afstand, som vil holde længden af lydbølgen og hvor langt væk objektet er.
float duration, distance;
dernæst i opsætningen erklærer vi Trig-pin ‘en som en udgang, ekko-pin’ en som en indgang og starter seriel kommunikation.
void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); }
nu, i løkken, hvad vi gør, er først at indstille trigPin lavt i 2 mikrosekunder bare for at sikre, at stiften er lav først., Derefter sætter vi det højt i 10 mikrosekunder, som sender en 8-cyklus sonisk burst fra senderen, som derefter hopper af et objekt og rammer modtageren(som er forbundet til ekko-Pin).
Når lydbølgerne rammer modtageren, bliver Ekkostiften høj, uanset hvor længe bølgerne rejste. For at få det kan vi bruge en praktisk Arduino-funktion kaldet pulseIn(). Det tager 2 argumenter, pin-koden du lytter til(i vores tilfælde Echo pin) og en tilstand (høj eller lav)., Hvad funktionen gør, er venter på, at stiften skal gå, hvilken tilstand du lægger i, starter timingen og stopper derefter timingen, når den skifter til den anden tilstand. I vores tilfælde ville vi sætte højt, da vi ønsker at starte timingen, når Echo pin går højt. Vi gemmer tiden i varighedsvariablen. (Det returnerer tiden i mikrosekunder)
duration = pulseIn(echoPin, HIGH);
nu hvor vi har tid, kan vi bruge ligningshastigheden = afstand/tid, men vi vil gøre det tid = hastighed = afstand, fordi vi har hastigheden. Hvilken hastighed har vi? Lydens hastighed, selvfølgelig!, 340 meter i sekundet, men da pulseIn () – funktionen returnerer tiden i mikrosekunder, skal vi også have en hastighed i mikrosekunder, hvilket er let at få. En hurtig Google-søgning efter “lydhastighed i centimeter pr .0343 c/µS. Du kan gøre matematikken, men det er lettere at søge det. Any !ay, med disse oplysninger, kan vi beregne afstanden! Bare multiplicer varigheden med .0343 og divider det derefter med 2 (fordi lydbølgerne rejser til objektet og tilbage). Vi gemmer det i afstandsvariablen.,
distance = (duration*.0343)/2;
resten udskriver bare resultaterne til den serielle skærm.
Serial.print("Distance: "); Serial.println(distance); delay(100); }
Cover billede af: Sparkfun
Skriv et svar