bouton-poussoir.ino
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.
}