Ceci est un exemple d’utilisation du millis() qui vous sera très utile pour créer en autre des décomptes, des rythmes. On peut s’en servir pour remplacer des delay().
Pour cette exemple, on utilise:
– un arduino
– un bouton
– une led
La led qu’on utilise va s’allumer toutes les 2 secondes. Plus on appuie sur le bouton, plus l’intervale pendant laquelle la led est éteinte va diminuer jusqu’à atteindre zéro et à ce moment revenir à sa valeur initiale 2 secondes.
Pour le montage:
Il faut tout simplement, un bouton câblé sur la pin digital 10 avec une résistance de 10k ohm à la masse (gnd) et une led en pin digital 6.
Pour le code:
On commence par déclarer les variables et les pins qu’on utilise. Dans les variables, on va se servir de variables « unsigned long » car elles vont utiliser l’horloge de l’arduino qui compte en milliseconds et donc il va devoir gérer des valeurs très grandes, d’où le « long« .
Ensuite, on déclare l’état des pins et le protocole de communication qui va nous servir à lire les valeurs du bouton.
On commence par lire la valeur digital du bouton et déclaré que la variable temps correspond à la valeur de l’horloge de l’arduino en millisecondes.
On imprime les différentes valeurs qui vont nous être utiles dans le serial moniteur, à savoir:
– la valeur du bouton
– la valeur « temps », donc l’horloge de l’arduino
– l’intervale, car il va fluctuer selon nos actions
Tout d’abord, on commence par faire une sorte blink. Le premier « if() » vérifie constamment le temps et toutes les 2 sec, il va allumer brièvement la led et stocker une valeur de l’horloge (« temps ») que l’on appelle « lastTemps ». Pour vérifier si 2 sec se sont écoulés, ce qu’on fait avec le code, c’est faire la différence entre le temps actuel et cette valeur qu’on a stocké, si elle est supérieure à l’intervale de 2 sec alors elle effectue ce qui se trouve dans le « if() ». Si 2 sec ne sont pas passé la led reste éteinte.
Pour rajouter une action, chaque fois que le bouton est allumé on retire 10 millisecondes à l’intervalle et donc le clignotement de la led sera de plus en plus rapide. Par contre, lorsque l’intervale est inférieure ou égale à 0, on le ré-initialise à 2 sec.
Voici le code commenté ici : variableTemps