Salut Mika, merci pour ton commentaire, tu es déjà équipé d'un
Raspberry?
Salut Mil3D,
J'aurai essayé au moins
J'ai modifié un peu le code suite à tes remarques Frédéric.
Reste à tester, je suis pas à la maison pour l'instant..
Il y a certainement des solutions plus pointues et élégantes de faire cela, mais ca devrait fonctionner :-)
Raspberry?
Salut Mil3D,
J'aurai essayé au moins
J'ai modifié un peu le code suite à tes remarques Frédéric.
Code :
#!/usr/bin/python
# Importation des lib.
import RPi.GPIO as GPIO
import time
# Mode BCM pour GPIO
GPIO.setmode(GPIO.BCM)
# Paramétrage des broches GPIO à utiliser (au choix)
GPIO_PULSE = 24
GPIO_MESURE = 25
# Paramétrage des GPIO
GPIO.setup(GPIO_PULSE,GPIO.OUT) # Sortie pour pulse de démarrage mesure
GPIO.setup(GPIO_MESURE,GPIO.IN) # Entrée du signal de mesure
#boucle jusque 50, déclaration de liste
i = 1
listeresultats = []
for i in range(1, 51):
# Forcage de la sortie pulse à zéro
GPIO.output(GPIO_PULSE, False)
# pause réduite, a tester
time.sleep(0.1)
# On génère un pulse en passant à l'état haut la sortie pulse pendant 10µS
GPIO.output(GPIO_PULSE, True)
time.sleep(0.00001)
GPIO.output(GPIO_PULSE, False)
# On va mesurer le temps à l'état haut de l'entrée mesure.
# Le temps à l'état haut est le temps de propagation de l'onde ALLER/RETOUR
debut = time.time() # reset
while GPIO.input(GPIO_MESURE) == 0:
debut = time.time() # début
while GPIO.input(GPIO_MESURE) == 1:
fin = time.time() # fin
mesuretemps = fin-debut
# Le son parcours +-340m/s ou 34000cm/s, multiplié par le temps donne la distance
mesuredistancetotale = mesuretemps * 34000
# Dans la var. mesurereelle on trouvera la mesure finale, exploitable pour la visu et log SQL.
mesurereelle = mesuredistancetotale / 2
listeresultats.append(mesurereelle)
# fin de mesure, on sort proprement
GPIO.cleanup()
#suppression des 5 valeurs extremes
for i in range(1, 6):
listeresultats.remove(max(listeresultats))
listeresultats.remove(min(listeresultats))
#moyenne
valeurmoyenne = sum(listeresultats)/len(listeresultats)
Reste à tester, je suis pas à la maison pour l'instant..
Il y a certainement des solutions plus pointues et élégantes de faire cela, mais ca devrait fonctionner :-)