start:arduino:millis
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
start:arduino:millis [2025/03/11 08:51] – [3. Exemples 3.1 Définir différents intervalles de temps] admin | start:arduino:millis [2025/03/11 09:05] (Version actuelle) – [Notes et avertissements] admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======== Fonctions millis ======== | ======== Fonctions millis ======== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ==Description== | ||
+ | |||
+ | Renvoie le nombre de millisecondes écoulées depuis que la carte Arduino a commencé à exécuter le programme en cours. Ce nombre débordera (reviendra à zéro) après environ 50 jours. | ||
+ | |||
+ | ==Notes et avertissements== | ||
+ | |||
+ | *La valeur de retour de millis() est de type unsigned long, des erreurs logiques peuvent se produire si un programmeur essaie d' | ||
+ | |||
+ | *millis() est incrémenté (pour les puces AVR 16 MHz et certaines autres) toutes les 1,024 millisecondes, | ||
+ | |||
+ | ***millis() reviendra à 0 après environ 49 jours (micros en environ 71 minutes).** | ||
+ | |||
+ | *La reconfiguration des temporisateurs du microcontrôleur peut entraîner millis()des lectures inexactes. Les cœurs « Arduino AVR Boards » et « Arduino megaAVR Boards » utilisent Timer0 pour générer des millis(). Les cœurs « Arduino ARM (32 bits) Boards » et « Arduino SAMD (32 bits ARM Cortex-M0+) Boards » utilisent le temporisateur SysTick. | ||
+ | |||
Ligne 27: | Ligne 44: | ||
Voici un petit morceau de code pour afficher ce compteur dans la console de l’IDE Arduino. | Voici un petit morceau de code pour afficher ce compteur dans la console de l’IDE Arduino. | ||
- | <code c millis.ino> | + | <code c millis020.ino> |
// Déclaration variable ValeurMillis qui va servir à stocker une valeur au format unsigned long | // Déclaration variable ValeurMillis qui va servir à stocker une valeur au format unsigned long | ||
unsigned long ValeurMillis; | unsigned long ValeurMillis; | ||
Ligne 53: | Ligne 70: | ||
Voici un petit exemple de code que vous pouvez utiliser : | Voici un petit exemple de code que vous pouvez utiliser : | ||
- | <code c millis002.ino> | + | <code c millis031.ino> |
// La broche numérique 2 est reliée à la led rouge. On lui donne le nom Ledrouge. | // La broche numérique 2 est reliée à la led rouge. On lui donne le nom Ledrouge. | ||
const int Ledrouge = 2; | const int Ledrouge = 2; | ||
Ligne 101: | Ligne 118: | ||
} | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====3.2 Définir plusieurs intervalles de temps==== | ||
+ | |||
+ | Imaginons que nous souhaitons faire clignoter 2 LED mais à différents moment avec un intervalle de temps différents. | ||
+ | |||
+ | Voici un petit exemple de code que vous pouvez utiliser : | ||
+ | |||
+ | <code c millis032.ino> | ||
+ | ////////////////// | ||
+ | // La broche numérique 2 est reliée à la led rouge. On lui donne le nom Ledrouge. | ||
+ | const int Ledrouge = 2; | ||
+ | // Déclaration variable ledState qui va servir à stocker une valeur au format bool soit LOW ou HIGH. | ||
+ | bool LedrougeState; | ||
+ | // Déclaration variable LedrougepreviousMillis qui va servir à stocker une valeur au format unsigned long. | ||
+ | unsigned long LedrougepreviousMillis = 0; | ||
+ | // Déclaration variable Ledrougeinterval qui va servir à stocker une valeur au format unsigned int. | ||
+ | unsigned int Ledrougeinterval; | ||
+ | // Déclaration variable Ledrougeinterval1 qui va servir à stocker une valeur au format unsigned int. | ||
+ | // On lui donne la valeur de 1000 qui correspondra à intervalle 1 de clignotement (millisecondes) | ||
+ | unsigned int Ledrougeinterval1 = 1000; | ||
+ | // Déclaration variable Ledrougeinterval2 qui va servir à stocker une valeur au format unsigned int. | ||
+ | // On lui donne la valeur de 100 qui correspondra à intervalle 2 de clignotement (millisecondes) | ||
+ | unsigned int Ledrougeinterval2 = 100; | ||
+ | |||
+ | ////////////////// | ||
+ | const int Ledverte = 3; | ||
+ | bool LedverteState; | ||
+ | unsigned long LedvertepreviousMillis = 0; | ||
+ | unsigned int Ledverteinterval; | ||
+ | unsigned int Ledverteinterval1 = 2000; | ||
+ | unsigned int Ledverteinterval2 = 500; | ||
+ | |||
+ | void setup() { | ||
+ | // Définit Ledrouge comme sortie. | ||
+ | pinMode(Ledrouge, | ||
+ | // Définit Ledverte comme sortie. | ||
+ | pinMode(Ledverte, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Lit la valeur millis() et stock ça valeur dans currentMillis au format unsigned long | ||
+ | unsigned long currentMillis = millis(); | ||
+ | | ||
+ | ////////////////// | ||
+ | // Si currentMillis - LedrougepreviousMillis >= Ledrougeinterval on exécute les actions entre {} | ||
+ | if (currentMillis - LedrougepreviousMillis >= Ledrougeinterval) | ||
+ | { | ||
+ | // Stock la valeur de currentMillis dans la variable LedrougepreviousMillis | ||
+ | LedrougepreviousMillis = currentMillis; | ||
+ | // Si LedrougeState == LOW on exécute les actions entre {} | ||
+ | if (LedrougeState == LOW) { | ||
+ | // La variable LedrougeledState prend la valeur de HIGH | ||
+ | LedrougeState = HIGH; | ||
+ | // Stock la valeur de Ledrougeinterval2 dans interval | ||
+ | Ledrougeinterval = Ledrougeinterval2; | ||
+ | } | ||
+ | // | ||
+ | else { | ||
+ | // La variable LedrougeState prend la valeur de LOW | ||
+ | LedrougeState = LOW; | ||
+ | // Stock la valeur de Ledrougeinterval1 dans interval | ||
+ | Ledrougeinterval = Ledrougeinterval1; | ||
+ | } | ||
+ | // Met la broche numérique stockée dans Ledrouge soit 2 à la valeur de LedrougeState | ||
+ | digitalWrite(Ledrouge, | ||
+ | } | ||
+ | | ||
+ | ////////////////// | ||
+ | if (currentMillis - LedvertepreviousMillis >= Ledverteinterval) | ||
+ | { | ||
+ | LedvertepreviousMillis = currentMillis; | ||
+ | if (LedverteState == LOW) { | ||
+ | LedverteState = HIGH; | ||
+ | | ||
+ | } | ||
+ | else { | ||
+ | LedverteState = LOW; | ||
+ | Ledverteinterval = Ledverteinterval1; | ||
+ | } | ||
+ | digitalWrite(Ledverte, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== autre exemple ==== | ||
+ | |||
+ | <code c millisautre001.ino> | ||
+ | int ledPin = 2; | ||
+ | unsigned long previousMillis = 0; // Store the time of the last LED toggle | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(ledPin, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | unsigned long currentMillis = millis(); // Get the current time | ||
+ | if (currentMillis - previousMillis < 500) { | ||
+ | digitalWrite(ledPin, | ||
+ | Serial.println(" | ||
+ | Serial.println(" | ||
+ | Serial.println(" | ||
+ | } else if (currentMillis - previousMillis < 1000) { | ||
+ | digitalWrite(ledPin, | ||
+ | Serial.println(" | ||
+ | Serial.println(" | ||
+ | Serial.println(" | ||
+ | } else{ | ||
+ | previousMillis = currentMillis; | ||
+ | } | ||
+ | } | ||
</ | </ |
/home/chanteri/www/fablab37110/data/attic/start/arduino/millis.1741679460.txt.gz · Dernière modification : 2025/03/11 08:51 de admin