Saluti a tutti... (di nuovo)
... quindi nuovo progetto...
Sto lavorando con la tastiera a matrice 3x4,
e per farla funzionare ho attinto a tutorial e arduino forum...
Fin qui tutto OK. Funziona e visualizza su Display LCD 20x4 I2C il tasto premuto.
Ora sorge la necessità di "capire" se premo due bottoni simultaneamente, o meglio, se premo, per esempio, prima il tasto '#' e lo mantengo, e successivamente il tasto '1' .
Con la combinazione di questi due tasti eseguire una azione.
Stavo studiando la libreria e mi era venuto in mente di usare
la funzione "setHoldTime(unsigned int time)" e poi usare la "KeyState getState()" per sapere se il primo tasto è in hold... sono ancora in alto mare.
usare un array per memorizzare però due pressioni in sequenza... e non simultanee...
oppure eseguire un confronto in OR a bit... ma il problema sarebbe quale dei due tasti è stato premuto per primo...
Sono davvero incasinato... sembrava una cosa semplice... ed invece...
Qualcuno ha già avuto lo stesso problema? Quale sarebbe la strada più semplice... e magari anche elegante?
Grazie
Potresti da programma, se ho ricevuto un carattere # il successivo è un comando!
In effetti... però sta di fatto che il comando # lo uso anche come cancella dato immesso, in un caso particolare (ma qui è in un "if" quindi non fa testo).
Quindi facendo prima il tasto '#' e lo mantengo, e successivamente il tasto '1' ... mi servirebbe per definire il fatto di caricare "pagine" diverse con diversi dati visualizzati...
... quindi... sarei più propenso nel seguire la prima delle mie affermazioni...
Scusa ma perché devi tenere per forza premuto un tasto mentre ne premi un secondo?
Non puoi dire "premi il tasto # e POI il tasto 1 per fare A, il 2 per fare B, eccetera, oppure nuovamente # per annullare" (con i relativi messaggi sull'LCD)? tu quando vedi il "#" alzi un qualche flag, quindi alla successiva pressione di un altro tasto sapendo che il precedente è "#" fai una cosa diversa...
se stai usando la libreria "KEYPAD by Mark Stanley, Alexander Brevig...", che trovi nella gestione librerie, c'è proprio l'esempio "multiKey" che utilizza il metodo "stateChanged"...verifica fino a 10 pulsanti premuti contemporaneamente....adattarlo al tuo scopo dovrebbe essere "semplice".