Buonasera, mi domandavo se era possibile collegare un keypad 3x4 agli ingressi analogici, risparmiando quindi 7 pin digitali, essendo che il mio progetto richiede un numero maggiore di I/O digitali. Grazie a tutti!!
tutti gli ingressi analogici possono essere usati come ingressi digitali.
Ah menomale! e come posso fare?
assolutamente nulla di particolare, li usi come se fossere pin digitali. l'analog 0 è il digital 14, l'analog 1 il digital 15 e così via...
ho collegato il keypad a 6 pin analogici e 1 digitale (visto che ha bisogno di 7 pin) ed ho caricato questo sketch:
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
 {'1','2','3'},
 {'4','5','6'},
 {'7','8','9'},
 {'#','0','*'}
};
byte rowPins[ROWS] = {16, 15, 14, 13}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {19, 18, 17}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
 Serial.begin(9600);
}
Â
void loop(){
 char key = keypad.getKey();
Â
 if (key != NO_KEY){
  Serial.println(key);
 }
}
solo che mi stampa in seriale i caratteri "*0#" sempre di seguito senza che succeda niente alla pressione di un bottone. cosa può essere?
non credo che la libreria gestisca in modo corretto l'uso dei pin analogici. so che puoi chiamali anche A0, A1, se non erro... prova così.
krossk2:
solo che mi stampa in seriale i caratteri "*0#" sempre di seguito senza che succeda niente alla pressione di un bottone. cosa può essere?
Forse hai invertito un po di piedini.
Ciao Uwe
si credevo che i pin del keypad fossero ordinati invece bisogna ordinarli cosi:
byte rowPins[ROWS] = {14, 19, 18, 16}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {15, 13, 17}; //connect to the column pinouts of the keypad
e tutto funziona perfettamente, grazie a tutti!!!