Comment un capteur SR04 fonctionne,
Au programme, nous voulons calculer la distance d’un objet devant le capteur ultrasonique. Ce capteur permet d’envoyer un « ping » à un moment donné et recevoir le ping rebondir sur un objet à un autre moment donné.
Un ping n’est rien d’autre qu’un son qui est inaudible pour les humains entendent et c’est pourquoi ce capteur est appelé « ultrason ».
Le capteur envoyer un ping à un instant t1 et recevoir le ping qui rebondit à un temps t2.
Connaissant la vitesse du son, le Δt de différence de temps = t2 - t1 peut nous donner une idée de la distance d’un objet.
Exemple, si Δt = 500 microsecondes, nous savons qu’il a fallu 250 microsecondes pour le ping de frapper un objet et un autre 250 microsecondes d’y revenir.
La vitesse approximative du son dans l’air sec est donnée par la formule :
c = 331,5 + 0,6 * [température en degrés Celsius de l’air]
À 20° C, c = 331,5 + 0,6 * 20 = 343,5 m/s
Si nous convertir la vitesse en centimètres par microsecondes, on obtient :
c = 343,5 * 100 / 1000000 = 0,03435 cm/ss
La distance est donc D = (Δt/2) * c
ou D = 250 * 0.03435 = 8,6 cm
Au lieu d’utiliser le Speed of Sound, nous pouvons aussi utiliser le "rythme of Sound".
Le rythme du son = 1 / vitesse du son = 1 / 0.03435 = 29,1 ss/cm
Dans ce cas devenir l’équation pour calculer la distance: D = (Δt/2) / allure du son
et pour l’exemple ci-dessus: D = 250 / 29.1 = 8,6 cm
Permet de démarrer ! Voici le code !
_______________________________________________________________________________________________
inclure le code de bibliothèque :
#include
#define trigPin 0
#define echoPin 7
initialiser la bibliothèque avec les numéros des broches interface
Innovente lcd (2, 1, 5, 4, 3, 2) ;
void setup() {}
pinMode (trigPin, sortie) ;
pinMode (echoPin, entrée) ;
}
void loop() {}
régler le curseur sur la colonne 0, ligne 1
(Remarque : la ligne 1 est la seconde ligne, puisque le décompte commence par 0) :
lcd.setCursor (0, 1) ;
imprimer le nombre de secondes depuis le reset :
int durée, distance ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trigPin, basse) ;
durée = pulseIn (echoPin, HIGH) ;
distance = (durée/2) / 29,1 ;
Si (distance > = 200 || distance < = 0) {}
LCD.Print ("Wobot: D") ;
}
else {}
LCD.Print(distance) ;
LCD.Print ("cm") ;
}
Delay(500) ;
}
________________________________________________________________________________________________
Celui-ci sera le raccorder à votre 16 X 2 LCD et imprimer la distance
Hook Up LCD à RS = broche 2 E = Pin 1 D4 = Pin 5 D5 = Pin4 D6 = Pin 3 D7 = broche 2
SR04 Déclencheur à broche 0
SR04 Echo à broche 7
J’espère que cela aide !
Ce code n’utilise pas l’écran LCD, mais imprime les lectures de CM dans le Serial monitor sous outils sur le chargeur de programme Arduino.
________________________________________________________________________________________
/*
Capteur de distance HC-SR04 Ping]
VCC à arduino 5v GND pour arduino GND
ECHO à Arduino pin 13 Trig pour Arduino axe 12
Plus d’infos sur : http://goo.gl/kJ8Gl
*/
#define trigPin 0
#define echoPin 7
void setup() {}
Serial.Begin (9600) ;
pinMode (trigPin, sortie) ;
pinMode (echoPin, entrée) ;
}
void loop() {}
int durée, distance ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(1000) ;
digitalWrite (trigPin, basse) ;
durée = pulseIn (echoPin, HIGH) ;
distance = (durée/2) / 29,1 ;
Si (distance > = 200 || distance < = 0) {}
Serial.println ("out of range") ;
}
else {}
Serial.Print(distance) ;
Serial.println ("cm") ;
}
Delay(500) ;
}
_____________________________________________________________________________________________