Utiliser les entrées-sorties

Attention

Une mauvaise utilisation des entrées-sorties peut endommager votre carte. Attention à ne pas dépasser la tension ou le courant prévu pour chaque broche d'E/S.

La carte microbit fonctionne sur 3,3V, même si elle est alimentée par les 5V de l'USB. Il faut donc veiller à ne pas appliquer de tension supérieure à 3,3V sur les entrées sortie. En particulier il faudra être vigilant en cas d'utilisation de capteur nécessitant une tension de 5V.

Complémentshield gator:bit

Afin de protéger la carte de mauvaise manipulation, il est possible d'accéder aux entrées-sorties via un shield (carte additionelle sur laquelle la microbit vient se brancher). Personnellement, j'utilise le shield gator:bit V2 de sparkfun qui me satisfait sur le plan de la protection de la carte : une tension de 5V appliquée sur une E/S sera rabaissée et n'endommagera pas la microbit. En plus, ce shield offre 5 led RVB neopixel, un haut-parleur et un convertisseur de tension permettant d'alimenter la carte depuis une alimentation entre 2,7V et 9V.

Soyez vigilent de bien choisir la version 2 du shield, référence sparkfun DEV-15162.

FondamentalInformation compléte

Pour connaître le détail des spécificités de chaque broche de la microbit, je vous invite à consulter cette page :

https://microbit.org/guide/hardware/pins/

boutons tactiles

Les broches 0, 1 et 2 sont - en théorie - tactiles. On peut détecter lorqu'on les touche. Pour ma part je ne trouve pas que cette détection soit très sensible et n'est pas vraiment utilisable. D'autre part, l'utilisation du shield gator:bit rend cette fonctionnalité inopérante.

Voici tout de même un exemple de code mettant en oeuvre la détection de toucher sir la broche pin0. Vous pourrez ainsi vous faire votre propre idée par vous-même.

1
from microbit import *
2
3
while True:
4
    if pin0.is_touched():
5
        display.show(Image.HAPPY)
6
    else:
7
        display.show(Image.SAD)

Faire clignoter une LED

Comment échapper à cet incontournable blink ! Le code se passe de commentaire et illustre la méthode write_digital() qui s'applique sur les broches pinXX

1
from microbit import *
2
3
while True:
4
    pin0.write_digital(1)
5
    sleep(500)
6
    pin0.write_digital(0)
7
    sleep(500)
8

Entrée numérique

Pour configurer la broche 1 en entrée numérique avec résistance de PULL_UP, on tulise les commandes suivantes :

>>> pin1.set_pull(pin1.PULL_UP)

les autres options de PULL sont PULL_DOWN et NO_PULL

On peut ensuite lire la broche en faisant

>>> pin1.read_digital()

qui renvoie 1 si la broche est à l'état haut, ou 0 à l'état bas.

ComplémentConnaître la configuration d'une broche

Pour savoir si une broche est configurée en entrée (INPUT) ou en sortie (OUTPUT), on peut taper

>>>pin1.get_mode()

renvoie par exemple 'read_digital' ou 'write_digital'

La configuration des broches en INPUT ou OUTPUT se fait automatiquement selon qu'on fait un read_digital() ou un write_digital(). Par défaut les broches sont configurées en sortie. Essayez les commandes suivantes dans le REPL :

>>> pin1.get_mode()

'write_digital'

>>> pin1.read_digital()

>>> pin1.get_mode()

'read_digital'

>>> pin1.write_digital(0)

>>> pin1.get_mode()

'write_digital'

Pulse-Width-Modulation (PWM) : Modulation en largeur d'impulsion

Les broches ne savent délivrer que 0 ou 3,3V. Si on souhaite diminuer la luminosité d'une LED ou ralentir un moteur commandé par une broche de la microbit il est utile d'avoir recours au PWM afin de définir quel pourcentage de temps la broche sera à l'état haut.

La méthode permettant le PWM est write_analog et s'utilise ainsi :

>>> pin1.write_analog(512)

>>> pin1.get_mode()

'write_analog'

Les valeurs acceptées sont sur 10 bits donc de 0 (toujours à 0) à 1023 (toujours à 1). L'exemple ci-dessus montre un rapport cyclique de 50% dont haut la moitié du temps sur une période donnée.

Entrée analogique

Certaines broches (0, 1, 2, 3, 4, 10) peuvent recevoir une tension entre 0 et 3,3V. Elles renvoient alors une valeur lue entre 0 et 1023. La méthode à invoquer est read_analog() :

>>> pin1.read_analog()

49

ComplémentConnaître les fonctionnalités acceptées par une broche

La commande dir permet de lister les méthodes associées à une broche :

>>> dir(pin1)

['write_digital', 'read_digital', 'write_analog', 'read_analog', 'set_analog_period', 'set_analog_period_microseconds', 'is_touched', 'PULL_UP', 'PULL_DOWN', 'NO_PULL', 'get_pull', 'set_pull', 'get_mode']

>>> dir(pin9)

['write_digital', 'read_digital', 'write_analog', 'set_analog_period', 'set_analog_period_microseconds', 'get_analog_period_microseconds', 'PULL_UP', 'PULL_DOWN', 'NO_PULL', 'get_pull', 'set_pull', 'get_mode']

La broche 1 possède la fonctionnalité read_analog() mais pas la broche 9.

Remarque

La microbit utilise des résistances externes de pullup faibles (10 Mohms) sur les broches 0, 1 et 2 afin de faire fonctionner la détection de toucher

Il y a aussi des résistances de pull-up externes de 10Kohms sur les broches 5 et 11 pour les boutons A et B

Les broches 1, 4, 6, 7, 9 et 10 sont utilisées pour la matrice de LEDs. Pour utiliser ces broches à d'autres usages, il faut éteindre l'écran (display.off()).