Thème : Informatique embarquée et objets connectés

Programmation d'une liaison carte micro:bit et PC

Rappel

En Python, l'instruction « display.set_pixel(x, y, v) » permet d'allumer la diode de coordonnées x et y avec l'intensité v.

Créer un programme nommé programme8.py avec le logiciel Mu, l'enregistrer dans dossier "C :\travail élève" avec le code source ci-dessous que vous pouvez copier.

  • Transférer ce programme sur la carte (choisir BBC micro :bit).

1
from microbit import *
2
#initialisation de la vitesse de transmission en bauds
3
uart.init(baudrate=9600)
4
while True:
5
#s'il y a un message dans la file de réception
6
    if uart.any():
7
        #lecture du message qui est en bytes
8
        msg_bytes=uart.read()
9
        #conversion en chaîne de caractères en précisant l'encodage
10
        msg = str(msg_bytes, "utf-8")
11
        #conversion en entier du premier caractère du message (x)
12
        x = int(msg[0])
13
        #conversion en entier du second caractère du message (y)
14
        y = int(msg[1])
15
        #conversion en entier du troisième caractère du message (v)
16
        v = int(msg[2])
17
        display.set_pixel(x, y, v)
18
    sleep(1000)
19
    display.clear()

Créer un autre programme interface graphique.py, l'enregistrer dans le même dossier que le précédent avec le code source ci-dessous.

  • Transférer ce programme sur la carte (choisir Python 3).

1
from serial import *
2
from tkinter import *
3
4
#port série à découvrir en ligne de commande avec mode
5
port = "COM4"
6
serie = Serial(port)
7
#même vitesse de transmission que sur la carte
8
serie.baudrate = 9600
9
10
def envoie_message():
11
    msg = texte_message.get()
12
    message_bytes = bytes(msg, "utf-8")
13
    serie.write(message_bytes)
14
15
# Fenêtre principale
16
ma_fenetre = Tk()
17
ma_fenetre.title("IHM")
18
19
# Création d'un bouton pour envoyer un message
20
button_message = Button(ma_fenetre, text ="Envoyer", command = envoie_message)
21
#positionnement du bouton
22
button_message.pack()
23
24
# Création d'un champ de saisie d'un message
25
texte_message = StringVar()
26
champ_message = Entry(ma_fenetre, textvariable= texte_message, bg ="bisque", fg="maroon", width="20")
27
#on donne le focus au champ de saisie
28
champ_message.focus_set()
29
#positionnement du champ
30
champ_message.pack()
31
32
#boucle de capture d'événements
33
ma_fenetre.mainloop()
  • Exécuter le programme en cliquant sur l'icône Lancer, une fenêtre graphique comme ci-dessous s'affiche. Écrire 115 dans le champ de saisie puis cliquer sur le bouton envoyer, le pixel de coordonnées (1,1) devrait s'allumer avec une intensité moyenne.

Pour arrêter l'IHM, fermer la fenêtre graphique puis cliquer sur Arrêter dans la barre de menu de Mu.

Pour aller plus loin :

Modifier le programme de la carte programme8.py et l'enregistrer sous le nom programme8partie2.py, pour que la carte allume pendant une seconde :

  • la diagonale de diodes de coordonnées (x, x) si on transmet le message "a" par l'IHM ;

  • l'autre diagonale de diodes si on transmet le message « b" par l'IHM;

  • une croix formée des deux diagonales si on transmet le message « c » par l'IHM

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre) modèle documentaire TechnOpale