Menu
CoddyTech

Basculer à chaque pression

Fait partie de la section Entrées du Journey Arduino de Coddy. Leçon 4 sur 22.

Jusqu’à présent, la LED a copié le bouton : allumée quand on le maintient enfoncé, éteinte quand on le relâche. Un interrupteur de lampe fonctionne différemment : on appuie une fois pour allumer, puis une autre fois pour éteindre. C’est un basculement.

Pour basculer, le programme doit détecter le moment où le bouton s’enfonce : il est enfoncé maintenant, mais ne l’était pas la dernière fois que loop() s’est exécutée. Ce moment s’appelle un front. Conserve la dernière lecture dans une variable au-dessus de setup(), comme un compteur :

int lastReading = HIGH;

void loop() {
  int reading = digitalRead(2);
  if (reading == LOW && lastReading == HIGH) {
    // le bouton a été enfoncé
  }
  lastReading = reading;
}

Maintenir le bouton enfoncé garde la lecture à LOW, donc le front se produit une fois par pression, quelle que soit la durée pendant laquelle tu le maintiens.

Pour inverser un bool, utilise !, qui signifie « non » : ledOn = !ledOn; transforme true en false et inversement.

challenge icon

Défi

Moyen

Le bouton est sur la broche 2 (INPUT_PULLUP) et la LED sur la broche 13. À chaque pression, inverse l’état de la LED :

  • lorsque le bouton est enfoncé (LOW maintenant, HIGH la dernière fois), inverse ledOn
  • enregistre la lecture dans lastReading à la fin de loop()
  • allume ou éteins la LED selon la valeur de ledOn

Appuie sur Run, appuie quelques fois sur le bouton, puis sur Check.

Essayez vous-même

const int buttonPin = 2;
const int ledPin = 13;

bool ledOn = false;
int lastReading = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int reading = digitalRead(buttonPin);
  // inverse ledOn lorsque le bouton est enfoncé
  // mémorise cette lecture pour la prochaine fois
  // allume ou éteins la LED selon la valeur de ledOn
}
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 Entrées

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