1. Cahier des charges
A) Départ du chronomètre
La réflexion attendue de la part des élèves concerne le problème du chronométrage. Lorsque le véhicule passe devant l’émetteur, celui-ci doit déclencher le chronométrage.
Surviennent alors plusieurs questions :
- Cela a-t-il du sens de comparer les temps de départ et d'arrivée si ceux-ci sont mesurés avec deux chronomètres différents? ...
Oui, à condition que les deux horloges soient parfaitement synchronisées.
- Et si ces horloges n’indiquent pas la même heure, au même instant, comment fait-on?
On lance le chronomètre du récepteur. Au TOP DEPART, lancé par l’émetteur, et reçu instantanément par le récepteur, ce dernier consulte son horloge et mémorise le temps t0. Lorsque le véhicule passe la ligne d’arrivée, il consulte à nouveau son horloge et repère le temps t1.

t1-to mesure la durée de déplacement du mobile
- Comment indiquer le “TOP” du départ aux autres cartes micro:bit ?
Il faudra utiliser la fonction radio du microcontrôleur. (Rappelez vous que l’écran empêche en théorie les élèves de se voir et de communiquer).
Le programme de l’émetteur devra posséder la fonction de déclencher tous les chronomètres, grâce à l’émission d’un message radio.
Cette fonction pourrait être réalisée lors de l’appui sur le bouton b de sa carte micro:bit.
B) Arrêt du chronomètreA la réception du signal TOP DEPART, le chronomètre du récepteur doit se mettre à zéro et démarrer. Il doit mémoriser l’instant t0.
Mais il doit aussi pouvoir arrêter son chronomètre, c'est-à-dire repérer et mémoriser le temps t1.
Cette fonction pourrait être réalisée lors de l’appui sur le bouton a.
2. Algorithme
Pour des raisons de commodité, l’émetteur et le récepteur partageront le même script.
En résumé, le programme doit assurer trois fonctions :
A) Pour le récepteur : Arrêter son chronomètre et afficher la duréeCette fonction pourrait être réalisée lors de l’appui sur le bouton a.L’algorithme, écrit en langage naturel pourrait être :
Si le bouton_a est pressé
consulter l’horloge et relever le temps t1
afficher le résultat du chronométrage sur l’écran de la calculatrice
B) Récepteur : démarrer le chronomètre lorsqu’il reçoit le signal “TOP”L’algorithme, écrit en langage naturel pourrait être :
Si un message radio est reçu
consulter l’horloge et relever le temps t0
afficher zero sur l’écran de la calculatriceC) Pour l’émetteur : Envoyer le message “TOP” - départ à toutes les cartes micro:bit. Cette fonction pourrait être réalisée lors de l’appui sur le bouton b.
L’algorithme, écrit en langage naturel pourrait être :
Si le bouton_b est pressé
consulter l’horloge et relever le temps
afficher zero sur l’écran de la calculatrice
envoyer par radio le message “TOP” aux autres calculatricesCe seront alors ces trois types d'événements que devra gérer le programme.
3. Première partie du scriptfrom ti_system import *
from microbit import *
from mb_radio import *
from mb_disp import *
from mb_butns import *
import ti_plotlib as plt
from time import *
radio.config(length=8,channel=7,power=6,group=1)
radio.on()
plt.cls()
def synchro():
return monotonic()
def chrono(t):
t1=synchro()
return t1-t
def affichage(t):
msg="temps=%.1f"%chrono(t)
plt.cls()
plt.text_at(7,msg,"center")
Au démarrage du programme, suite à l'import du module 'time', l'horloge commence à dérouler le temps de manière continue. Ce module diffère selon la version de micropython du dispositif. Pour la calculatrice TI-83, c’est la fonction Python qui permet de consulter l'horloge s'appelle 'monotonic'.
Le programme utilise deux nouvelles fonctions Python, utiles pour consulter le temps : synchro et chrono, ainsi qu’une fonction utile pour permettre l’affichage, affichage
A) Fonction synchroLa fonction synchro, dont le script est fourni ci-dessous, sert à consulter l’horloge :
def synchro():
return monotonic()
On l’utilise lorsque l’on veut savoir l’heure, ou plutôt, où en est l’horloge actuellement (le moment zéro correspondant au démarrage du programme). Si on veut stocker la valeur dans la variable t0, il faudra réaliser l’appel de la fonction de la manière suivante : t0 = synchro().
B) Fonction chronoLa fonction chrono dont le script est ci-dessous, sert à savoir combien de temps se sont écoulés depuis le temps t, passé en argument
def chrono(t)
t1=synchro()
return t1-t

