Utilisation GPIO Portenta H7 via Portenta Hat Carrier

Bonjour,
j'ai récemment fait l'acquisition de la Portenta H7 et de la Hat Carrier. J'ai suivi le tutorial (https://docs.arduino.cc/tutorials/portenta-h7/setting-up-portenta/), le clignotement de la LED_BUILTIN fonctionne bien mais je voudrais maintenant faire un test avec le Push Button (PB1) disponible sur la Hat Carrier qui est connecté à GPIO1. Le problème est que je ne parviens pas à trouver le numéro de broche de la pin GPIO1 lié à ce bouton (const int buttonPin = ??). La schematic de la Hat Carrier montre que GPIO1 est connecté à la broche 48 du connecteur haute densité J2 (voir image ci-dessous). Or, j'ai testé avec const int buttonPin = 48 et ce ne fonctionne pas donc je pense que la déclaration n'est pas si simple. Je suis donc aller chercher le nom du port du microcontroller, il s'agit de PC15 (voir ABX00042-full-pinout.pdf). Est-ce ce qu'il faut utiliser? Merci d'avance de votre aide!

Code basique que j'essaye de faire fonctionner

const int buttonPin = ?; // the number of the pushbutton (PB1) pin connected to GPIO1 
int buttonState = 0;

void setup() {
  // initialize the LED pin as an output:
  pinMode(LED_BUILTIN, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  
  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    digitalWrite(LED_BUILTIN, LOW); 
    delay(1000);                     
    digitalWrite(LED_BUILTIN, HIGH); 
    delay(1000);                     
  } else {
    digitalWrite(LED_BUILTIN, HIGH); 
  }
}

la doc dit bien GPIO_1 en effet - ils expliquent

Push button (x1) used to flash the bootloader by making a long press during boot. This button can also be used as a user-programmable button connected to GPIO1

je n'ai pas cette carte mais avez vous essayé simplement avec

const byte buttonPin = D1;

Vu ici

Il semblerait qu'il y ait un _ entre GPIO et le n° donc, peut-être, GPIO_1

Avec l'installation du support pour cette carte dans l'IDE, il n'y a pas de programmes de démonstration comme avec les autres cartes?

je viens d'installer le core de cette carte et j'ai testé

error: 'GPIO_1' was not declared in this scope

les "petits noms" connus sont dans le fichier

Bonjour, merci pour votre réponse. Pourquoi D1? Pouvez-vous m'expliquer?

Non, dans File > Examples > 01.Basics les programmes ne semblent pas spécifiques au portenta H7. Dans le get started du H7 (https://docs.arduino.cc/tutorials/portenta-h7/setting-up-portenta/) il demande meme de faire des modifs dans le Blink.ino alors que c'est le programme de base. Vous feriez donc: const int buttonPin = GPIO_1; ? Merci pour votre aide.

Je ne vois pas de GPIO dans la liste :thinking:

Ben non…
Ça compilera pas

C’est pour ça que je disais d’essayer avec D1 ou juste 1

Le bouton est connecté à GPIO1 dont j'ignore la bonne declaration de pin, je ne vois pas comment essayer avec D1 ou juste 1 pourrait résoudre le problème. Si vous pouviez m'expliquer merci beaucoup.

La GPIO 1 est souvent référencée parD1 ou juste 1…
Essayez et vous verrez si ça fonctionne.

Ce code fonctionne ! Merci pour votre aide.

Il faut donc passer par un "_" pour la declaration.

const PinName buttonPin = PC_15;  // pushbutton (PB1) pin connected to GPIO1
int buttonState = 0;

void setup() {
  // initialize the LED pin as an output:
  pinMode(LED_BUILTIN, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    digitalWrite(LED_BUILTIN, LOW);
  } else {
    digitalWrite(LED_BUILTIN, HIGH);
  }
}

OK donc c’était PC_15 !

Ce bouton est quand même un peu dangereux car si l’utilisateur le tient appuyé au boot on passe en mode flash du bootloader

Vous faites reference à cette partie de la datasheet de la Hat ? Quelle serait le risque car je n'ai pas bien compris, est-ce vraiment qu'au power up?

8.6 Board Recovery
Portenta C33 or Portenta H7: In case a sketch locks up the processor and the board is not reachable anymore via USB, bootloader mode can be accessed by double-tapping the reset button right after powering up.

non celle ci

Je ne trouve pas ce paragraphe dans la datasheet de la Hat, ni de la H7. Vous pouvez m'indiquer ou precisement?

ah - je viens de voir que c'était table 3 Page 7 mais c'est la doc de 2023. La doc de 2024 ne le dit plus.

Ah d'accord. Si je ne l'utilise quand single press rapide ca ne devrait pas soucis je pense. Mais ca aurait été bien d'avoir un bouton unique qui n'est pas connecté à BOOT...

image

oui... cela dit vous pouvez en rajouter un :slight_smile:

Oui c'est vrai, mais j'en ai pas sous le coude :sweat_smile:

on trouve des kits pas chers en Asie :slight_smile:

https://fr.aliexpress.com/item/1005006480743277.html