Mesure de distance par capteur
US HC-SR04
affichage sur LCD et picaxe08M2
On trouve ces modules sous des formes diverses, à des prix très bas, 1 euro sur eBay, moins de 4 euros en France.
Certains ont, parait il, des problèmes de blocage en cas de dépassement de limite, celui des essais ci dessous, pas cher, ne présentait pas de défaut. Les modules récents ont probablement été corrigés.
De toute façon, le programme de test pallie ce défaut. Le programme ci dessous est celui proposé par Gotronic dans ce tuto, légèrement modifié pour un affichage sur LCD1602 série .
Datasheet HC-SR04
Le schéma: Le programme: Il intègre la procédure de reset automatique pour les modules défaillants, les autres fonctionnent aussi avec ce code.
' Essai 2 du capteur HC-SR04 à ultrasons-28.11.2015 L.Bachelard
' =================================================================
' Avec correction du HC-SR04 si la distance lue reste bloquée à 0
' J'ai trouvé sur internet le truc pour faire repartir le capteur :
' il faut lui appliquer une impulsion "low" de 100ms sur sa sortie "Echo"
#picaxe 08M2
#no_data
symbol trig=C.1 ' sortie du Picaxe sur Trig du capteur
symbol echo=C.2 ' entrée sur Picaxe de Echo du capteur (note: pulsin' requiert une entrée sous la forme C.3 et non pinC.3)
symbol LCD=C.4
symbol calc=w1 ' variable 16 bits, calcul du temps et de la distance
symbol baud=T2400_4
pause 500
serout LCD,baud, (254,1,254,1) ' effacement LCD
low trig ' programmation de Trig en mode sortie et mise à 0
do ' boucle principale
pulsout trig,1 ' impulsion sur Trig en dizaines de µs (1 => 10µs)
pulsin echo,1,calc ' lit la durée de l'impulsion Echo (1 = flanc montant
;**** code nécessaire au fonctionnement des modules "défaillants" ***********
if calc=0 then
serout LCD,baud, (254,128,"Hors limites ") ' affichage erreur
reverse echo ' inversion de l'entrée Echo en mode sortie
low echo ' mise à 0 de la borne Echo
pause 100 ' pendant 100ms
reverse echo ' puis, passage à nouveau en mode entrée
pause 1000
endif
;************* fin ajout code "tout module" ***********************
calc=calc*17/100 ' calcul de la distance
serout LCD,baud,(254,128,"dist = ",#calc," cm ") ' affichage de la distance sur le LCD
pause 1000 ' attente de 1s
loop ' boucle sans fin
La preuve:
Photo prise à ....21cm