Réaliser une mesure à intervalles régulier, sans delay

Le montage :

Connecter la sortie d'une résistance variable linéaire sur la broche 2 (=X3 sur la pyboard). La résistance variable est connectée entre le 0V et le 3.3V.

Le code

Une mesure est réalisée toutes les 500ms par mémorisation de millis() entre 2 mesure et la mesure convertie en millivolts est affichée simplement dans le terminal. Cette technique permet de libérer le microcontrôleur entre 2 mesures.

# réaliser une mesure à intervalle régulier sans delay

from upyduino import *

LED=0
millis0=0 # variable pour mémoriser millis
interval=1000 # intervalle voulu en ms

def setup():
    pass

def loop():

    global millis0

    if millis()-millis0 > interval :
        millis0=millis() # RAS millis0

        #code exécuté à intervalles réguliers
        mesure=analogRead(A2)
        tension=rescale(mesure,0,4095,0,3300) # changement échelle - équiv map Arduino
        #tension=mesure*3300/4095 # calcul équivalent

        print(str(mesure)+" soit ", "{:.2f}".format(tension), " mV. ")

    # 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()

Ce qui donne :