Les sorties numériques de la carte Micro:bit
Utilisation simple en 0-3,3V
Bornes utilisables
Les bornes concernées sont les n°0, 1 ou 2.
La tension délivrée par ces bornes peut prendre deux valeurs distinctes :
0 V si la borne est à l'état bas ;
3,3 V si la est à l'état haut.
Instructions
Pour passer une borne numérique à l'état bas (exemple de la borne pin0) :
pin0.write_digital(0)
Pour passer une borne numérique à l'état haut (exemple de la borne pin0) :
pin0.write_digital(1)
Exemple : Faire clignoter une DEL
On réalise le montage ci-contre alimentant une DEL protégée par une résistance de \(220\ \Omega\) via la broche pin0 de la carte Micro:bit.
La DEL s'allume une seconde et s'éteint pendant la même durée.
Copier-Coller le programme ci-dessous dans Mu-editor pour tester le fonctionnement de la borne numérique.
from microbit import *
while True :
pin0.write_digital(1)
sleep(1000)
pin0.write_digital(0)
sleep(1000)
Sortie numérique PWM
Définition : PWM
PWM signifie Pulse Width Modulation.
Le signal délivré est un créneau de période 20 ms dont le rapport cyclique est ajustable sur 1023 niveaux, 1023 correspondant à 100% du temps à l'état haut et 0 à 0% du temps à l'état haut.
L'instruction permettant d'exploiter une sortie numérique (exemple de la borne pin0) en mode PWM est donnée ci-dessous, où niveau est un entier entre 0 et 1023.
On remarque notamment write_analog qui se substitue au write_digital.
pin0.write_analog(niveau)
Illustration du fonctionnement
On reprend le montage alimentant une DEL unique, protégée par une résistance de \(220\ \Omega\).
Vérifiez qu'on peut faire varier l'intensité lumineuse de la DEL en changeant la valeur du niveau demandé dans la commande pin0.write_analog().
Complément : Observation du signal délivré par une sortie PWM
On utilise le montage précédent avec le programme commenté ci-dessous.
from microbit import *
while True :
"""On génère 10 niveaux d'éclairement différents pour la DEL
du plus intense au moins intense.
Chaque niveau est maintenu pendant 2 secondes (instruction sleep)"""
for i in range(10):
pin0.write_analog(1023 - 102 * i) # On passe la valeur du rapport cyclique
sleep(2000)
La vidéo ci-dessous reprend les observations sur la forme du signal (passer en plein écran et ajuster la qualité si besoin).