Hoe werkt een SR04 Sensor,
In het programma, die wij willen berekenen van de afstand van een object voor de ultrasone sensor. Deze sensor kan een "ping" op een gegeven moment te sturen en ontvangen van de ping stuiteren terug op een object op een ander moment gegeven.
Een ping is niets anders dan een geluid dat is onhoorbaar voor de mens horen en dit is waarom deze sensor "ultrasone" wordt genoemd.
De sensor een ping te sturen op een tijd t1 en de stuiterende ping op een tijd t2 ontvangen.
Te weten de snelheid van het geluid, de tijd verschil Δt = t2 - t1 kan geven ons een idee van de afstand van een object.
Bijvoorbeeld als Δt = 500 microseconden, we weten het duurde 250 microseconden voor de ping te raken van een object en een andere 250 microseconden terug te komen.
De geschatte snelheid van het geluid in de droge lucht wordt gegeven door de formule:
c = 331.5 + 0,6 * [lucht temperatuur in graden Celsius]
Bij 20° C, c = 331.5 + 0,6 * 20 = 343.5 m/s
Als we de snelheid in centimeters per microseconden omzetten krijgen we:
c = 343.5 * 100 / 1000000 = 0.03435 cm/ss
De afstand is dus D = (Δt/2) * c
of D = 250 * 0.03435 = 8.6 cm
In plaats van de snelheid van geluid, kunnen we ook de "tempo of Sound" gebruiken.
Het tempo van het geluid = 1 / snelheid van geluid = 1 / 0.03435 = 29.1 ss/cm
In dit geval de vergelijking voor het berekenen van de afstand is geworden: D = (Δt/2) / tempo van geluid
en voor het voorbeeld hierboven: D = 250 / 29.1 = 8.6 cm
Laat start! Hier is de code!
_______________________________________________________________________________________________
de code van de bibliotheek omvatten:
#include
#define trigPin 0
#define echoPin 7
initialiseren van de bibliotheek met de nummers van de pennen van de interface
LiquidCrystal lcd (2, 1, 5, 4, 3, 2);
VOID Setup {}
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
}
void loop {}
Stel de cursor op de kolom 0, lijn 1
(Opmerking: lijn 1 is de tweede rij, aangezien tellen met 0 begint):
lcd.setCursor (0, 1);
het aantal seconden sinds reset afdrukken
int duur, afstand;
digitalWrite (trigPin, hoge);
delayMicroseconds(1000);
digitalWrite (trigPin, laag);
duur = pulseIn (echoPin, hoge);
afstand = (duur/2) / 29.1;
Als (afstand > = 200 || afstand < = 0) {}
LCD.Print ("Wobot: D");
}
else {}
LCD.Print(distance);
LCD.Print ("cm");
}
delay(500);
}
________________________________________________________________________________________________
Deze zal aansluiten op uw 16 X 2 LCD en print de afstand
Hook Up LCD RS = Pin 2 E = Pin 1 D4 D5 van Pin 5 = = Pin4 D6 = Pin 3 D7 = Pin 2
SR04 Trigger aan op Pin 0
SR04 Echo naar Pin 7
Ik hoop dat dit helpt!
Deze code maakt geen gebruik van het LCD-scherm, maar de CM-lezingen in de seriële monitor onder Hulpmiddelen op de Arduino programma loader afgedrukt.
________________________________________________________________________________________
/*
HC-SR04 Ping afstandssensor]
VCC aan arduino 5v op de arduino GND GND
ECHO aan Arduino pin 13 Trig Arduino pin 12
Meer info op: http://goo.gl/kJ8Gl
*/
#define trigPin 0
#define echoPin 7
VOID Setup {}
Serial.begin (9600);
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
}
void loop {}
int duur, afstand;
digitalWrite (trigPin, hoge);
delayMicroseconds(1000);
digitalWrite (trigPin, laag);
duur = pulseIn (echoPin, hoge);
afstand = (duur/2) / 29.1;
Als (afstand > = 200 || afstand < = 0) {}
Serial.println ("buiten het bereik");
}
else {}
Serial.Print(distance);
Serial.println ("cm");
}
delay(500);
}
_____________________________________________________________________________________________