.. 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 [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui ! .. _ar_state_change: 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 -------------------- .. image:: img/list_1.10.png * :ref:`cpn_mega2560` * :ref:`cpn_breadboard` * :ref:`cpn_wires` * :ref:`cpn_button` * :ref:`cpn_resistor` Circuit Fritzing ------------------ Dans cet exemple, nous utilisons la broche 2 pour lire le signal du bouton. .. image:: img/image40.png Schéma électronique --------------------- .. image:: img/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. .. raw:: html 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. .. code-block:: arduino const int buttonPin = 2; Déclarez une variable appelée 「detectionState」pour enregistrer chaque état de détection de changement. .. code-block:: arduino int detectionState = 0; Déclarez deux variables pour lire l'état du bouton lors de la détection de changement d'état. .. code-block:: arduino int buttonState = 0; int lastButtonState = 0; Dans setup(), initialisez les broches puis activez le moniteur série. .. code-block:: arduino pinMode(buttonPin, INPUT); Serial.begin(9600); Dans loop(), lisez la valeur de buttonPin puis attribuez-la à la variable buttonState. .. code-block:: arduino 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. .. code-block:: arduino 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」. .. code-block:: arduino 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. .. code-block:: arduino detectionState=(detectionState+1)%2; Serial.print("The detection state is:"); Serial.println(detectionState); Illustration du phénomène ---------------------------- .. image:: img/image413.png