# Arduino pro Micro pins A0-A3 pour des boutons

**URL:** <https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964>\
**Category:** Français\
**Created:** [February 23, 2025, 12:12am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964 "2025-02-23T00:12:07Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 12:12am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/1 "2025-02-23T00:12:07Z")

</div>

Bonjour,  
j'ai modifié un Shifter Fanatec SQ 1.5 en enlevant les capteurs Hall et en les remplaçant par des microswitches, pilotés par une Arduino Pro Micro.  
ça fonctionnait très bien.  
J'ai voulu utiliser les pins restant pour commander des boutons, sans resistances, en utilisant PULLUP. Ca marche très bien pour les pins 14-16, pas du tout pour 18-21 (= A0-A3).  
je ne comprends pas pourquoi. en les appelant par le pin 18 ou par A0, ça ne change rien...

testé pinMode(18, INPUT\_PULLUP) et pinMode(A0, INPUT) et le code actuel... idem.

j'ai vu ce sujet[https://forum.arduino.cc/t/cant-manage-to-get-pro-micro-pins-a0-a2-to-act-as-digital-outputs/1239147](https://forum.arduino.cc/t/cant-manage-to-get-pro-micro-pins-a0-a2-to-act-as-digital-outputs/1239147) mais je n'ai pas accès à ce matériel.

Y a t il une solution autre ?

il n'y a pas de matrice, et je ne souhaite pas en faire. les boutons sont cablés directement chacun à la carte.  
soudures et contacts vérifiés. boutons aussi. problème dans le code ou la manière de faire ...  
Merci.

mon code

```arduino
// Fanatec shifter mod

#include <Joystick.h>

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
                   18, 0, // Button Count, Hat Switch Count
                   false, false, false, // No X and Y Z Axis
                   false, false, false, // No Rx, Ry, or Rz
                   false, false, // No rudder or throttle
                   false, false, false); // No accelerator, brake, or steering
// ************
void setup() {

    // switch off RX TX leds
  pinMode(LED_BUILTIN_TX, INPUT);
  pinMode(LED_BUILTIN_RX, INPUT);

  // Initialize Joystick Library
  Joystick.begin();

  // Initialize Button Pins for windows butons
    // Speed shifter position R 1 2 3 4 5 6 7 Upshift DnShift H/Seq // extra btns 1 2 3 4 5 6 7  
    // Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
    // Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
  // for arduino leonardo and micro only

  for (int i = 0; i <= 10; i++){
    pinMode(i, INPUT_PULLUP);
  }
  for (int i = 14; i <= 16; i++){
    pinMode(i, INPUT_PULLUP);
  }
  //for (int i = 18; i <= 21; i++){
    pinMode(A0, INPUT_PULLUP);
    pinMode(A1, INPUT_PULLUP);
    pinMode(A2, INPUT_PULLUP);
    pinMode(A3, INPUT_PULLUP);
  //}
          // test only **************
          //Serial.begin(9600); //This pipes to the serial monitor
}

// ***********
boolean ShifterMode;
boolean currentButtonState;
boolean lastButtonState[18] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};      
// max btn inputs = 18

void UpdateButton(byte i) {
      currentButtonState = !digitalRead(i);
      if (currentButtonState != lastButtonState[i]) {
        Joystick.setButton(i, currentButtonState);
        lastButtonState[i] = currentButtonState;
        }
}

// ***********
void loop() {
  // Read pin values

  for (byte i = 14; i <= 16; i++){
        UpdateButton(i);
      }
  //for (byte i = 18; i <= 21; i++){
        //UpdateButton(i);
      currentButtonState = !digitalRead(A0);
      if (currentButtonState != lastButtonState[18]) {
        Joystick.setButton(18, currentButtonState);
        lastButtonState[18] = currentButtonState;
      }
      currentButtonState = !digitalRead(A1);
      if (currentButtonState != lastButtonState[19]) {
        Joystick.setButton(19, currentButtonState);
        lastButtonState[19] = currentButtonState;
      }
      currentButtonState = !digitalRead(A2);
      if (currentButtonState != lastButtonState[20]) {
        Joystick.setButton(20, currentButtonState);
        lastButtonState[20] = currentButtonState;
      }
      currentButtonState = !digitalRead(A3);
      if (currentButtonState != lastButtonState[21]) {
        Joystick.setButton(21, currentButtonState);
        lastButtonState[21] = currentButtonState;
      }
  //}
  
  ShifterMode = digitalRead(10); // read pin 10 if gnded H mode
  Joystick.setButton(10, ShifterMode);

  if (ShifterMode == 1) {
            //Serial.println("Mode SEQ");
    for (byte i = 8; i <= 9; i++){
    // seq mode, btn 8 and 9 for Upshift DnShift Speed 3 and 4
        UpdateButton(i);
      }
  } else {
            //Serial.println("Mode H");
    for (byte i = 0; i <= 7; i++){
        //H mode btn 7 is Reverse and bnts 0 to 6 gears
        UpdateButton(i);
      }
  }
  delay(50);
}

```

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 9:03am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/2 "2025-02-23T09:03:55Z")

