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 :