Faire clignoter avec un bouton
Fait partie de la section Gestion du temps sans delay du Journey Arduino de Coddy. Leçon 5 sur 18.
Un sketch qui n’attend jamais peut surveiller un bouton et faire clignoter une LED en même temps. Chaque boucle ne prend que quelques microsecondes, donc la carte vérifie l’état du bouton des milliers de fois par seconde et détecte même une pression très brève.
Le clignotement suit le modèle millis(). Le bouton utilise la détection de front de la section Inputs : agir lorsque le bouton est enfoncé maintenant et ne l’était pas lors de la boucle précédente. ! signifie « non », donc !wasPressed se lit « n’était pas enfoncé ».
bool wasPressed = false;
void loop() {
// le clignotement : if (now - previous >= 500) { ... }
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed && !wasPressed) {
// le bouton vient d’être enfoncé
}
wasPressed = pressed;
}Mets les deux parties dans loop(), l’une après l’autre, et n’utilise pas delay() dans l’une ou l’autre. Si le clignotement attendait 500 ms, une pression qui commence et se termine pendant cette attente ne serait jamais détectée.
Défi
MoyenFais faire deux choses à la carte en même temps :
- la LED rouge sur la broche 13 change d’état toutes les 500 ms, avec
millis() - chaque pression sur le bouton change l’état de la LED jaune sur la broche 12 : allumée, puis éteinte, puis allumée
Un appui rapide doit fonctionner à tout moment, et maintenir le bouton enfoncé ne change l’état de la LED jaune qu’une seule fois. Appuie sur Run, appuie sur le bouton, puis sur Check.
Essayez vous-même
const int redLed = 13;
const int yellowLed = 12;
const int buttonPin = 2;
void setup() {
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// 1. changez l’état de la LED rouge toutes les 500 ms avec millis()
// 2. chaque appui sur le bouton allume ou éteint la LED jaune
}
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