Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Le moulin à vent...
16 juin 2021

Une gestion du temps non bloquante

Le programme Blink fait appel à la commande delay() qui met en pause le programme plus ou moins longtemps en fonction de la durée indiquée entre parenthèse (durée en milliseconde). 

Le problème est qu'alors le programme est bloqué et qu'aucune autre commande ne peut être exécutée en arrière plan.

Le code ci-dessous permet de régler ce problème :

unsigned long t_ini = 0;
long delta_t = 1000;
int sig = LOW;

void setup(){
pinMode(4, OUTPUT);
}

void loop(){
unsigned long temps = millis();
if(temps-t_ini>=delta_t){
t_ini = temps;
if(sig == LOW){
sig = HIGH;
}
else{
sig = LOW;
}
digitalWrite(4, sig);
}// fin de if
}// fin de loop

Autrement, la gestion des durées peut s'effectuer avec les commandes suivantes :

Tab. - la gestion des durées et du temps.
CommandeDescription
delay() Suspend le programme pendant la durée (en millisecondes) spécifiée comme paramètre.
delayMicroseconds() Suspend le programme pendant la durée (en microsecondes) spécifiée par le paramètre. Actuellement, la plus grande valeur qui produira un délai précis est 16383. Pour les délais supérieurs à quelques milliers de microsecondes, vous devez utiliser delay().
micros() Renvoie le nombre de microsecondes depuis que la carte Arduino a commencé à exécuter le programme en cours. Ce nombre va déborder (revenir à zéro), après environ 70 minutes.
millis() Renvoie le nombre de millisecondes écoulées depuis que la carte Arduino a commencé à exécuter le programme en cours. Ce nombre débordera (remise à zéro), après environ 50 jours.
Publicité
Publicité
Commentaires
Publicité
Archives
Publicité