Note

Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Explorez en profondeur Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Assistance d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprenez et partagez : Échangez des astuces et des tutoriels pour enrichir vos compétences.

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé aux annonces de nouveaux produits et d’aperçus exclusifs.

  • Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des tirages au sort et des promotions spéciales.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

1.10 Détection de Changement d’État

Aperçu

Avec un bouton, vous pouvez non seulement l’utiliser pour allumer ou éteindre la LED lorsque le bouton est enfoncé ou relâché, mais aussi changer l’état de fonctionnement de la LED à chaque appui. Pour cela, il est nécessaire de savoir quand l’état du bouton passe de off à on, autrement dit, réaliser une « détection de changement d’état ». Dans cette leçon, nous afficherons les résultats de la détection de changement d’état du bouton dans le moniteur série.

Composants requis

../_images/list_1.10.png

Circuit Fritzing

Dans cet exemple, nous utilisons la broche 2 pour lire le signal du bouton.

../_images/image40.png

Schéma électronique

../_images/image412.png

Code

Note

  • Vous pouvez ouvrir directement le fichier 1.10_stateChangeDetection.ino dans le dossier sunfounder_vincent_kit_for_arduino\code\1.10_stateChangeDetection.

  • Ou copier ce code dans l’IDE Arduino.

Après avoir téléversé le code sur la carte Mega2560, le nombre affiché dans le moniteur passera de 0 à 1 à chaque pression sur le bouton.

Analyse du Code

Déclarez une broche connectée au bouton.

const int  buttonPin = 2;

Déclarez une variable appelée 「detectionState」pour enregistrer chaque état de détection de changement.

int detectionState = 0;

Déclarez deux variables pour lire l’état du bouton lors de la détection de changement d’état.

int buttonState = 0;
int lastButtonState = 0;

Dans setup(), initialisez les broches puis activez le moniteur série.

pinMode(buttonPin, INPUT);
Serial.begin(9600);

Dans loop(), lisez la valeur de buttonPin puis attribuez-la à la variable buttonState.

buttonState = digitalRead(buttonPin);

Comparez buttonState avec lastButtonState. S’ils sont différents, cela signifie qu’il y a eu un changement d’état. Un délai de 50 ms est nécessaire pour éviter les rebonds lors de la détection du changement. Après comparaison, assignez buttonState à lastButtonState pour le prochain cycle de détection.

if (buttonState != lastButtonState) {
...
    delay(50);
}
lastButtonState = buttonState;

Lorsque le changement d’état est détecté (buttonState != lastButtonState), une vérification supplémentaire est effectuée pour détecter l’événement 「Pression du bouton」.

if (buttonState == HIGH) {
...
    }

Dans l’état 「Pression du bouton」, detectionState est modifié pour alterner entre 1 et 0. En même temps, la valeur de detectionState est affichée.

detectionState=(detectionState+1)%2;
Serial.print("The detection state is:");
Serial.println(detectionState);

Illustration du phénomène

../_images/image413.png