la Fonction : Millis


La fonction "delay" permet de temporiser un événement dans un programme, cependant lorsqu'elle est effective rien d'autre ne peut fonctionner.

 

Par exemple, imaginons un projet de domotique dans lequel nous aurions une sonnette (buzzer et bouton poussoir) et une commande d'ouverture de la porte à distance (via Bluetooth par exemple). Si quelqu'un appuis sur le bouton et déclenche le buzzer, la sonnerie retentit alors, mais si le code du buzzer possède la fonction delay, alors il faudra attendre la fin de la sonnerie avant de pouvoir actionner l'ouverture de la porte. Car la fonction "delay" stoppe en quelque sorte le programme complet.

 

D'où l'intérêt de la fonction "Millis" qui elle n'arrête pas l'exécution du programme.

I. Principes


Le principe est simple, la fonction "Millis" utilise l'horloge interne de la carte Arduino, qui se réinitialise tous les 49,7 jours et qui se décompte en millisecondes.

 

En d'autre terme au lieu de stopper le programme comme le fait la fonction "Delay", la fonction "Millis" vérifie le temps écouler depuis la dernière fois que le programme a exécuté le code que l'on souhaite grâce à cette horloge interne, et le compare avec l'intervalle auquel on voulait qu'il s'exécute.

 

Par exemple dans le cas d'une LED que l'on voudrait faire clignoter, la fonction Millis vérifie l'heure en cours (grâce à l'horloge interne), et si la différence entre l'heure à laquelle la LED a clignoté la dernière fois est plus grande que l'intervalle auquel on souhaite faire clignoter la LED, exécute le code pour la faire clignoter, sinon il est libre exécuter autre chose.

II. Exemple : Blink sans delay


Pour mieux comprendre la fonction, prenons l'Hello World de l'Arduino, le programme d'initiation que l'on test en premier lorsqu'on apprend à ce servir d'une Arduino : j'ai nommé le Blink.

 

Mais ici, nous allons y appliquer la fonction Millis,avec dans un premier temps le montage suivant :

Notes de montage : le circuit doit être branché sur l'une des PIN numériques (ici par exemple sur la PIN 13) et sur le - (Gnd). La sortie + (5V), n'est pas utilisée pour le Blink car l’alimentation électrique ce fait par la PIN 13.

 

Attention ! L'emploi d'une LED nécessite toujours l'utilisation d'une résistance.  La résistance choisie dépend de la couleur de la LED.

La composition du code est la suivante :

ce programme est disponible directement à partir de l'Arduino IDE, le programme d'Arduino sous le nom de Blink Without Delay.

 

Il vous suffit d'aller sur Fichier, puis Exemple, puis 02.Digital et BlinkWithoutDelay.

 

ce programme et ses explications sont disponibles en téléchargement ici : sur Mega.

Sources


Rappel :


les images présentent appartiennent au Domaine public et sont l’œuvre de Peggy_Marco sur le site Pixabay : https://pixabay.com/fr/users/Peggy_Marco-1553824/   ou proviennent du projet Fritzing : http://fritzing.org/home/