Pour mesurer une durée avec une horloge qui déroule le temps de manière continue, il faudra repérer le temps de départ, à l'aide d'une variable, t0.
Puis appeller la fonction chrono. Celle-ci prend pour paramètre le temps initial, t0, et retourne une valeur calculée en soustrayant: synchro() - t0.
Comme synchro() représente la position du temps actuel, ce calcul est équivalent à : temps actuel - temps initial.
On appellera cette fonction de la manière suivante : chrono(t0).
C) Fonction affichagePour afficher le temps chronométré sur l’écran de la calculatrice.
def affichage(t)
msg="temps=%.1f"%chrono(t)
plt.cls()
plt.text_at(7,msg,"center")
Lors d’un appel de la manière suivante, la calculatrice affiche le temps écoulé depuis t0: affichage(t0)
Le temps t0 est passé en argument. On affiche une valeur à l'écran calculée en appelant chrono(t). Comme t vaut t0 puisqu'il s'agit de l'argument passé lors de l'appel de la fonction, cette fonction affiche la durée chronométrée.
Lorsque l'on écrit successivement les deux instructions ci-dessous, le chronomètre affiche zéro :
t0 = synchro()
affichage(t0)
En effet, au moment où la fonction chrono(t0) est appelée (procédure affichage), le temps repéré par l'horloge est à peine supérieur à t0, disons qu'il vaut t0 + ε. Alors chrono(t0) retourne ε, qui devrait être inférieur à la milliseconde.
Cette combinaison d'instructions est donc équivalente à remettre le chronomètre à zéro. C'est ce qui sera réalisé lorsque :
- la carte micro:bit reçoit un message d'une autre carte micro:bit
- ou bien lorsque l'on appuie sur le bouton b.
4. Conception ou utilisation du script
Selon le niveau de la classe, et l’avancée dans l’année scolaire, le script pourrait être présenté en partie, ou directement fourni aux élèves.
Voici deux scénarios pédagogiques possibles :
a) Scénario 1 : les élèves complètent le script
Seule la partie 1 du script est donnée. On rappelle que le programme doit gérer les évènements liés:
- à l’appui sur le bouton a
- à l’appui sur le bouton b
- à la réception du message radio “TOP”
Revoir pour cela le paragraphe Algorithme.
b) Scénario 2 : le script complet est fourni aux élèves
Dans ce deuxième cas, on peut imaginer un exercice sur la lecture du script, afin que la séance ne se limite pas à mettre en œuvre l’expérience.
Selon l'état du programme, il affiche certaines images sur l'écran de la carte micro:bit.
Ces images sont parmi :

Pouvez vous deviner l'image qui sera affichée sur l'écran LED de l'opérateur selon l'état de son programme ?
C'est à dire selon si celui-ci :
- a appuyé sur le bouton b car il est au départ du véhicule (à gauche sur le dessin ci-dessous)

- a reçu le message radio “TOP”, au moment du départ d'un véhicule lointain (à droite sur le dessin ci-dessous)

- a appuyé sur le bouton a car le véhicule vient de franchir la ligne d'arrivée devant lui.
5. Utiliser le programmeUne fois le programme CHRONOS lancé :
- Le bouton a permet de relever le temps d'arrivée. Appuyer sur ce bouton quand le véhicule franchit la ligne d'arrivée.
- Le bouton b remet le chronomètre à zéro et envoie l'information "TOP" aux autres cartes micro:bit, par message radio. C'est sur ce bouton qu'il faut appuyer lorsque le véhicule franchit la ligne de départ.
- Le dispositif remet automatiquement son chronomètre à zéro lorsqu'il reçoit l'information "TOP" de la part d'une autre carte micro:bit. Il suffira alors d'appuyer sur le bouton a pour mesurer la durée.
6. Prolongement possibleLe professeur pourrait donner la valeur de la vitesse du véhicule aux élèves. Cela permettrait de déduire la distance entre la ligne de départ et d’arrivée. Puis d’évaluer la qualité de ce résultat par une mesure directe. Une discussion pourrait être amorcée sur les sources d’incertitude pour cette méthode.