bouton-poussoir.ino

Arduino Portenta H7 · Fichier : bouton-poussoir.ino · Langage : Arduino · Usage : Lire un bouton avec anti-rebond sur la Portenta

Le montage bouton/LED passe tel quel sur la Portenta : le core Arduino Mbed fournit INPUT_PULLUP et digitalRead avec la même sémantique. Le commentaire pense déjà à la version interruption pour le mode basse consommation.

Matériel requis

Une Arduino Portenta H7 (module ST STM32H747 double cœur Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 Mo SDRAM, connecteur haut-density), alimentée par USB-C ou 5 V. 1 bouton poussoir + câble vers GND.

Câblage

Bouton entre la broche D2 du connecteur et GND (pull-up interne). Vérifier le schéma de la carrier board pour la correspondance des broches.

Fonctionnement

Validation du niveau après 30 ms de stabilité ; l'appui (LOW) allume la LED et écrit sur l'USB-C.

Exécution

Arduino IDE avec le core « Arduino Mbed OS Portenta Boards » : choisir « Portenta H7 » (cœur M7), le port USB-C puis Téléverser. Le sélecteur M7/M4 du mode DFU permet de charger aussi le cœur M4.

Variantes

Passer en interruption (attachInterrupt) pour réveiller la carte en sommeil, ou débouncer en matériel (bascule RS).

bouton-poussoir.ino

// Bouton sur D2 (vers GND) + LED, anti-rebond 30 ms.
const int BOUTON = 2;

bool stable = HIGH, precedent = HIGH;
unsigned long dernierBord = 0;

void setup() {
  pinMode(BOUTON, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool lecture = digitalRead(BOUTON);
  unsigned long maintenant = millis();

  if (lecture != precedent) dernierBord = maintenant;
  if (maintenant - dernierBord >= 30 && lecture != stable) {
    stable = lecture;
    digitalWrite(LED_BUILTIN, stable == LOW);
    Serial.println(stable == LOW ? "appui" : "relache");
  }
  precedent = lecture;

  // A 480 MHz, boucle de polling ne coute rien ; en basse
  // consommation, mieux vaudrait une interruption EXTI.
}

← Retour à la fiche