</div>

Bonjour shiftermodarduino

> [@shiftermodarduino](#):
>
> Ca marche très bien pour les pins 14-16

Quel modèle as tu?  
De 14 - 16 c'est un mini (sans port USB)

> [@shiftermodarduino](#):
>
> pas du tout pour 18-21 (= A0-A3)

C'est un Micro.

Dans ton cas, le mieux est de ne pas t'adresser directement ainsi aux pin analogiques, mais de conserver la terminologie Arduino, avec A0, A1,A2... et ainsi rendre transparent le numéro des pin quelque soit le modèle.  
Pour ce faire de façon pratique, il faut mettre les pin en tableau:

```arduino
enum {bouton1, bouton2, bouton3, bouton4};
const int btnPin[] = {A0, A1, A2, A3}; // Pin des boutons
const int btnNombre = sizeof(btnPin) / sizeof(btnPin[0]); // Nombre de boutons

```

Pour les initialiser dans Setup();

```arduino
  for (int b = 0; b < btnNombre; b ++) {
    pinMode(btnPin[b], INPUT_PULLUP);
  }

```

Pour lire les boutons:

```arduino
	if (digitalRead(btnPin[bouton2]) == LOW)
	{
		Serial.println("Bouton 2 pressé");
	}

```

Cordialement  
jpbbricole

---

<div class="post-metadata">

**Author:** ![68tjs](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/68tjs/32/927374_2.png) [@68tjs](https://forum.arduino.cc/u/68tjs)\
**Post date:** [February 23, 2025, 9:29am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/3 "2025-02-23T09:29:59Z")

</div>

> [@jpbbricole](#):
>
> Dans ton cas, le mieux est de ne pas t'adresser directement ainsi aux pin analogiques, mais de conserver la terminologie Arduino, avec A0, A1,A2... et ainsi rendre transparent le numéro des pin quelque soit le modèle.

Pas tout a fait, même pas du tout avec certaines cartes.  
Ce que tu écris est valable pour des micro d’architecture avr, ce qui est le cas des micros des cartes micro, mini, uno, nano,mega.  
Pas sûr que ce le soit pour une carte avec micro espressif, rasp ou stm32 qui sont aussi gérées par l’IDE.

Le juge de paix est le fichier pinarduino.h de la carte utilisée, il se trouve dans le repertoire ”variant” de l’IDE.

Il est tout a fait officiellement prévu par Arduino d’utiliser A0 ou 14 avec un atmega 328, pour l’atmega de la carte leonardo/micro je ne connais pas le contenu de son fichier pinarduino.h

A mon avis, c’est même mieux car en faisant ainsi on sépare bien les usages numériques des usages analogiques, sans compter tout ceux qui ignorent que ces pins sont avant tout numériques.

Si ce n’est pas plus répandu c’est par habitude parce que sur les cartes on trouve A0 et non pas 14.

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 9:42am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/4 "2025-02-23T09:42:41Z")

</div>

(post deleted by author)

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 9:59am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/5 "2025-02-23T09:59:02Z")

</div>

c'est une AVR, donc ça devrait marcher.  
je teste ça.  
Merci beaucoup , parce que c'est pas intuitif...

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 10:13am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/6 "2025-02-23T10:13:41Z")

</div>

Bonjour shiftermodarduino

> [@shiftermodarduino](#):
>
> parce que c'est pas intuitif...

En effet 😉

Un autre avantage de cette "technique" est que si tu a un nombre conséquent de boutons, tu n'a pas besoin que tes ports se suivent, ainsi tu pourrais avoir:  
const int btnPin[] = {A0, 7, 5, A1}; // Pin des boutons

Bonne journée  
jpbbricole

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 10:21am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/7 "2025-02-23T10:21:26Z")

</div>

> [@68tjs](#):
>
> Pas tout a fait, même pas du tout avec certaines cartes.  
> Ce que tu écris est valable pour des micro d’architecture avr, ce qui est le cas des micros des cartes micro, mini, uno, nano,mega.  
> Pas sûr que ce le soit pour une carte avec micro espressif, rasp ou stm32 qui sont aussi gérées par l’IDE.

Je parle bien de terminologie Arduino, donc de cartes Arduino, quelque soit leur processeur, ainsi si l'on prends [la Nano ESP32](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/2), on a bien des pin A0 à A7.  
Donc rien à voir avec l'architecture du proceseur, mais uniquement avec la terminologie Arduino.

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 10:28am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/8 "2025-02-23T10:28:46Z")

</div>

bon ben ça marche pas...

```arduino
// Fanatec shifter mod

#include <Joystick.h>

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
                   18, 0, // Button Count, Hat Switch Count
                   false, false, false, // No X and Y Z Axis
                   false, false, false, // No Rx, Ry, or Rz
                   false, false, // No rudder or throttle
                   false, false, false); // No accelerator, brake, or steering

 // ***********
  // for A0 to A3 input, specific way to adress on AVR boards
  enum {butonA0, butonA1, butonA2, butonA3};
  const int btnPin[] = {A0, A1, A2, A3}; // Pins used
  const int btnNumber = sizeof(btnPin) / sizeof(btnPin[0]); // Number of btns

  boolean ShifterMode;
  boolean currentButtonState;
  boolean lastButtonState[18] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};      
  // max btn inputs = 18

// ************
void setup() {

    // switch off RX TX leds
  pinMode(LED_BUILTIN_TX, INPUT);
  pinMode(LED_BUILTIN_RX, INPUT);

  // Initialize Joystick Library
  Joystick.begin();

  // Initialize Button Pins for windows butons
    // Speed shifter position R 1 2 3 4 5 6 7 Upshift DnShift H/Seq // extra btns 1 2 3 4 5 6 7  
    // Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
    // Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
  // for arduino leonardo and micro only

  for (int i = 0; i <= 10; i++){
    pinMode(i, INPUT_PULLUP);
    }
  for (int i = 14; i <= 16; i++){
    pinMode(i, INPUT_PULLUP);
    }
  for (int b = 0; b < btnNumber; b ++) {
      pinMode(btnPin[b], INPUT_PULLUP);
    }
          // test only **************
          //Serial.begin(9600); //This pipes to the serial monitor
}

void UpdateButton(int i) {
      currentButtonState = !digitalRead(i);
      if (currentButtonState != lastButtonState[i]) {
        Joystick.setButton(i, currentButtonState);
        lastButtonState[i] = currentButtonState;
        }
}

void UpdateButtonAnalog(int j) {
      int k;
      k = j+18; 
      currentButtonState = !digitalRead(btnPin[j]);
      if (currentButtonState != lastButtonState[k]) {
        Joystick.setButton(k, currentButtonState);
        lastButtonState[k] = currentButtonState;
        }
}
// ***********
void loop() { // Read pin values

  for (int i = 14; i <= 16; i++){
        UpdateButton(i);
    }
  //for (byte i = 18; i <= 21; i++){ //UpdateButton(i); //}
  for (int b = 0; b < btnNumber; b ++) {
      UpdateButtonAnalog(b);
    }
  
  ShifterMode = digitalRead(10); // read pin 10 if gnded H mode
  Joystick.setButton(10, ShifterMode);

  if (ShifterMode == 1) { //Serial.println("Mode SEQ");
    for (int i = 8; i <= 9; i++){ // seq mode, btn 8 and 9 for Upshift DnShift Speed 3 and 4
        UpdateButton(i);
      }
    for (int i = 0; i <= 7; i++){
        Joystick.setButton(i, 0);  
    }
  } else { //Serial.println("Mode H");
    for (int i = 0; i <= 7; i++){ //H mode btn 7 is Reverse and bnts 0 to 6 gears
        UpdateButton(i);
      }
    for (int i = 8; i <= 9; i++){
        Joystick.setButton(i, 0);  
      }
  }
  delay(50);
}

```

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 10:38am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/9 "2025-02-23T10:38:04Z")

