Quan treballem la resposta a estímuls provinents de sensors o amb determinats sistemes de connectivitat, les pauses en l'execució dels programes suposen un problema.
Podem definir intervals de temps consultant constantment el rellotge intern del µcontrolador amb la instrucció time.ticks_ms() del mòdul time, que retorna el temps que porta en execució.
Exemple 1: blink sense pauses 👉
from machine import Pin
import time
led = Pin(23, Pin.OUT)
temps_inicial = time.ticks_ms() # llegim el temps d'execució inicial
temps_limit = 1000 # temps de durada de la pausa a evitar
while True:
temps_actual = time.ticks_ms() # llegim el temps d'execució actual
# compara constantment les dues mesures de temps
# i quan el temps entre les dues lectures sigui el definit ...
if (temps_actual- temps_inicial) >= temps_limit:
estat_led = not estat_led # inverteix l'estat del led
led.value(estat_led)
temps_inicial = temps_actual # per acabar, actualitza el valor de la variable
Exemple 2: interruptor sense pauses 👉
from machine import Pin
import time
led = Pin(23, Pin.OUT)
boto = Pin(15, Pin.IN)
estat_led = False # variable booleana (True/False) que definirà l'estat del led
temps_inicial = time.ticks_ms() # temps d'execució inicial
temps_limit = 100 # temps d'actualització
while True:
temps_actual = time.ticks_ms() # llegim el temps d'execució actual
lectura = boto.value()
if lectura == 1:
if (temps_actual- temps_inicial) >= temps_limit:
estat_led = not estat_led # inverteix l'estat del led
led.value(estat_led)
temps_inicial = temps_actual # per acabar, actualitza el valor de la variable