Ce code ne permet pas d'allumer et d'éteindre la led.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT)
for number in range(0,10):
GPIO.output(21,GPIO.LOW)
time.sleep(1)
GPIO.output(21,GPIO.HIGH)
GPIO.cleanup()
mais quand j'imprime le numéro dans la boucle ça marche:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT)
for number in range(0,10):
GPIO.output(21,GPIO.LOW)
time.sleep(1)
GPIO.output(21,GPIO.HIGH)
print(number)
GPIO.cleanup()
Une idée pourquoi c'est?
Réponses:
Essayez de remplacer votre
print
par untime.sleep(0.05)
. Vous pouvez rencontrer ce comportement étrange car GPIO.output passe trop rapidement de HIGH à LOW pour être défini / détecté / vu. Augmentez / réduisez la durée du sommeil jusqu'à ce que le programme fonctionne correctement (augmentation) et suffisamment rapide (diminution).la source
Déroulez votre boucle pour comprendre ce qui se passe ici:
se transforme en:
Comme vous pouvez le voir, le réglage de la broche basse suit (près de) immédiatement après l'avoir tournée vers le haut. En effet, votre LED restera dans un état la plupart du temps (c'est-à-dire ce que nous pouvons percevoir à l'œil nu).
Fixez-le comme ceci (pour un cycle d'utilisation de 50:50):
la source
print()
le code d'origine fonctionne est que l'écriture à l'écran est un processus incroyablement lent et agit essentiellement commesleep(1)
vous l' avez suggéré.