</div>

Bonjour shiftermodarduino

> [@shiftermodarduino](#):
>
> bon ben ça marche pas...

Qu'est ce qui ne marche pas, quel est ton modèle d'Arduino?  
Tu as bien un côté des boutons à GND?

Cordialement  
jpbbricole

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 10:45am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/10 "2025-02-23T10:45:52Z")

</div>

Petite correction dans ton programme:

Tu fais:

```arduino
void UpdateButtonAnalog(int j) {
      int k;
      k = j+18;

```

j va de 0 à 3.

Ton tableau a une dimension:  
`lastButtonState[18]`  
de 0 à 17.  
Donc tu est en dehorsdu tableau.

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 10:56am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/11 "2025-02-23T10:56:21Z")

</div>

Arduino Pro Micro AtMega32U4  
Dans l'IDE j'ai Tools/Boards/Arduino Micro/Arduino AVR boards/Arduino Micro  
et dans boards manager Arduino AVR boards 1.8.6 installé  
Ce sont de simples BP à 2 poles, un relié au pin de la carte, l'autre au GND.  
Avec la dernière version du script postée ci-dessus, pas d'erreur de compil ni d'exécution, les microswitches de du shifter fonctionnent, ainsi que les BP reliés aux pins 15 à17, mais pas les BP reliés à A0-A3.

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 10:59am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/12 "2025-02-23T10:59:28Z")

