Faire clignoter une LED sans delay()
Pour comprendre
L'inconvénient de la fonction delay() pour temporiser un programme est son caractère bloquant : on ne peut rien faire d'autre pendant la pause.
Ici, on montre comment faire la même chose en utilisant la fonction millis() et 2 variables : l'état de la LED est modifié seulement lorsque le délai voulu est écoulé et le reste du temps, le programme peut faire autre chose.
Le montage :
Connecter une LED via une résistance de 270 Ohms sur la broche 0 (=X1) de la pyboard :
Le code
# faire clignoter une LED sans delay()
from upyduino import *
LED=0
millis0=0 # variable pour mémoriser millis
interval=1000 # intervalle voulu en ms
def setup():
pinMode(LED, OUTPUT)
def loop():
global millis0
if millis()-millis0 > interval :
millis0=millis() # RAS millis0
toggle(LED)
if digitalRead(LED)==HIGH : print('LED ON')
else: print('LED OFF')
# placer ici le reste du code
# noter que le principe peut être étendu en utilisant plusieurs variables millis0 et interval distinctes
# attention : millis() RAZ au bout de quelques jours
# exécution
setup()
while True:loop()