Une lumière avec minuterie
Fait partie de la section Gestion du temps sans delay du Journey Arduino de Coddy. Leçon 6 sur 18.
Une lumière d’escalier s’allume lorsque vous appuyez sur son bouton et s’éteint d’elle-même un peu plus tard. Appuyez de nouveau pendant qu’elle est allumée, et le décompte recommence.
Il faut deux choses : le moment du dernier appui et savoir si la lumière est allumée. Stockez le moment dans un unsigned long lorsque le bouton est enfoncé :
if (digitalRead(buttonPin) == LOW) {
pressedAt = millis(); // démarrer (ou redémarrer) le chronomètre
lightOn = true;
digitalWrite(ledPin, HIGH);
}Ensuite, à chaque boucle, vérifiez combien de temps s’est écoulé :
if (lightOn && millis() - pressedAt >= onTime) {
lightOn = false;
digitalWrite(ledPin, LOW);
}Les deux parties n’attendent jamais, donc un appui est détecté à tout moment, même lorsque la lumière est déjà allumée. Avec delay(2000) après l’appui, un deuxième appui pendant l’attente serait perdu.
Défi
FacileConstruisez un éclairage d’escalier :
- une pression allume immédiatement la LED sur la broche 13
- 2 secondes après la pression, elle s’éteint toute seule
- une pression pendant qu’elle est allumée relance les 2 secondes
Appuyez sur Run, appuyez quelques fois sur le bouton, puis sur Check.
Essayez vous-même
const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000; // durée pendant laquelle la lumière reste allumée
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// quand le bouton est enfoncé : allumer la LED et mémoriser l’instant
// quand onTime s’est écoulé depuis cet instant : éteindre la LED
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Gestion du temps sans delay
1millis()
L’horloge millis()Les temps en unsigned longFaire clignoter sans délaiDeux LED, deux vitessesFaire clignoter avec un boutonUne lumière avec minuterieEntraînez-vous par vous-même : Playground Arduino