Duda funcion loop()

Hola,

Estoy utilizando la librería Keyboard.h y me gustaría que al mantener accionado el pulsador, solo escriba un carácter y no vuelva a escribir hasta que suelte y vuelva a accionar. Solo un carácter

#include <Keyboard.h>

void setup() {

  pinMode(2, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  
 while (digitalRead(2) == HIGH) {
  delay(500);
  }
  Keyboard.press(97);
  Keyboard.releaseAll();
  delay(1000);
}

A ver si pueden ilustrarme un poco. Gracias

Piénsalo de esta manera: en tu programa pones la condición de que "haga algo" cuando una entrada esté en lo alto, por eso mientras esté presionado el botón "hará ese algo" . La solución pasa por solo detectar la transición de bajo a alto, que solo sucede una vez al presionar el botón.
Saludo

Te refieres a if/else?

Saludos y gracias por responder.

Hola! Por ejemplo te puede servir el if.

Lo que tu has puesto es que MIENTRAS está en estado HIGH haga el carácter.

Si solamente quieres que haga un carácter (como un teclado convencional entiendo) pon el if digital Read2 y lo del keyboard, sin else y creo q debería funcionarte!!

Suerte!

Que duda tienes con la función loop() ? lee esto para aclarar tus dudas sobre ese tema.

Es difícil ayudarte porque no pones tu código completo.

Que hay en el pin 2 ?
ten en cuenta que si lo configuras en INPUT_PULLUP lo normal es que es que el pin 2 este en HIGH.

Una pregunta muy importante: Que Arduino estas usando ?

Si solamente quieres que haga un carácter (como un teclado convencional entiendo) pon el if digital Read2 y lo del keyboard, sin else y creo q debería funcionarte!!

Gracias por contestar Luck_,
Con el condicional if, se repite infinitas veces mientras el pulsador está accionado. Yo quiero que escriba una letra mientras se queda pulsado.

Es difícil ayudarte porque no pones tu código completo

Gracias por la ayuda Kike_GL
El código que estoy utilizando es el que he puesto arriba, es muy sencillo.

Que hay en el pin 2 ?

Una pregunta muy importante: Que Arduino estas usando ?

Estoy utilizando Arduino Pro Micro

Un saludo

Mira éste post, ahí esta tu respuesta

rockmartinez:
Estoy utilizando Arduino Pro Mini

Ese Arduino tiene ATmega328 y la libreria Keyboard es para micros: 32u4 y SAND.

Hola

Ese Arduino tiene ATmega328 y la libreria Keyboard es para micros: 32u4 y SAND.

La que utilizo tiene ATmega32U4. El problema que tenía era de código, no de hardware.

Finalmente lo he solucionado con una función booleana.

#include <Keyboard.h>   

int pulsador = 2;
bool estado = true;
bool estado_anterior = true;

void setup(){
   
      pinMode(pulsador, INPUT_PULLUP);
      Keyboard.begin();
     }

void loop(){
  
      estado = digitalRead(pulsador);      
      if (estado != estado_anterior)
     {
        if (estado == LOW)
        Keyboard.write(97);
        Keyboard.releaseAll();
        delay(40);
        estado_anterior = estado;
     }
     

}

Gracias por el interés. Un saludo