Programmation
en Micro-Python des cartes
Micro:Bit
Les cartes Micro:bit peuvent se programmer à partir d’un langage amélioré du Python: « Le micro-Python »
PRESENTATION
Plusieurs logiciels proposent cette programmation en « micro-Python »:
Logiciels en ligne:
microbit: https://python.microbit.org/v/2.0
Vittascience:
https://fr.vittascience.com/microbit/?console=bot tom
Logiciels à installer:
Mu: https://codewith.mu/
Les logiciels
Chargement de la bibliothèque Micro:Bit:
Avant toute programmation, il faut importer le module
« Micro:Bit » par la commande:
From microbit import *
Vous pouvez alors utiliser toutes (*) les fonctionnalités de la bibliothèque « microbit »
POUR COMMENCER
Pour faire défiler un texte:
display.scroll(« Bonjour »)
Pour faire apparaître un texte lettre par lettre:
display.show (texte à afficher, wait=True, loop=False, clear=False)
Commande de l’affichage : les textes
Arguments (facultatifs):
Siwait=True, cette fonction se bloquera jusqu'à ce que l'animation soit terminée, sinon l'animation se déroulera en arrière-plan.
Siloop = True, l'animation se répétera indéfiniment.
Siclear = True, l'affichage sera effacé une fois terminé.
La matrice de leds permet aussi d’afficher des images.
Commande de l’affichage : les images
Chaque point est un nombre entre 0 et 9 pour rendre chaque LED plus sombre ou plus lumineuse.
Exemple: un bateau
Commande de l’affichage : les images
On utilise alors la commande display.show()
from microbit import * boat = Image("00050:"
"00550:"
"05550:"
"99999:"
"09990") display.show(boat)
On peut aussi afficher des images toutes prêtes contenues dans la bibliothèque microbit.
Exemple: display.show(Image.HAPPY)
Commande de l’affichage : les images
De nombreuses images existes:
Image. SMILE Image.SMART Image.CLOCK12 Image.SAD
…etc….
Autres image:
https://microbit-micropython.readthedocs.io/en/v1.0.1/tutorials/images.html Attention à respecter les
majuscules
Les commandes qui se rapportent aux boutons A et B permettent:
de vérifier s’ils sont appuyés ou non. (au présent ou au passé). Le résultat est donc dans ces cas, une information de type Booléenne (« True » or « False ») c’est- à-dire « logique ».
is_pressed( ) : Renvoie True si le bouton spécifié buttonest actuellement maintenu enfoncé, et False sinon.
was_pressed( ) : Renvoie True ou False pour indiquer si le bouton a été appuyé.
De calculer le nombre de fois que l’on a appuyé sur le bouton
get_presses( ) : Renvoie le total cumulé des pressions sur les boutons
Exemple:
from microbit import *
while True: #début d’une boucle jusqu’à ce que l’on trouve « break » ifbutton_a.is_pressed() andbutton_b.is_pressed():
display.scroll("AB")
break# on sort du programme si les deux boutons appuyés elifbutton_a.is_pressed():
display.scroll("A") elifbutton_b.is_pressed():
display.scroll("B") sleep(100) #tempo de 100 ms
Utilisation des boutons A et B
L’accéléromètre va nous indiquer des
mouvements suivants les 3 axes X, Y et Z.
Utilisation de l’accéléromètre
On peut par exemple récupérer cette donnée dans une variable:
variable = accelerometer.get_x()
L’instruction permettant de récupérer les valeurs va donc dépendre de l’axe:
Pour l’axe X : accelerometer.get_x() Pour l’axe Y : accelerometer.get_y() Pour l’axe Z: accelerometer.get_z()
Le capteur de température est celui intégré dans le processeur.
La syntaxe permettant de récupérer sa valeur est tout simplement:
temperature ()
Utilisation du capteur de température
Exemple:
from microbit import * while True:
temp = temperature()
display.scroll(str(temp) + ‘ C')#on transforme la donnée entière « temp » en chaine de caractères par str() sleep(500)
Utilisation de la boussole
Un magnétomètre mesure l'intensité du Champ magnétique dans chacun des trois axes. Il peut être utilisé pour créer
une boussole numérique ou pour mesurer des champs magnétiques:
Exemple: compass.heading() qui permet de récupérer l’angle par rapport au nord magnétique.
Remarque: Un étalonnage de la boussole est nécessaire avant son utilisation. L'étalonnage consiste en un petit jeu pour allumer toute la matrice de LED en faisant tourner la carte.
La syntaxe de cet étalonnage est: compass.calibrate()
Exemple:
from microbit import *
compass.calibrate() # étalonnage de la boussole while True:
valeur = compass.heading() # récupération de l’angle par rapport au Nord display.scroll(str(valeur) ) # affichage
sleep(500)
Les autres entrées/sorties
Les autres entrées/sorties
Pin Type Function
0 Touch Pad 0
1 Touch Pad 1
2 Touch Pad 2
3 Analog Column 1
4 Analog Column 2
5 Digital Button A
6 Digital Row 2
7 Digital Row 1
8 Digital
9 Digital Row 3
10 Analog Column 3
11 Digital Button B
12 Digital
13 Digital SPI MOSI
14 Digital SPI MISO
15 Digital SPI SCK
16 Digital
19 Digital I2C SCL
20 Digital I2C SDA
Touch:
permet une commande par les doigts
Analog:
entrées/sorties analogiques
Digital:
entrées/sorties logiques
Syntaxes sur les entrées/sorties logiques
Vous pouvez simplement en touchant avec vos doigts les entrées (P0, P1 et P3) déclencher une action avec
la commande:
pin0.is_touched()
from microbit import * while True:
if pin0.is_touched():
display.show(Image.HAPPY) sleep(1000)
else:
display.show(Image.SAD) sleep(1000)
Vous envoyer la valeur 1 ou 0 sur une sortie:
Pin0.write_digital( 0 ou 1) (ici pour la sortie P0 )
Ou lire une entrée:
Pin2_read_digital() (ici pour l’entréeP2)
Attention: vous devez de la main gauche serrer P0 et de la main droite GND pour déclencher l’action
Programmer le clignotement de la DEL toutes les secondes:
Lecture/écriture logique:
from microbit import * while True:
pin0.write_digital(1) sleep(1000)
pin0.write_digital(0) sleep(1000)
Attention : Si la diode ne s’allume pas, inversez sa connexion, car les DELs sont polarisées
Syntaxes sur les entrées/sorties analogiques
Les deux commandes principales pour lire ou produire des tensions sont:
read_analog()
Permet de transformer la tension appliquée à la broche en une valeur numérique comprise entre 0 (pour 0 V) et 1023 (pour 3,3 V).
write_analog( valeur )
Permet de commander la variation d’une tension de 0 Volt (pour valeur =0) à 3,3V (pour valeur =1023)
Exemple: Faire varier la luminosité d’une DEL avec le potentiomètre
from microbit import * while True:
potar = pin1.read_analog() pin0.write_analog(potar)
La variation de la valeur d’un potentiomètre est envoyée sur une sortie analogique où est branchée une DEL
DEL sur port P0
Potentiomètre sur port P1
Exemple: détection Jour/Nuit
from microbit import * while True:
Lumiere = pin1.read_analog() if Lumiere < 500:
display.scroll("NUIT") else:
display.scroll("JOUR")
En utilisant le capteur de luminosité, on peut lire une valeur comprise entre 0 (pour la nuit) et 1023 (pour le jour):
Capteur sur port P1
Pour utiliser l’afficheur 4 chiffres, il faut ajouter la bibliothèque que vous pourrez récupérer à
l’adresse suivante:
http://www.tigerjython.ch/download/mb7seg.zip
AJOUTER UNE NOUVELLE BIBLIOTHEQUE Avec Mu
Vous devez effectuer la même procédure pour utiliser le robot Maqueen
1. Dézipper les fichiers.
2. Coller les fichiers dans le répertoire mu_code de votre espace personnel : Pour le trouver :
taper C: dans l'explorateur de fichier.
puis cliquer sur Users ou Utilisateurs puis cliquer sur votre nom d'utilisateur puis cliquer sur mu_code
3. Dans le logiciel Mu, cliquer sur Fichiers
AJOUTER UNE NOUVELLE BIBLIOTHEQUE
Un panneau s’ouvre montrant deux zones : à gauche les fichiers présents sur la carte micro:bit, à droite ceux dans le répertoire mu_code
4. Copier le fichier mb7seg.py en le déplaçant à l'aide de la souris sur la zone carte Micro:bit .
AJOUTER UNE NOUVELLE BIBLIOTHEQUE
On souhaite afficher la température ambiante sur l’afficheur.
Utilisation de l’afficheur 4 chiffres
from mb7seg import FourDigit from microbit import *
d = FourDigit(pin1, pin15) while True:
temp = temperature() d.show(temp)
On charge la bibliothèque que l’on
vient d’installer
On définit les deux ports l’on va connecter notre
afficheur
On peut faire de la musique en utilisant le module
« speakers » et une bibliothèque appelée
« music »:
Commande de la musique
Remarque: Comme les images, Il existe une bibliothèque de sons Micro:bit :
music.play(music.NYAN)
Voir les autres sons: https://microbit-micropython.readthedocs.io/en/latest/tutorials/music.html from microbit import *
import music
tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4",
"D4:4", "E4:4", "C4:4", "E4:4", "F4:4", "G4:8",
"E4:4", "F4:4", "G4:8"] # Frere Jacques music.play(tune)
Potentiomètre de réglage du son
Vous devez brancher le module
« son » sur le port P0
Ruban de LEDs
from microbit import * import neopixel
np = neopixel.NeoPixel(pin0, 30) # initialisation du ruban 30 leds sur le port P0 while True:
red = 50
green = 20 # on donne une valeur à chaque couleur entre 0 et 60 blue = 40
np[10] = (red, green, blue) # on donne la couleur choisie à la del n°10
np.show() # Affichage avec la fonction "show"
sleep(100)
Pour le ruban à leds, on Utilise la bibliothèque
« néopixel » déjà contenue Dans le micro:bit
A défaut d’avoir des cartes Micro:Bit, vous pouvez utiliser le simulateur en ligne:
https://create.withcode.uk/
Un simulateur en ligne
Ou tout simplement pour que vos élèves s’entraînent chez eux
Recopiez les deux lignes de programme suivantes et testez-les en cliquant sur « play » :
Un simulateur en ligne: Exemple
Un simulateur doit s’ouvrir :
Un simulateur en ligne: Exemple
Stopper votre programme en cours d’exécution avant de continuer (A CHAQUE FOIS)
Il existe de nombreux sites qui peuvent vous aider:
https://lecluseo.scenari-community.org/CircuitPython/co/AA_kitSurvie.html
https://create.withcode.uk/
https://microbit-micropython.readthedocs.io/fr/latest/
https://microbit.org/get-started/user-guide/python/