Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Divers scripts, source code pour Raspberry Pi
#9
Salut Mika, merci pour ton commentaire, tu es déjà équipé d'un
Raspberry?

Salut Mil3D,
J'aurai essayé au moins Shy Big Grin

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 :-)
Répondre


Messages dans ce sujet
RE: Divers scripts, source code pour Raspberry Pi - par RemyB - 10/04/2014, 08:31:04

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)