</div>

```arduino
    // Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
    // Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18

```

zut !  
confusion entre les boutons du joystick sous windows et les pins de la carte....

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 11:09am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/13 "2025-02-23T11:09:30Z")

</div>

puis-je fire qqch comme ça ?

```arduino
const int btnPin[] = {SwH1, SwH2, SwH3, SwH4, SwH5, SwH6, SwH7, SwHR, SwSeqUp, SwSeqDn, SwMode, Btn1, Btn2, Btn3, Btn4_A0 = "A0", Btn5_A1="A1", Btn6_A2="A2", Btn7_A3="A3"}; // Pins used

```

ou

```arduino
const int btnPin[] = {SwH1, SwH2, SwH3, SwH4, SwH5, SwH6, SwH7, SwHR, SwSeqUp, SwSeqDn, SwMode, Btn1=15, Btn2=16, Btn3=17, Btn4_A0=18, Btn5_A1=19, Btn6_A2=20, Btn7_A3=21}; // Pins used

```

```arduino
  const int btnPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17, A0, A1, A2, A3}; // Pins used

```

?

---

<div class="post-metadata">

**Author:** ![al1fch](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/al1fch/32/979602_2.png) [@al1fch](https://forum.arduino.cc/u/al1fch)\
**Post date:** [February 23, 2025, 11:15am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/14 "2025-02-23T11:15:40Z")

</div>

Bonjour

Si la carte est une Pro Micro, c'est une carte Sparkfun , pas la carte Micro d'Arduino.

Pour la trouver dans l'IDE ajouter l'extension Sparkfun AVR dans le gestionnaire de cartes

 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/0/4/a/04af4e7ddf4db9d8b2fd90d398957e1664bc8b4c.png)

l'IDE pourra alors utiliser un fichier de définition _pinarduino.h_ totalement adapté à cette carte qui présente quelques différences avec la carte Micro d'Arduino

 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/5/b/8/5b8076c9c550f208045c1a44b6fc1afcba511829.png)

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 11:37am UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/15 "2025-02-23T11:37:10Z")

</div>

script simplifié

```arduino
// Fanatec shifter mod
//compile and uplaod with Sparkfun/Sparkfun Pro Micro in card manager in Arduino IDE

#include <Joystick.h>

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
                   18, 0, // Button Count, Hat Switch Count
                   false, false, false, // No X and Y Z Axis
                   false, false, false, // No Rx, Ry, or Rz
                   false, false, // No rudder or throttle
                   false, false, false); // No accelerator, brake, or steering

// ***********
// for A0 to A3 input, specific way to adress on AVR boards
enum { SwH1, SwH2, SwH3, SwH4, SwH5, SwH6, SwH7, SwHR, SwSeqUp, SwSeqDn, SwMode, Btn1, Btn2, Btn3, Btn4_A0, Btn5_A1, Btn6_A2, Btn7_A3};
const int btnPin[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17, A0, A1, A2, A3 }; // Pins used
// Initialize Button Pins for windows butons
// Speed shifter position R 1 2 3 4 5 6 7 Upshift DnShift H/Seq // extra btns 1 2 3 4 5 6 7
// Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
// Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
// for arduino leonardo and micro only

const int btnNumber = sizeof(btnPin) / sizeof(btnPin[0]); // Number of btns

boolean ShifterMode;
boolean currentButtonState;
boolean lastButtonState[18] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW };
// max btn inputs = 18

// ************
void setup() {

  // switch off RX TX leds
  pinMode(LED_BUILTIN_TX, INPUT);
  pinMode(LED_BUILTIN_RX, INPUT);

  // Initialize Joystick Library
  Joystick.begin();

  for (int b = 0; b < btnNumber; b++) {
    pinMode(btnPin[b], INPUT_PULLUP);
  }
  // test only **************
  //Serial.begin(9600); //This pipes to the serial monitor
}

void UpdateButton(int i) {
  currentButtonState = !digitalRead(btnPin[i]);
  if (currentButtonState != lastButtonState[i]) {
    Joystick.setButton(i, currentButtonState);
    lastButtonState[i] = currentButtonState;
  }
}

// ***********
void loop() { // Read pin values

  for (int i = 0; i < btnNumber; i++) {
    UpdateButton(i);
  }

  delay(50);
}

```

