Med hjälp av en SR04
Hur fungerar en SR04 Sensor,
I programmet vill vi beräkna avståndet till ett objekt framför ultraljud sensorn. Denna sensor kan skicka en "ping" vid ett visst tillfälle och ta emot ping studsar tillbaka på ett objekt på en annan givet ögonblick.
En ping är ingenting annat än ett ljud som är ohörbart för den mänskliga hör därför denna sensor som kallas "ultrasonic".
Sensorn skicka en ping på en tid t1 och ta emot studsande ping på en tid t2.
Att veta som rusas av solitt, tid skillnaden Δt = t2 - t1 kan ge oss en uppfattning om avståndet till ett objekt.
Exempel om Δt = 500 mikrosekunder, vi vet det tog 250 mikrosekunder ping att slå ett objekt och en annan 250 mikrosekunder att komma tillbaka.
Ungefärliga som rusas av solitt, torr luft ges av formeln:
c = 331.5 + 0,6 * [air temperatur i grader Celsius]
Vid 20° C, c = 331.5 + 0,6 * 20 = 343.5 m/s
Om vi omvandla hastigheten i centimeter per mikrosekunder får vi:
c = 343.5 * 100 / 1000000 = 0.03435 cm/ss
Avståndet är därför D = (Δt/2) * c
eller D = 250 * 0.03435 = 8,6 cm
Istället för att använda Speed of Sound, kan vi också använda "Tempo of Sound".
Takten i ljud = 1 / hastighet av ljud = 1 / 0.03435 = 29,1 ss/cm
I detta fall ekvationen att beräkna avståndet bli: D = (Δt/2) / tempo av ljud
och för exemplet ovan: D = 250 / 29,1 = 8,6 cm
Kan börja! Här är koden!
_______________________________________________________________________________________________
inkludera bibliotek-koden:
#include
#define trigPin 0
#define echoPin 7
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (2, 1, 5, 4, 3, 2);
void setup() {
pinMode (trigPin, produktionen);
pinMode (echoPin, ingång);
}
void loop() {
ställa markören till kolumn 0, linje 1
(Obs: linje 1 är den andra raden, sedan räknar börjar med 0):
lcd.setCursor (0, 1);
skriva ut antalet sekunder sedan återställning:
int varaktighet, avstånd;
digitalWrite (trigPin, hög);
delayMicroseconds(1000);
digitalWrite (trigPin, låg);
längd = pulseIn (echoPin, hög);
avståndet = (längd/2) / 29,1;
om (avstånd > = 200 || avstånd < = 0) {
LCD.Print ("Wobot: D");
}
annat {
LCD.Print(Distance);
LCD.Print ("cm");
}
Delay(500);
}
________________________________________________________________________________________________
Den här kommer att ansluta till din 16 X 2 LCD och skriv ut avståndet
koppla upp LCD till RS = Pin 2 E = Pin 1 D4 = Pin 5 D5 = Pin4 D6 = Pin 3 D7 = Pin 2
SR04-Utlösare till Pin 0
SR04 Echo till stift 7
Jag hoppas att detta hjälper!
denna kod använder inte LCD, men skriver CM avläsningarna i följetong monitor under verktyg på Arduino programmet lastaren.
________________________________________________________________________________________
/*
HC-SR04 Ping avstånd sensor]
VCC till arduino 5v GND till arduino GND
ECHO till Arduino stift 13 Trig till Arduino stift 12
Mer info på: http://goo.gl/kJ8Gl
*/
#define trigPin 0
#define echoPin 7
void setup() {
Serial.BEGIN (9600);
pinMode (trigPin, produktionen);
pinMode (echoPin, ingång);
}
void loop() {
int varaktighet, avstånd;
digitalWrite (trigPin, hög);
delayMicroseconds(1000);
digitalWrite (trigPin, låg);
längd = pulseIn (echoPin, hög);
avståndet = (längd/2) / 29,1;
om (avstånd > = 200 || avstånd < = 0) {
Serial.println ("out of range");
}
annat {
Serial.Print(Distance);
Serial.println ("cm");
}
Delay(500);
}
_____________________________________________________________________________________________