I dette prosjektet vil jeg introdusere deg til HC-SR04 Ultrasonisk sensor. Det fungerer ved å sende lydbølger fra senderen, som deretter sprette ut av et objekt og deretter gå tilbake til den mottakeren. Du kan finne ut hvor langt unna noe som er av den tiden det tar for lydbølger til å komme tilbake til sensoren. La oss få rett til det!,

Tilkoblinger

tilkoblinger er veldig enkle:

  • VCC til 5V
  • til GND GND
  • Trigonometri til pinne 9
  • Echo til pinne 10

Du kan faktisk koble Trigonometriske og Ekko til den pinner du vil, 9 og 10 er bare de jeg bruker.

Diagram (I Tinkercad det var bare en Ping -))) sensor så jeg måtte redigere)

Kode

vi Først definere pinner som Trigonometri og Echo er koblet til.,

const int trigPin = 9; const int echoPin = 10;

Så vi erklærer 2 flyter, varighet og avstand, som vil holde lengden av lydbølge og hvor langt unna motivet er.

float duration, distance; 

Neste, i oppsett, vi erklærer de Trigonometriske pin-koden som en utgang, Echo-pin-koden som en inngang, og start Seriell kommunikasjon.

void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } 

Nå, i loop, hva vi gjør er å først sette trigPin lave for 2 mikrosekunder bare for å sørge for at pin-koden i lave første., Så, vi sette den høyt for 10 mikrosekunder, som sender ut en 8 syklus sonic utbrudd fra senderen, som deretter spretter av et objekt og treffer mottakeren(Som er koblet til Echo Pin-kode).

Når lydbølgene treffer mottakeren, det viser Echo pin for høy imidlertid lenge bølgene var på reise. For å få det, kan vi bruke en hendig Arduino funksjon kalt pulseIn(). Det tar 2 argumenter, pin-kode som du lytter til(I vårt tilfelle, Echo-pin), og en state(HØY eller LAV)., Hva funksjonen gjør, er å vente for pin for å gå uansett hvilken tilstand du putter i, starter timing, og så stopper timing når det går over til annen stat. I vårt tilfelle ville vi sette HØYT, fordi vi ønsker å starte tidtakingen når Ekkoet pin går høy. Vi vil lagre tiden i varighet-variabel. (Det gir tid i mikrosekunder)

duration = pulseIn(echoPin, HIGH); 

Nå som vi har tid, vi kan bruke ligningen fart = avstand/tid, men vi vil gjøre det på tide x fart = avstand fordi vi har hastigheten. Hvilken hastighet har vi? Lydens hastighet, selvfølgelig!, Lydens hastighet er ca 340 meter per sekund, men siden pulseIn () – funksjonen returnerer tid i mikrosekunder, vi må ha en hastighet i mikrosekunder også, som er lett å få. Et raskt Google-søk for «speed of sound i centimeter per mikrosekund» vil si at det er .0343 c/µS. Du kan gjøre regnestykket, men søker det er enklere. Likevel, med denne informasjonen, kan vi beregne avstand! Bare multiplisere varigheten av .0343 og deretter dele det med 2(Fordi lydbølgene reise til objektet OG tilbake). Vi vil lagre det på avstand variabel.,

distance = (duration*.0343)/2; 

resten er bare skrive ut resultatet til Serial Monitor.

 Serial.print("Distance: "); Serial.println(distance); delay(100); } 

Cover bilde av: Sparkfun