mais j'ai perdu la carte en passant à sparkfun... pourtant l'upload a marché.  
elle n'apparait plus dans windows /joystick.cpl  
j'ai relancé l'IDE, débranché, rebranché, je n'ai plus que le port COM1, elle était sur COM6 avant...

peripherique USB inconnu dans le gestionnaire de periph windows... echec de demande de descripteur  
j'ai desinstallé le periph, debranché, rebooté, rien n'y fait...Mis à jour driver sparkfun, win10. pas mieux....

j'ai plus accès à la carte, pourtant sa diode s'allume.

je fais quoi maintenant ????

un REset de la carte ? puis quel bootloader dois je utiliser ?  
et au dos il y a 3.5 V et 5.5 V mais aucun n'est barré. Elle peut utiliser les deux modes ?

??????

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 3:52pm UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/16 "2025-02-23T15:52:22Z")

</div>

j'ai raccordé un BP entre gnd et reset  
en dble press j'arrive à selectionner le port com 11 arduino leonardo  
windows deconnecte et reconnecte la carte, elle reste non reconnue ds le gestionnaire de periphs windows  
qd je recommence, pas moyen de faire Ctl R + Ctl U (compile et upload) avant que la carte ne se deconnecte ...

```arduino
avrdude: ser_open(): can't open device "\\.\COM11": Le fichier sp�cifi� est introuvable.

Failed uploading: uploading error: exit status 1

```

j'ai essayé avec carte AVR arduino micro comme c'etait avant, ou avec carte sparkfun pro micro, ça change rien.

je ne sais pas aller plus loin...  
je fais quoi maintenant ?

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [February 23, 2025, 3:59pm UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/17 "2025-02-23T15:59:21Z")

</div>

Est ce que ta carte "monte" et "descend" continuellement?

---

<div class="post-metadata">

**Author:** ![al1fch](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/al1fch/32/979602_2.png) [@al1fch](https://forum.arduino.cc/u/al1fch)\
**Post date:** [February 23, 2025, 4:03pm UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/18 "2025-02-23T16:03:55Z")

</div>

Carte Pro Micro 3V ou 5V ?

les fabricants de clones de cartes Sparkfun Pro Micro ne prennent pas toujours le temps de faire le marquage distinctif

un indice : présence d'un Quartz 8MHz (version 3,3V) ou 16MHZ (version 5V)  
 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/2/5/0/2504a4f36d738653c3c04d35eb6f667ac7934299.png)

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 4:06pm UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/19 "2025-02-23T16:06:14Z")

</div>

qd je double press RESET, elle est detectée COMM11 ds l'IDE, puis se deconnecte avant qu'un upload n'ait le tps de se faire.

j'ai sur le COM11  
VID x2341  
PID x0036  
SN null

---

<div class="post-metadata">

**Author:** ![shiftermodarduino](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/shiftermodarduino/32/1126741_2.png) [@shiftermodarduino](https://forum.arduino.cc/u/shiftermodarduino)\
**Post date:** [February 23, 2025, 4:07pm UTC](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964/20 "2025-02-23T16:07:48Z")

</div>

vu que j'ai mis une carte perforée dessus pour raccorder mes fils, je ne voie plus le dessus de la carte...

[Next page](https://forum.arduino.cc/t/arduino-pro-micro-pins-a0-a3-pour-des-boutons/1356964.md?page=2)
