In dit project zal ik u voorstellen aan de HC-SR04 Ultrasone sensor. Het werkt door het verzenden van geluidsgolven van de zender, die dan weerkaatsen van een object en dan terug te keren naar de ontvanger. Je kunt bepalen hoe ver weg iets is tegen de tijd dat het duurt voordat de geluidsgolven terug naar de sensor gaan. Laten we ter zake komen!,

verbindingen

de verbindingen zijn zeer eenvoudig:

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

U kunt Trig en Echo eigenlijk verbinden met welke pins u wilt, 9 en 10 zijn alleen degene die ik gebruik.

Diagram (In Tinkercad er was alleen een Ping))) sensor, dus ik moest bewerken dat)

Code

ten Eerste definiëren we de pinnen die Trigonometrie en Echo zijn verbonden.,

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

dan verklaren we 2 floats, duur en afstand, die de lengte van de geluidsgolf en hoe ver weg het object zal houden.

float duration, distance; 

vervolgens verklaren we in de setup de Trig-pin als uitvoer, De Echo-pin als invoer en starten we seriële communicatie.

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

nu, in de lus, zetten we eerst de trigPin laag voor 2 microseconden om er zeker van te zijn dat de pin eerst laag is., Vervolgens zetten we het hoog voor 10 microseconden, die stuurt een 8-cyclus sonische uitbarsting van de zender, die vervolgens stuitert van een object en raakt de ontvanger(die is aangesloten op de Echopin).

wanneer de geluidsgolven de ontvanger raken, wordt de Echopin hoog voor hoe lang de golven ook onderweg waren. Om dat te krijgen, kunnen we een handige Arduino functie genaamd pulseIn () gebruiken. Er zijn 2 argumenten nodig, de pin waar je naar luistert(in ons geval de Echo pin), en een toestand(hoog of laag)., Wat de functie doet is wachten op de pin om te gaan welke staat u in, start timing, en stopt timing wanneer het Schakelt naar de andere staat. In ons geval zouden we hoog zetten omdat we willen beginnen met de timing wanneer de Echopin hoog gaat. We slaan de tijd op in de duurvariabele. (Het geeft de tijd in microseconden terug)

duration = pulseIn(echoPin, HIGH); 

nu we de tijd hebben, kunnen we de vergelijking speed = afstand/tijd gebruiken, maar we maken het tijd x speed = afstand Omdat we de snelheid hebben. Welke snelheid hebben we? De snelheid van het geluid, natuurlijk!, De geluidssnelheid is ongeveer 340 meter per seconde, maar aangezien de functie pulseIn () de tijd in microseconden retourneert, moeten we ook een snelheid in microseconden hebben, wat gemakkelijk te krijgen is. Een snelle Google-zoekopdracht voor “snelheid van het geluid in centimeters per microseconde” zal zeggen dat het is .0343 c / µS. Je zou de wiskunde kunnen doen, maar zoeken is makkelijker. Hoe dan ook, met die informatie kunnen we de afstand berekenen! Vermenigvuldig de duur met .0343 en dan delen door 2 (Omdat de geluidsgolven reizen naar het object en terug). We slaan dat op in de afstandsvariabele.,

distance = (duration*.0343)/2; 

de rest is gewoon het afdrukken van de resultaten naar de seriële Monitor.

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

Cover image by: Sparkfun