Salve a tutti, tramite l' uso di un Arduino Pro Micro sto emulando una tastiera HID.
Tutto funziona come dovrebbe, tranne la variabile "tempo".
Mi spiego meglio, ho impostato un ritardo nella lettura del pulsante premuto e un ritardo nel loop completo, dopo aver mandato in programazzione l' emulazione funziona perfettamente, i tempi sono quelli previsti ma se stacco la periferica della porta USB e la riattacco allora i tempi si allungano tantissimo, diventa 10 o 20 volte più lento.
Da cosa potrebbe dipendere? vi allego il codice che utilizzo.
Grazie mille
const int ritardo = 10 ; //sono i millisecondi di attesa dopo la pressione di un pulsante
const int ritardoloop =10; //Ritardo del loop dopo aver eseguito una operazione
const int pinButton1 = 2; // Pulsante per aumentare il valore (non invia)
const int pinButton2 = 3; // Pulsante per diminuire il valore (non invia)
const int pinButton3 = 4; // Pulsante per confermare e inviare il nuovo valore
const int pinButton4 = 5; // Pulsante per Abilitare/Disabilitare l' emulazione
void setup() {
pinMode(pinButton1, INPUT_PULLUP);
pinMode(pinButton2, INPUT_PULLUP);
pinMode(pinButton3, INPUT_PULLUP);
pinMode(pinButton4, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
if (!digitalRead(pinButton1)) { //se il pulsante viene premuto (a GND)
Keyboard.press('x');
Keyboard.releaseAll();
delay(ritardo);
}
if (!digitalRead(pinButton2)) { //se il pulsante viene premuto (a GND)
Keyboard.press('c');
Keyboard.releaseAll();
delay(ritardo);
}
if (!digitalRead(pinButton3)) { //se il pulsante viene premuto (a GND)
caricaInEprom(); //conferma e carica i nuovi valori in EPROM
}
if (!digitalRead(pinButton4)) { //se il pulsante viene premuto (a GND)
Keyboard.press('z');
Keyboard.releaseAll();
delay(ritardo*4);
}
delay(ritardoloop);
}
nessuno riesce ad essermi di aiuto?
darmi qualche indicazione su cosa potrebbe essere.
è evidente che quando la periferica viene riconosciuta successivamente qualcosa cambio nello sketch.. nelle tempistiche etc..
:o :o :o
Guarda che io non ho preteso proprio nulla e sono calmissimo. Chiedere è lecito e rispondere è cortesia.
Sicuramente ho portato un pò fretta e chiedo scusa se mi sono lasciato prendere dall' urgenza che ho nel risolvere il problema, però anche mi sembri un pochino agitato.
Scusami ancora.
ecco lo scketch, ci mancava la funzione finale.
const int ritardo = 10 ; //sono i millisecondi di attesa dopo la pressione di un pulsante
const int ritardoloop =10; //Ritardo del loop dopo aver eseguito una operazione
const int pinButton1 = 2; // Pulsante per aumentare il valore (non invia)
const int pinButton2 = 3; // Pulsante per diminuire il valore (non invia)
const int pinButton3 = 4; // Pulsante per confermare e inviare il nuovo valore
const int pinButton4 = 5; // Pulsante per Abilitare/Disabilitare l' emulazione
void setup() {
pinMode(pinButton1, INPUT_PULLUP);
pinMode(pinButton2, INPUT_PULLUP);
pinMode(pinButton3, INPUT_PULLUP);
pinMode(pinButton4, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
if (!digitalRead(pinButton1)) { //se il pulsante viene premuto (a GND)
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('w');
Keyboard.releaseAll();
caricaInEprom(); //carica immediatamente i nuovi dati nell' emulatore
delay(ritardo);
}
if (!digitalRead(pinButton2)) { //se il pulsante viene premuto (a GND)
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('e');
Keyboard.releaseAll();
caricaInEprom(); //carica immediatamente i nuovi dati nell' emulatore
delay(ritardo);
}
if (!digitalRead(pinButton3)) { //se il pulsante viene premuto (a GND)
caricaInEprom(); //conferma e carica i nuovi valori in EPROM
}
if (!digitalRead(pinButton4)) { //se il pulsante viene premuto (a GND)
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('t');
Keyboard.releaseAll();
delay(ritardo*6);
}
delay(ritardoloop);
}
void caricaInEprom(){
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press('s');
Keyboard.releaseAll();
delay(ritardo);
}
Va bhè, ho imparato la lezione....
Ho fatto altre prove, anche con un altro Arduino ma il risultato non cambia.
Riporto su la discussione sperando che ci sia qualcuno che non ha letto e che possa aiutarmi in qualche modo.
Grazie