Les sorties du Micro:Bit

Les ports P0, P1 et P2 du Micro:Bit peuvent être utilisés en entrée ou en sortie. Dans cet article, nous allons utiliser le mode sortie pour contrôler une LED, d’abord en numérique (0 ou 1) et ensuite en analogique (de 0 à 1023).

Précédemment, nous avons vu comment connecter le Micro:Bit à une breadboard. Je vous propose donc de reproduire ce schéma avec une LED et une résistance de 100 à 220 Ω (Ohm). La résistance est obligatoire car elle permet de protéger la LED. Attention, la LED ne fonctionne que dans un sens, la patte la plus longue doit être reliée à la borne plus (3,3 V) et la plus petite à la borne moins (GND).

Dans cet exemple, j’utilise le port P0, mais vous pouvez très bien en choisir un autre (P1 ou P2), il vous faudra simplement adapter le code.

Les sorties numériques

Lorsque l’on active les sorties numériques du MicroBit, les bornes peuvent prendre 2 valeurs électriques. Une valeur basse (0) qui correspond à la masse GND et une valeur haute (1) qui correspond à +3,3 V. Pour que la LED s’allume il faut une différence de potentiel, c’est à dire que l’une des pattes (la grande) doit être à +3,3 V et l’autre à la masse (GND). Ainsi, lorsque la valeur de la broche P0 est à 1 (+3,3 V) la LED s’allume. Mais quand la valeur de P0 est à 0 (GND), le courant ne circule plus car les 2 bornes sont au même potentiel (GND), et donc la LED s’éteint.

Concernant le code, c’est simplement une boucle infinie qui met alternativement la borne P0 à 0 (GND) ou 1 (+3,3 V) avec une pause de 500 millisecondes (1/2 seconde) entre chaque modification.

# Appel de la bibliothèque "microbit"
from microbit import *
# Boucle infinie
while True:
    # Mets la broche P0 à 0
    pin0.write_digital(0)
    # Attends 1/2 seconde
    sleep(500)
    # Mets la broche P0 à 0 
    pin0.write_digital(1)
    # Attends 1/2 seconde 
    sleep(500)

Notez que si l’on inverse le sens de la LED et que l’on relie la grande patte à la borne 3,3 V. Cela fonctionnera aussi (avec le même code) mais dans ce cas la LED s’allume quand la broche P0 est à 0 et s’éteint quand elle est à 1.

Les sorties Analogiques

En mode « analogique », les broches du Micro:Bit sont capables de prendre 1024 valeurs intermédiaires entre 0 et 3,3 V. Voilà quelques exemples :

  • 0 correspond à 0 V (0%)
  • 255 correspond à 3,3 / 1024 x 255 = 0,82 V (25%)
  • 511 correspond à 3,3 / 1024 x 511 = 1,65 V (50%)
  • 767 correspond à 3,3 / 1024 x 767 = 2,47 V (75%)
  • 1023 correspond à environ 3,3 V (100%)

En réalité il ne s’agit pas réellement d’un signal analogique. La broche envoie toujours un signal numérique (à 0 ou à 3,3 V) mais en discontinu. Cependant, je ne vais pas rentrer dans les détails, puisse que l’objectif de cet article est simplement d’allumer des LED.

En modifiant la tension moyenne de la sortie, il est possible de modifier l’intensité lumineuse de la LED (au lieu de se contenter de l’allumer ou de l’éteindre).

Vous pouvez choisir un des deux schémas de branchement ci dessus. Concernant le code, la valeur de luminosité est stockée dans une variable, que j’ai appelée « lum« . Au début du programme elle est fixée à 0. Ensuite une 1ère boucle se répète tant que lum est inférieur à 1023 :

  • La valeur de la sortie analogique P0 est modifiée (en fonction de lum),
  • La valeur de lum augmente de 1
  • Le MicroBit attends 1 millisecondes (1/1000 de seconde)

Puis une 2ème boucle fait exactement le contraire, elle se répète tant que lum est supérieur à 0 :

  • La valeur de la sortie analogique P0 est modifiée (en fonction de lum),
  • La valeur de lum diminue de 1
  • Le MicroBit attends 1 millisecondes (1/1000 de seconde)

Mais les 2 boucles sont situées à l’intérieur d’une boucle infinie, ce qui fait que lorsque l’une d’elles a fini de s’exécuter, c’est l’autre qui commence.

# Appel de la bibliothèque "microbit"
from microbit import *
lum = 0
# Boucle infinie
while True:
    # Tant que "lum" et inférieur à 1023
    while (lum < 1023):
        # Mets la broche P0 à la valeur de "Lum"
        pin0.write_analog(lum)
        # Attends 1 milliseconde
        sleep(1)
        # Additionnes 1 à "lum"
        lum = lum + 1
    # Tant que "lum" et supérieur à 0
    while (lum > 0):
        # Mets la broche P0 à la valeur de "Lum"
        pin0.write_analog(lum)
        # Attends 1 milliseconde
        sleep(1)
        # soustrait 1 à "lum"
        lum = lum - 1


2 réflexions sur “Les sorties du Micro:Bit

  1. Bonjour Jean Christophe,
    Je conseille généralement d’utiliser P1 et P2 en priorité car seul P0 est capable de sortir du PWM… très pratique pour jouer des tonalités ou faire de la musique 😉
    A+
    Dom

    J’aime

  2. Salut Dom,
    C’est vrai que pour jouer de la musique il faut absolument utiliser la sortie P0, mais je pense que c’est simplement à cause de la bibliothèque « music » qui a été écrite comme ça (mais il est peut être possible de changer le port). Par contre, les sorties P0, P1 et P2 sont toutes les 3 capables de sortir un signal analogique, que l’on appelle aussi PWM (Pulse Width Modulation). Et le dernier code fonctionne aussi bien avec les 3 sorties.
    A+
    JC

    J’aime

Laisser un commentaire