ESP32 C3 Super Mini - Bouton - Appui Long Appui Court

Apprenez à programmer votre ESP32 C3 Super Mini pour détecter les événements d'appui long et d'appui court du bouton. Ce didacticiel couvre tout, du câblage de base aux techniques d'antirebond avancées pour une détection fiable de l'entrée du bouton.

Dans ce didacticiel, vous apprendrez:

ESP32 C3 Super Mini - Bouton - Appui Long Appui Court

Matériel Requis

1×ESP32 C3 Super Mini
1×Câble USB Type-C
1×Bouton avec Capuchon Montage Breadboard
1×Ensemble de Boutons Montage Breadboard
1×Bouton Poussoir Montage Panneau
1×Module bouton poussoir
1×Plaque d'essai
1×Fils de Liaison
1×(Optionnel) Connecteur d'Alimentation CC

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Bouton

Un bouton poussoir est un simple appareil d'entrée qui complète un circuit électrique lorsqu'il est appuyé.

Caractéristiques clés pour les projets ESP32 C3 Super Mini:

  • Deux états: appuyé (LOW) et relâché (HIGH) lorsque vous utilisez le tirage interne
  • Peut détecter plusieurs types de presse: appui court, appui long et double-clic
  • Nécessite un antirebond pour une détection fiable dans les projets réels
  • Fonctionne avec les résistances de tirage internes de l'ESP32 C3 Super Mini

Ressources supplémentaires sur les boutons:

Schéma de Câblage

Connectez votre bouton à l'ESP32 C3 Super Mini en suivant le diagramme ci-dessous.

Schéma de Câblage du Bouton ESP32 C3 Super Mini

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Remarques importantes:

  • Ce didacticiel utilise la résistance de tirage interne
  • L'état du bouton est HIGH lorsqu'il n'est pas appuyé et LOW lorsqu'il est appuyé
  • Aucune résistance externe requise

Comment Détecter l'Appui Court

Détecter un appui court sur l'ESP32 C3 Super Mini implique de mesurer la durée entre les événements d'appui et de relâchement du bouton.

Méthode de détection d'appui court:

  • Mesurer le temps entre les événements d'appui et de relâchement
  • Si la durée est plus courte qu'une heure prédéfinie, l'événement d'appui court est détecté
  • Comparez la durée de l'appui par rapport à votre seuil SHORT_PRESS_TIME

Implémentation étape par étape:

  • Définir la durée maximale de l'appui court
#define SHORT_PRESS_TIME 500 // 500 milliseconds
  • Détecter le bouton est appuyé et enregistrer l'heure d'appui
if(prev_state == HIGH && button_state == LOW) pressed_time = millis();
  • Détecter le bouton est relâché et enregistrer l'heure de relâchement
if(prev_state == LOW && button_state == HIGH) released_time = millis();
  • Calculer la durée de l'appui et
long press_duration = released_time - pressed_time;
  • Déterminer l'appui court en comparant la durée de l'appui avec le temps d'appui court défini
if( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected");

Code ESP32 C3 Super Mini pour détecter l'appui court

Ce code démontre comment détecter l'appui court du bouton sur l'ESP32 C3 Super Mini.

Ce que le code fait:

  • Lit l'état du bouton en utilisant la résistance de tirage interne
  • Calcule la durée entre l'appui et le relâchement
  • Détecte l'appui court si la durée est inférieure à 500 ms
  • Imprime le résultat de la détection sur le Moniteur Série
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 500 // 500 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } // save the the last state prev_button_state = button_state; }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Télécharger le code: Copiez le code ci-dessus et téléchargez-le sur votre ESP32 C3 Super Mini via l'IDE Arduino
  • Câbler le matériel: Connectez le bouton à votre ESP32 C3 Super Mini en suivant le schéma de câblage
  • Tester le bouton: Appuyez brièvement le bouton plusieurs fois
  • Vérifier les résultats: Ouvrez le Moniteur Série (115200 bauds) pour voir les résultats de la détection
  • Conseil Pro: Vous pouvez ajuster la valeur SHORT_PRESS_TIME pour rendre la détection d'appui court plus rapide ou plus lente
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Note:

Le Moniteur Série peut imprimer plusieurs appuis courts pour un seul appui. C'est un comportement normal du bouton. Ce comportement s'appelle le "phénomène de chattering". Nous apprendrons à éliminer ce problème plus tard dans ce didacticiel.

Comment Détecter l'Appui Long

Il y a deux méthodes pour détecter les événements d'appui long du bouton sur l'ESP32 C3 Super Mini.

Deux cas d'utilisation pour la détection d'appui long:

  • L'événement d'appui long est détecté immédiatement après le relâchement du bouton
  • L'événement d'appui long est détecté pendant que le bouton est en cours d'appui

Première méthode (détecter au relâchement):

  • Mesurer la durée du temps entre l'événement d'appui et l'événement de relâchement
  • Si la durée est plus longue qu'une heure prédéfinie, l'événement d'appui long est détecté

Deuxième méthode (détecter pendant l'appui):

  • Mesurer le temps d'appui de façon continue pendant que le bouton est maintenu
  • Si la durée dépasse le temps prédéfini, détectez immédiatement l'appui long
  • Continuer la vérification jusqu'à ce que le bouton soit relâché

Code ESP32 C3 Super Mini pour détecter l'appui long au relâchement

Ce code ESP32 C3 Super Mini détecte l'appui long après le relâchement du bouton.

Ce que ce code fait:

  • Mesure la durée totale de l'appui de l'appui au relâchement
  • Compare la durée par rapport à LONG_PRESS_TIME (1000 ms)
  • Détecte l'appui long uniquement après le relâchement du bouton
  • Utile lorsque vous devez confirmer la durée complète de l'appui
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if(prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Télécharger le code: Copiez et téléchargez le code ci-dessus sur l'ESP32 C3 Super Mini via l'IDE Arduino
  • Tester l'appui long: Appuyez et maintenez le bouton pendant plus d'une seconde, puis relâchez
  • Vérifier le Moniteur Série: Ouvrez le Moniteur Série à 115200 bauds pour voir les résultats
  • Conseil Pro: Cette méthode est meilleure lorsque vous avez besoin que l'action se produise après le relâchement du bouton, pas pendant l'appui
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A long press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Code ESP32 C3 Super Mini pour détecter l'appui long pendant l'appui

Ce code détecte l'appui long immédiatement pendant que le bouton est toujours enfoncé.

Ce que ce code fait:

  • Vérifie continuellement la durée de l'appui pendant que le bouton est maintenu
  • Détecte l'appui long instantanément lorsque la durée dépasse le seuil
  • Déclenche l'action immédiatement sans attendre le relâchement
  • Idéal pour les applications en temps réel
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if(prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; } if(is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Télécharger le code: Téléchargez le code ci-dessus sur votre ESP32 C3 Super Mini via l'IDE Arduino
  • Tester pendant l'appui: Appuyez et maintenez le bouton pendant plusieurs secondes (ne relâchez pas immédiatement)
  • Observer la synchronisation: Remarquez que la détection se produit pendant que vous appuyez toujours
  • Conseil Pro: Cette méthode fournit une rétroaction instantanée et est meilleure pour les applications sensibles au temps comme les fonctions de réinitialisation d'usine
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Comment Détecter l'Appui Long et l'Appui Court

Combinez les deux types d'appui pour ajouter plusieurs fonctions à un seul bouton sur votre ESP32 C3 Super Mini.

Appui Court et Appui Long après relâchement

Ce code ESP32 C3 Super Mini détecte les deux types d'appui après le relâchement du bouton.

Ce que ce code fait:

  • Distingue entre appui court et appui long en fonction de la durée
  • Prend la décision après le relâchement du bouton
  • Utilise un seul seuil (LONG_PRESS_TIME) pour différencier
  • Active deux actions différentes à partir d'un bouton
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Télécharger le code: Téléchargez le code ci-dessus sur l'ESP32 C3 Super Mini via l'IDE Arduino
  • Tester les deux types: Essayez l'appui long (maintien > 1 seconde) et l'appui court (tapotement rapide)
  • Vérifier le Moniteur Série: Ouvrez le Moniteur Série pour voir quel type d'appui est détecté
  • Conseil Pro: Définissez LONG_PRESS_TIME pour correspondre au comportement attendu de votre utilisateur (généralement 500-1500 ms fonctionne bien)
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Note:

Le Moniteur Série peut afficher plusieurs détections d'appui court lors d'un appui long. C'est le comportement normal du bouton. Ce comportement s'appelle le "phénomène de chattering". Le problème sera résolu dans la dernière partie de ce didacticiel.

Appui Court et Appui Long Pendant l'appui

Ce code détecte l'appui long instantanément tout en permettant toujours la détection d'appui court.

Ce que ce code fait:

  • Détecte l'appui long immédiatement lorsque le seuil est atteint
  • Détecte toujours l'appui court après relâchement si l'appui long n'a pas été déclenché
  • Fournit une rétroaction instantanée pour les actions d'appui long
  • Meilleur pour les applications nécessitant une réponse immédiate
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if (prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Télécharger le code: Téléchargez le code sur votre ESP32 C3 Super Mini via l'IDE Arduino
  • Tester la synchronisation: Essayez les tapotements rapides et les maintiens longs pour voir les différents comportements
  • Observer la réponse: Remarquez que l'appui long se déclenche immédiatement, pas au relâchement
  • Conseil Pro: Cette méthode empêche les déclenchements accidentels d'appui long puisque les utilisateurs reçoivent une rétroaction instantanée
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Appui Long et Appui Court avec Antirebond

L'antirebond élimine les lectures de bouton fausses causées par les vibrations mécaniques dans les boutons poussoirs.

Pourquoi l'antirebond est important:

  • Les boutons physiques créent du bruit électrique lorsqu'ils sont appuyés (chattering)
  • Sans antirebond, un appui peut s'enregistrer comme plusieurs appuis
  • Critique pour une détection fiable du bouton dans les projets ESP32 C3 Super Mini
  • Essentiel pour les applications nécessitant une entrée précise

Utilisation de la bibliothèque ezButton:

  • Simplifie l'implémentation de l'antirebond pour les débutants
  • Gère automatiquement la logique de synchronisation complexe
  • Fonctionne de façon fiable avec plusieurs boutons
  • Gratuit et facile à installer dans l'IDE Arduino

Appui Court et Appui Long avec antirebond après relâchement

Ce code ESP32 C3 Super Mini utilise la bibliothèque ezButton pour une détection de bouton propre et fiable.

Ce que ce code fait:

  • Implémente l'antirebond matériel en utilisant la bibliothèque ezButton
  • Élimine les fausses détections du chattering du bouton
  • Détecte avec précision les deux types d'appui après relâchement
  • Fournit une gestion de bouton prête pour la production
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) pressed_time = millis(); if (button.isReleased()) { released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Installer la bibliothèque: Installez la bibliothèque ezButton - Voir Comment
  • Télécharger le code: Téléchargez le code ci-dessus sur l'ESP32 C3 Super Mini via l'IDE Arduino
  • Tester la détection propre: Essayez les appuis longs et courts - pas plus de détections en double
  • Vérifier les résultats: Ouvrez le Moniteur Série pour voir la détection propre et précise du bouton
  • Conseil Pro: La bibliothèque ezButton élimine automatiquement tous les problèmes de chattering - utilisez-la pour tous les projets de production
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Appui Court et Appui Long avec antirebond Pendant l'appui

Ce code combine la détection d'appui long instantanée avec l'antirebond pour la meilleure expérience utilisateur.

Ce que ce code fait:

  • Détecte l'appui long immédiatement avec antirebond
  • Empêche les fausses déclenchements du rebond du bouton
  • Fournit une rétroaction instantanée pour l'appui long
  • Gère le contour l'appui court de façon propre après relâchement
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { pressed_time = millis(); is_pressing = true; is_long_detected = false; } if (button.isReleased()) { is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } }

Étapes Rapides

  • Nouveau sur ESP32 C3 Mini? Terminez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Configuration de l'IDE: Si c'est la première fois que vous utilisez l'ESP32 C3 Super Mini, voir comment configurer l'environnement pour l'ESP32 C3 Super Mini sur l'IDE Arduino
  • Installer la bibliothèque: Installez la bibliothèque ezButton - Voir Comment
  • Télécharger le code: Téléchargez le code sur votre ESP32 C3 Super Mini via l'IDE Arduino
  • Tester la fiabilité: Appuyez plusieurs fois sur le bouton - remarquez aucune lecture en double
  • Comparer les méthodes: C'est la méthode la plus fiable pour les projets ESP32 C3 Super Mini de production
  • Conseil Pro: Utilisez cette méthode pour les applications critiques comme les réinitialisations d'appareils ou les contrôles importants où la précision est essentielle
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Pourquoi Avez-Vous Besoin d'Appui Long et d'Appui Court

Comprendre quand utiliser la détection d'appui long et d'appui court améliore vos projets ESP32 C3 Super Mini.

Avantages pratiques:

  • Économiser les broches: Un seul bouton peut contrôler deux ou plusieurs fonctions (appui court pour lumière, appui long pour ventilateur)
  • Prévenir les accidents: Utiliser l'appui long pour les fonctions critiques comme la réinitialisation d'usine pour éviter l'activation accidentelle
  • Meilleur UX: Les utilisateurs peuvent effectuer plusieurs actions sans matériel supplémentaire
  • Économies de coûts: Moins de boutons signifie des circuits plus simples et des coûts de composants plus faibles
  • Économe d'espace: Idéal pour les projets ESP32 C3 Super Mini compacts avec un espace limité
  • Conception professionnelle: Les boutons multifonction sont standard dans l'électronique grand public

Applications courantes:

  • Appui court: Basculer LED, incrémenter compteur, sélectionner menu
  • Appui long: Réinitialisation d'usine, mise hors tension, entrée en mode de configuration, effacement de la mémoire

Défiez-vous

Amenez vos compétences en boutons ESP32 C3 Super Mini au niveau suivant avec ces défis pratiques.

  • Facile: Modifiez le code pour utiliser différents seuils de temps (par exemple, 300 ms pour court, 2000 ms pour long)
  • Facile: Ajoutez un troisième type de presse - appui très court (moins de 200 ms) pour les actions rapides
  • Moyen: Contrôlez deux LED avec un bouton - appui court bascule la LED rouge, appui long bascule la LED verte
  • Moyen: Implémentez une détection de double-clic aux côtés de l'appui court et long
  • Avancé: Créez un détecteur de séquence de bouton qui reconnaît les motifs (court-long-court)
  • Avancé: Construisez un dispositif ESP32 C3 Super Mini multi-mode où l'appui long parcourt les modes et l'appui court active le mode actuel

Idées d'Application

Voici les idées de projets pratiques utilisant la détection d'appui long et d'appui court du bouton ESP32 C3 Super Mini.

  • Contrôleur de lumière domotique - appui court pour on/off, appui long pour le mode de gradation
  • Système d'alarme ESP32 C3 Super Mini - appui court pour armer/désarmer, appui long pour le mode panique
  • Dispositif minuterie - appui court pour démarrer/arrêter, appui long pour réinitialiser
  • Thermostat multifonction - appui court ajuste la température, appui long bascule le mode chauffage/refroidissement
  • Serrure de porte IoT - appui court pour déverrouiller temporairement, appui long pour déverrouillage permanent
  • Capteur alimenté par batterie - appui court pour vérifier l'état, appui long pour entrer en mode veille profonde

Section Vidéo

Regardez la vidéo ci-dessous pour une procédure pas à pas visuelle du projet ESP32 C3 Super Mini appui long et appui court du bouton.

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !