Buongiorno a tutti ragazzi,
ho un problema riguardo il keypad 4x4. I collegamenti li ho fatti giusti e quando vado ad eseguire questo semplice sketch:
#include <Keypad.h>
const byte riga = 4; //quattro righe
const byte colonna = 4; //quattro colonne
char keys[riga][colonna] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinRiga[riga] = {9, 8, 7, 6}; //connect to the row pinouts of the kpd
byte pinColonna[colonna] = {5, 4, 3, 2}; //connect to the column pinouts of the kpd
Keypad keypad = Keypad( makeKeymap(keys), pinRiga, pinColonna, riga, colonna );
void setup()
{
Serial.begin(9600);
}
void loop()
{
char key = keypad.getKey();
if (key) {
Serial.print("Tasto ");
Serial.print(key);
Serial.println(" premuto");
}
}
il risultato è quello che ad ogni tasto premuto mi stampa il corrispettivo valore in seriale. Fin qui tutto ok. Il problema sta nel dare una funzione/azione a un tasto.
Avevo intenzione di modificare lo sketch precedente cosi:
void loop()
{
char key = keypad.getKey();
if (key) {
Serial.print("Tasto ");
Serial.print(key);
Serial.println(" premuto");
if (key == 3)
{
Serial.println("funzione");
}
}
}
ma vedo che al premere del tasto 3 mi stampa solo questo:
Tasto 3 premuto
senza scrivere 'funzione' e quindi penso non entri nell'if e quindi non fare alcuna azione...come mai?
Grazie!