Salut, j'apprends à coder python sur le Raspberry Pi 3 modèle B. et je joue avec GPIO. Mon script allume une LED lorsque l'entrée de réception == 1 et s'éteint lorsque l'entrée! = 1. Je souhaite également enregistrer l'heure à laquelle la LED est allumée et l'heure à laquelle elle est éteinte. (heure de début et heure de fin). Je finis par utiliser plusieurs conditions if / elif, mais je suis sûr qu'il existe de meilleures façons de le faire. Veuillez m'éclairer!

import RPi.GPIO as GPIO
import time
GPIO.cleanup()
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(7,GPIO.OUT)
GPIO.output(7,0) #set ping 7 to be 0 at default
CatchTime = True
startTime = []
startTimeRead = []
endTime = []
try:
        while True:
                time.sleep(0.25)
                if (GPIO.input(11) ==1)and CatchTime==True :  #start counting
                        GPIO.output(7,1)
                        print(time.ctime())
                        startTime.append(time.time())
                        startTimeRead.append(time.ctime())
                        CatchTime = False
                elif (GPIO.input(11) ==1)and CatchTime != True : #within count
                        GPIO.output(7,1)
                        print(time.ctime())
                elif (GPIO.input(11) !=1) and CatchTime != True : #end of count
                        GPIO.output(7,0)
                        CatchTime = True
                        endTime.append(time.time())
                else:   #steady not count
                        GPIO.output(7,0)
                        CatchTime = True

except KeyboardInterrupt:
    GPIO.cleanup()


print('start time:',startTimeRead)
print('end time:',endTime)
1
Leon Chen 17 janv. 2017 à 19:40

2 réponses

Meilleure réponse

En général, la meilleure façon de procéder serait de créer des fonctions d'interruption pour les événements ascendants et descendants. ce que vous faites maintenant est appelé occupé à attendre pendant polling pour une entrée. Les interruptions sont généralement plus propres et plus fiables. Computerphile a un bon aperçu des interruptions en général (plus de l'aspect informatique des choses) , et une recherche rapide sur Google a trouvé ce tutoriel sur la façon d'utiliser les interruptions gpio avec le rasberry-pi.

1
Aaron 17 janv. 2017 à 16:52

Je vous recommande de consulter ce post (Raspberry Pi-GPIO Events in Python) sur le Raspberry Pi SO. Cette solution montre comment utiliser les événements pour que vous n'ayez pas à exécuter une boucle constante - elle vous informera simplement en cas de changement.

0
Community 23 mai 2017 à 12:09