Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Fais 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
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Arduino