bouton-poussoir.ino

Arduino Portenta H7 · Archivo : bouton-poussoir.ino · Lenguaje : Arduino · Uso : Lire un bouton avec anti-rebond sur la Portenta

El montaje botón/LED pasa tal cual a la Portenta: el core Arduino Mbed ofrece INPUT_PULLUP y digitalRead con la misma semántica. El comentario ya piensa en la versión por interrupción para el modo de bajo consumo.

Hardware

Un Arduino Portenta H7 (módulo ST STM32H747 doble núcleo Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 MB SDRAM, conector high-density), alimentado por USB-C o 5 V. 1 botón pulsador + cable hacia GND.

Cableado

Botón entre el pin D2 del conector y GND (pull-up interno). Revisa el esquema de la carrier board para la correspondencia de pines.

Funcionamiento

Validación del nivel tras 30 ms de estabilidad; la pulsación (LOW) enciende el LED y escribe por USB-C.

Ejecución

Arduino IDE con el core « Arduino Mbed OS Portenta Boards »: elige « Portenta H7 » (núcleo M7), el puerto USB-C y Subir. El selector M7/M4 del modo DFU permite cargar también el núcleo M4.

Variantes

Pasar a interrupción (attachInterrupt) para despertar la placa del sueño, o filtrar en hardware (biestable 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.
}

← Volver a la ficha