Chronométrage « sur USB ».

Après le long chapitre, juste pour pouvoir compter, il est temps de s’octroyer une petite récréation et d’oublier momentanément les interruptions.

Fig 1

Dans cette page nous allons aborder la « gestion du temps qui s’écoule ». (Expression qui confine à de la débilité profonde… comme s’il était possible d’influencer le temps qui inexorablement égraine ses éléments dans la relativité E = MC2 !) Depuis toujours, l’humain a été dans l’obligation de calibrer ses activités, que ce soit pour synchroniser une vie sociale ou techniquement servir des impératifs temporels de plus en plus exigeants en précision. Du simple sablier jusqu’à l’horloge atomique, notre vie de tous les jours est intimement cadencée par ces machines à découper le temps qui passe. Cette page va munir notre laboratoire d’un « sablier » à quartz dont l’imprécision sera essentiellement due au manque de rapidité de l’opérateur. Dans cette application, c’est le B.P.
Fonction + qui servira à déclencher ou suspendre le chronométrage. Mais rien n’interdit de se bricoler une poignée ergonomique comme celle de la Fig.1 qui permet à un opérateur averti d’espérer approcher le dixième de seconde en chronométrage manuel. Sur notre réalisation pratique, le cordon étant long nous avons utilisé du câble B.F. blindé pour mettre à couvert la ligne A0 des parasites environnants toujours vraisemblables.

Outre la possibilité de pouvoir le déclencher ou le stopper à convenance, un chronomètre n’est vraiment opérationnel que si de plus on peut à tout moment le remettre à zéro sans en changer le mode d’activité. Comme les deux boutons de configuration de notre mini laboratoire permettent trois options, on a prévu de toutes les utiliser. Le tableau donné ci-dessus précise les options retenues.
En mode Rapide le chronomètre affiche les dixièmes de seconde, la visualisation est donc dix fois plus prompte qu’en mode réputé Lent. Le programme P09_CHRONOMETRE_sur_USB.ino qui permet de mettre au point le CHRONOMÈTRE est en réalité d’une simplicité déconcertante et ne fait appel à rien de neuf. Pour gérer le temps nous écarterons les interruptions et l’utilisation de l’un des TIMERS. Nous avons déjà abordé la fonction millis() qui effectue un travail de fond masqué. Nous savons que c’est un compteur qui est incrémenté inexorablement 1000 fois par seconde. Pour gérer le temps de façon simple il suffit d’en interroger la valeur régulièrement. En mode Rapide on attend que le compteur ait évolué de 100 unités, soit 0,1 seconde écoulée avec une précision de 1/1000ième de seconde. En mode Lent le moniteur vidéo ne sera rafraichi qu’une fois par seconde et les 1/10ième de secondes seront ignorés à l’affichage. C’est la procédure de servitude void Incrementer_le_CHRONOMETRE() qui effectue tout le travail de chronométrage. À chaque intervalle de temps programmé écoulé, elle procède à l’incrémentation du COMPTEUR HEXAGÉSIMAL constitué des quatre variables HEURES, MINUTES, SECONDES et DIXIEMES.

Comme vous pouvez le constater, un tel compteur logiciel est particulièrement facile à mettre en œuvre et se passe de tout commentaire. Dans cette version du programme, nous avons estimé qu’une capacité de 24 heures serait suffisante, mais rien ne vous empêche d’ajouter des variables du genre JOURS, ANNEES à votre convenance et en faire pourquoi pas une horloge séculaire ? Vous pouvez observer au passage que millis() est un « électron libre imperturbable ». (Sauf sur un RESET bien entendu !) De ce fait, on peut en lire le contenu à tout moment et de façon totalement aléatoire. (J’ai failli écrire « intemporelle » !) Du coup, nous pouvons réaliser autant de chronomètres logiciels que nous le désirons. Du reste, pendant que la fonction CHRONOMÈTRE « tourne », chaque appui sur un B.P. déclenche un deuxième chronométrage en parallèle pour savoir si c’est un clic long ou un clic court. Avouez que ce compteur interne au microcontrôleur est d’un usage bien commode, surtout avec la fonction dédiée millis() intégrée dans l’I.D.E. d’Arduino.

>>> Page suivante.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *