IHM et interface☘
L'objectif dans cette page sera d'améliorer l'IHM de la page précédente liée à la température pour obtenir une interface plus aboutie sur le PC:
- Récupérer la température dans une interface.
- Envoyer du texte à afficher sur la carte microbit.
Attention
Vous aurez peut-être besoin de lire de la documentation sur le code python concernant microbit avant de pouvoir compléter l'ensemble.
Vous aurez également besoin de vous renseigner sur le module tkinter.
A vous de chercher sur le web, la documentation nécessaire.
Exercice☘
-
Pour le programme PC ci-dessous, la partie interface est écrite, il reste à compléter:
- les paramètres de communication,
- la fonction demande_temperature,
- la fonction envoie_message.
-
Le programme microbit ci-dessous est à flasher, il est complet.
Programme sur PC☘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import serial, time import tkinter as tk port = baud = serie = serie.baudrate = def demande_temperature(): pass def envoie_message(): pass def quitter(): pass # Fenêtre principale ma_fenetre = tk.Tk() ma_fenetre.title("Titre de la fenetre") ma_fenetre.geometry("300x200") # Création d'un bouton pour recuperer la temperature button_temperature = tk.Button(ma_fenetre, text="Temperature", command=demande_temperature) button_temperature.grid(row=1, column=0, padx=5, pady=5) # Creation d'un label pour afficher la temperature texte_temperature = tk.StringVar() texte_temperature.set("Clic pour voir") label_temperature = tk.Label(ma_fenetre, textvariable=texte_temperature , bg="red") label_temperature.grid(row=1, column=1, padx=5, pady=5) # Création d'un bouton pour envoyer un message button_message = tk.Button(ma_fenetre, text ="Envoyer", command=envoie_message) button_message.grid(row=2, column=1, padx=5, pady=50) # Création d'un champ de saisie d'un message texte_message = tk.StringVar() texte_message.set('à envoyer') champ_message = tk.Entry(ma_fenetre, textvariable=texte_message, bg="bisque", fg="maroon", width="20") champ_message.focus_set() champ_message.grid(row=2, column=0, padx=5, pady=5) # Création d'un bouton Quitter button_quitter = tk.Button(ma_fenetre, text="Quitter", command=quitter) button_quitter.grid(row=3,column=0, padx=5, pady=5) ma_fenetre.mainloop() |
Programme microbit☘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | from microbit import * uart.init(baudrate=9600) display.scroll('Pret') while True: if uart.any(): msg_bytes = uart.read() if msg_bytes == b'temperature': temp = temperature()-5 print(temp) display.scroll(temp) else: if msg_bytes == b'11': display.set_pixel(1, 1, 9) else: msg_str = str(msg_bytes, 'UTF-8') display.scroll(msg_str) sleep(1000) |
Un code possible pour le PC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import serial, time import tkinter as tk port = "/dev/ttyACM1" baud = 9600 serie = serial.Serial(port) serie.baudrate = baud def demande_temperature(): serie.write(b'temperature') data = serie.readline() data = int(data[0:4]) print(data) texte_temperature.set(str(data)) def envoie_message(): message_bytes = bytes(texte_message.get(), 'utf-8') serie.write(message_bytes) def quitter(): serie.close() ma_fenetre.destroy() # Fenêtre principale ma_fenetre = tk.Tk() ma_fenetre.title("Titre de la fenetre") ma_fenetre.geometry("300x200") # Création d'un bouton pour recuperer la temperature button_temperature = tk.Button(ma_fenetre, text="Temperature", command=demande_temperature) button_temperature.grid(row=1, column=0, padx=5, pady=5) # Creation d'un label pour afficher la temperature texte_temperature = tk.StringVar() texte_temperature.set("Clic pour voir") label_temperature = tk.Label(ma_fenetre, textvariable=texte_temperature , bg="red") label_temperature.grid(row=1, column=1, padx=5, pady=5) # Création d'un bouton pour envoyer un message button_message = tk.Button(ma_fenetre, text ="Envoyer", command=envoie_message) button_message.grid(row=2, column=1, padx=5, pady=50) # Création d'un champ de saisie d'un message texte_message = tk.StringVar() texte_message.set('à envoyer') champ_message = tk.Entry(ma_fenetre, textvariable=texte_message, bg="bisque", fg="maroon", width="20") champ_message.focus_set() champ_message.grid(row=2, column=0, padx=5, pady=5) # Création d'un bouton Quitter button_quitter = tk.Button(ma_fenetre, text="Quitter", command=quitter) button_quitter.grid(row=3,column=0, padx=5, pady=5) ma_fenetre.mainloop() |