Teclado Arduino Leonardo

Boa noite, estou montado uma série de botões ao qual utiliza o teclado arduino. Estou usando as chaves tipo ON/OFF porém em uma das posições fica repetindo a mesma tecla mesmo utilizando o comando conter. Já na outra posição é pressionada apenas uma vez. Alguém poderia ajudar?
Segue o programa:
#include <Keyboard.h>
int i = 0;
int counter;
int counter2;

void setup() {
// make pin 2 an input and turn on the
// pullup resistor so it goes high unless
// connected to ground:
pinMode(2, INPUT);
Keyboard.begin();
}

void loop() {
// Chaves ON / OFF
if (digitalRead(2) == LOW) {
if (digitalRead(2) == LOW) {
for (counter = 0; counter <1; ++ counter) {
Keyboard.write(65); //Send an ASCII 'B',
delay (500);
}
}
if (digitalRead(2) == HIGH) {
for (counter2 = 0; counter2 <1; ++ counter2) {
Keyboard.write(66); //Send an ASCII 'B',
delay (500);
}
}
}
}

Vê lá se assim funciona.

void loop() {
// Chaves ON / OFF

     if (digitalRead(2) == LOW) {
      for (counter = 0; counter <1; ++ counter) {
      Keyboard.write(65);  //Send an ASCII 'B',
     delay (500);
      }
     }
     if (digitalRead(2) == HIGH) {
      for (counter2 = 0; counter2 <1; ++ counter2) {
      Keyboard.write(66);  //Send an ASCII 'B',
     delay (500);
      }
    }
  
}

Com esta programação fica repetindo as letras em ambas as posições as chaves.

I've deleted your other cross-post @Marcelo_Cabeleira.

Cross-posting is against the rules of the forum. The reason is that duplicate posts can waste the time of the people trying to help. Someone might spend 15 minutes (or more) writing a detailed answer on this topic, without knowing that someone else already did the same in the other topic.

Repeated cross-posting will result in a suspension from the forum.

In the future, please take some time to pick the forum board that best suits the topic of your question and then only post once to that forum board. This is basic forum etiquette, as explained in the sticky "How to use this forum - please read." post you will find at the top of every forum board. It contains a lot of other useful information. Please read it.

Thanks in advance for your cooperation.

Experimenta algo assim...

void loop() {

   key_press(2, 65, 66);

}

void key_press (int pin, char keyOn, char keyOff) {
   static char _keyHelp = 0;
   char pinValue = digitalRead(pin);

//detecta flanco
   if (pinValue == LOW && _keyHelp != pinValue) {
      Keyboard.write(keyOn);  //Send an ASCII 'B'
   }
   if (pinValue == HIGH && _keyHelp != pinValue) {
      Keyboard.write(keyOff);  //Send an ASCII 'B'
   }
   delay(100);


//guarda estado do pino...
   _keyHelp = pinValue; 
}

O que tu precisas de saber é quando uma tecla mudou de estado e não se está na mesma posição. Eu creio que a lógica como está deve funcionar, mas convém experimentar e talvez necessite de mais um bit, mas acho que não.

Experimenta e diz como corre.