i det här projektet kommer jag att presentera dig för HC-SR04 ultraljudssensor. Det fungerar genom att skicka ljudvågor från sändaren, som sedan studsa av ett objekt och sedan återgå till mottagaren. Du kan bestämma hur långt bort något är när det tar för ljudvågorna att komma tillbaka till sensorn. Låt oss få rätt till det!,anslutningar

anslutningarna är mycket enkla:

  • VCC till 5V
  • GND till GND
  • Trig till pin 9
  • Echo till pin 10

Du kan faktiskt ansluta Trig och Echo till vilka stift du vill, 9 och 10 är bara de jag använder.

Diagram (i Tinkercad fanns det bara en Ping))) sensor så jag var tvungen att redigera det)

kod

först definierar vi stiften som Trig och ECHO är anslutna till.,

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

då förklarar vi 2 flöten, varaktighet och avstånd, vilket kommer att hålla längden på ljudvågen och hur långt bort objektet är.

float duration, distance; 

i konfigurationen deklarerar vi Trig-stiftet som en utgång, Echo-stiftet som en ingång och startar seriell kommunikation.

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

nu, i slingan, vad vi gör är först ställa trigPin låg för 2 mikrosekunder bara för att se till att stiftet i låg först., Sedan ställer vi den högt för 10 mikrosekunder, som skickar ut en 8-cykel sonic burst från sändaren, som sedan studsar på ett objekt och träffar mottagaren(som är ansluten till Eko-stiftet).

När ljudvågorna träffar mottagaren blir det eko-stiftet högt under hur länge vågorna färdades för. För att få det kan vi använda en praktisk Arduino-funktion som heter pulseIn (). Det tar 2 argument, stiftet du lyssnar på(i vårt fall Echo-stiftet) och ett tillstånd (högt eller lågt)., Vad funktionen gör är väntar på att stiftet ska gå oavsett vilket tillstånd du lägger in, startar timing och stoppar sedan timing när den växlar till det andra tillståndet. I vårt fall skulle vi sätta högt eftersom vi vill börja timing när Eko pin går högt. Vi kommer att lagra tiden i tidsvariabeln. (Det returnerar tiden i mikrosekunder)

duration = pulseIn(echoPin, HIGH); 

Nu när vi har tid kan vi använda ekvationen speed = distance/time, men vi kommer att göra det time x speed = distance eftersom vi har hastigheten. Vilken hastighet har vi? Ljudets hastighet, förstås!, Ljudets hastighet är cirka 340 meter per sekund, men eftersom pulseIn () – funktionen returnerar tiden i mikrosekunder måste vi också ha en hastighet i mikrosekunder, vilket är lätt att få. En snabb Google-sökning efter ”ljudets hastighet i centimeter per mikrosekund” kommer att säga att det är .0343 c/µS. Du kan göra matten, men söka det är lättare. Hur som helst, med den informationen kan vi beräkna avståndet! Bara multiplicera varaktigheten med .0343 och sedan dela den med 2 (eftersom ljudvågorna reser till objektet och tillbaka). Vi kommer att lagra det i avståndsvariabeln.,

distance = (duration*.0343)/2; 

resten skriver bara ut resultaten till den seriella bildskärmen.

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

Täckbild av: Sparkfun