În acest proiect voi prezenta la HC-SR04 senzor Ultrasonic. Acesta funcționează prin trimiterea undelor sonore de la emițător, care apoi sări de pe un obiect și apoi a reveni la receptor. Puteți determina cât de departe este ceva până la momentul necesar pentru ca undele sonore să se întoarcă la senzor. Să trecem la treabă!,conexiunile sunt foarte simple:

  • VCC la 5V
  • GND la GND
  • Trig la pin 9
  • Echo La pin 10

puteți conecta de fapt Trig și Echo la oricare dintre pinii pe care doriți, 9 și 10 sunt doar cele pe care le folosesc.

Diagrama (În Tinkercad nu a fost doar un Ping))) senzorul asa ca am avut de a edita)

Codul

în Primul rând vom defini ace Trigonometrie și Echo sunt conectate.,

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

apoi declarăm 2 flotoare, durata și distanța, care vor ține lungimea undei sonore și cât de departe este obiectul.

float duration, distance; 

apoi, în configurare, declarăm pinul Trigonometric ca ieșire, pinul Echo ca intrare și pornim comunicațiile seriale.

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

Acum, în buclă, ceea ce facem noi este în primul rând stabilit trigPin scăzută timp de 2 microsecunde doar să asigurați-vă că pin-ul în low prima., Apoi, l-am setat la 10 microsecunde, ceea ce trimite o explozie sonică de 8 cicluri de la emițător, care apoi ricoșează un obiect și lovește receptorul(care este conectat la pinul ecou).

atunci când undele sonore lovit receptor, se transformă Echo pin mare pentru oricât de mult timp valurile au fost călătoresc pentru. Pentru a obține acest lucru, putem folosi o funcție Arduino la îndemână numită pulseIn (). Este nevoie de 2 argumente, pin-ul pe care îl ascultați(în cazul nostru, Echo pin) și o stare (înaltă sau joasă)., Ceea ce face funcția este așteaptă ca pinul să meargă în orice stare pe care o puneți, începe sincronizarea și apoi oprește sincronizarea atunci când trece la cealaltă stare. În cazul nostru, ne-ar pune mare, deoarece vrem să înceapă calendarul atunci când pinul Echo merge mare. Vom stoca timpul în variabila de durată. (Returneaza timpul in microsecunde)

duration = pulseIn(echoPin, HIGH); 

acum ca avem timpul, putem folosi ecuatia speed = distance/time, dar o vom face timp X speed = distance pentru ca avem viteza. Ce viteză avem? Viteza sunetului, desigur!, Viteza sunetului este de aproximativ 340 de metri pe secundă, dar din moment ce funcția pulseIn () returnează timpul în microsecunde, va trebui să avem și o viteză în microsecunde, care este ușor de obținut. O căutare rapidă pe Google pentru „viteza sunetului în centimetri pe microsecundă” va spune că este .0343 c / µS. Ai putea face matematica, dar căutarea este mai ușoară. Oricum, cu această informație, putem calcula distanța! Doar înmulțiți durata cu .0343 și apoi împărțiți-l cu 2 (deoarece undele sonore călătoresc către obiect și înapoi). Vom stoca asta în variabila de distanță.,

distance = (duration*.0343)/2; 

restul este doar imprimarea rezultatelor pe monitorul Serial.

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

Cover image by: Sparkfun