Buonasera ragazzi, prima di scrivere vi assicuro che ho cercato in lungo e in largo ma non sono stato capace di trovare risposta alle mie domande.
Ho un tastierino a matrice che sto usando con arduino. La mia necessità non è di premere un tasto e vedere un carattere visualizzato su schermo, ma è di conoscere ad ogni loop lo stato di ogni tasto, indipendentemente se questo è cambiato o no.
Tutti gli esempi che trovo riguardano la visualizzazione del carattere (es: 1 o * o # ecc...) nel monitor seriale.
I codici che sono riuscito a scrivere creano un char con il carattere del tasto premuto.
Ma, ripeto, a me serve semplicemente conoscere ad ogni loop, per ogni tasto (deve essere multipressed), se è premuto o no, niente altro.
Pensavo fosse la richiesta più basilare per chi usa questa libreria... Ma forse mi sbaglio o non ho capito che magari non fa al caso mio.
Grazie mille a chi riesce a darmi qualche dritta.
Sto pensando di risolvere nel modo seguente, cosa ne pensate?
In questo modo dovrei scongiurare la questione dei pin in corto quando si premono più pulsanti contemporaneamente, giusto?
void setup() {
pinMode(pinB3, INPUT_PULLUP);
pinMode(pinA3, INPUT_PULLUP);
pinMode(pinA1, INPUT_PULLUP);
pinMode(pinB1, INPUT_PULLUP);
pinMode(pinB2, INPUT_PULLUP);
}
void loop() {
pinMode(pinB1, OUTPUT);
digitalWrite(pinB1, LOW);
delayMicroseconds(500);
pulsanteUNO = digitalRead(pinB3);
pulsanteDUE = digitalRead(pinA3);
pulsanteTRE = digitalRead(pinA1);
pinMode(pinB1, INPUT_PULLUP);
delayMicroseconds(500);
pinMode(pinB2, OUTPUT);
digitalWrite(pinB2, LOW);
delayMicroseconds(500);
pulsanteQUATTRO = digitalRead(pinB3);
pulsanteCINQUE = digitalRead(pinA3);
pulsanteSEI = digitalRead(pinA1);
pinMode(pinB2, INPUT_PULLUP);
delayMicroseconds(500);
}
che libreria stai usando?...metti il link ...magari tra i suoi metodi c'è chi ti dice se un pulsante è premuto o rilasciato etc...
Cosa vuole dire "multipressed", che ad esempio se premi 3 tasti assieme leggi un codice della combinazione?
Comunque questo link potrebbe essere di aiuto.
Ciao.
Io ci credo benissimo
Ma rimane il fatto che non hai cercato abbastanza
Alcune discussioni sono in sticky; qualcosa vorrà dire...
Se tu avessi letto:
Aiutataci ad aiutarvi
Oppure:
La pappa è pronta
Avresti trovato
In particolare avresti trovato:
Aumentare ingressi e uscite di Arduino
Che avrebbe risolto il tuo problema
Allora ragazzi, probabilmente avete ragione e non ho cercato bene.
Non ho modo di verificare, perché comunque col codice che ho scritto sopra funziona perfettamente quindi ho risolto il problema.
Per cui se a qualcuno può essere utile può utilizzarlo perché l'ho già testato su tastiera 3x3, anche premendo più tasti contemporaneamente.
Si deve solo fare attenzione al fatto che ci sono dei delay che ho inserito per questioni di "stabilità" e di "sicurezza" per il fatto di evitare il corto tra i pin delle colonne. Per quanto "piccoli" comportano comunque un certo ritardo nel completare l'esecuzione del loop. Nel mio caso non è un problema perché deve solo leggere un tastierino e fornire un output, quindi in ottica "Human-Machine Interface" non si nota alcun problema.
Probabilmente basta molto meno di 500us, anche 10us...
Per velocizzarlo ulteriormente, poi, puoi usare PORT per le uscite e PIN per gli ingressi.
Infatti, l'ho portato a 20us e funziona bene. Lascio così.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.