Antonio,
non volermene, ma devi studiarti un po’ di più Arduino ed il suo linguaggio … intendo proprio un po’ di basi teoriche …
1° errore semplice … (e questo è di distrazione)
byte keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
… l’ultimo array NON deve finire con una virgola visto che non c’è altro che segue.
altri errori più gravi (… e questi sono per gravi lacune) …
a) punti e virgola mancanti , assegnazione di un typo ad una variabile …
char code [4]
int = i
… devi scrivere :
char code [4] ;
int i;
b) variabili locali e globali …
il tipo davanti ad una variabile va messo solo quando la si dichiara, no ogni volta … altrimenti si definiscono N variabili diverse !!! Quindi, visto che a te serve molte volte “key” la definisci fori come variabile globale e NON 4 volte come locale …
char code [4] ;
int i;
char key;
e poi nelle chiamate NON devi definire il tipo … per cui :
key = keypad.getKey();
c) setDebounceTime è un metodo della classe Keypad … non la puoi chiamare così , ma, come hai fatto per la getKey() la devi chiamare così :
keypad.setDebounceTime (10);
d) Se usi i singoli apici identifichi dei caratteri ASCII e non il loro valore ! Quindi nell’ IF , ad esempio, o metti code[0] == 49 oppure metti code[0] == ‘1’ e così via …
Può sembrare strano, ma in C … un apicetto fa molta differenza !!!
Quindi … il codice diventa :
#include <Keypad.h>
#define LED 13
const byte ROWS = 4; // Quattro righe
const byte COLS = 4; // Quattro colonne
// Definizione mappa della tastiera
byte keys[ROWS][COLS] = {
{
'1','2','3','A' }
,
{
'4','5','6','B' }
,
{
'7','8','9','C' }
,
{
'*','0','#','D' }
};
byte rowPins[ROWS] = {
9, 8, 7, 6 }; // Connessione delle righe: Riga0, Riga1, Riga2 e Riga3 ai pins di Arduino.
byte colPins[COLS] = {
5, 4, 3, 2 }; // Connessione delle colonne: Colonna0, Colonna1 , Colonna2 e Colonna3 ai pins di Arduino.
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
// Creazione della tastiera
char code [4];
int i;
char key;
void setup() {
Serial.begin(9600);
pinMode (LED, OUTPUT);
}
void loop()
{
digitalWrite (LED, LOW);
key = keypad.getKey();
code [0] = key;
keypad.setDebounceTime(10);
key = keypad.getKey();
code [1] = key;
keypad.setDebounceTime (10);
key = keypad.getKey();
code [2] = key;
keypad.setDebounceTime (10);
key = keypad.getKey();
code [3] = key;
if ( (code[0] == '1') && (code[1] == '2') && (code[2] == '3') && (code[3] == 'A') ) {
digitalWrite (LED, HIGH);
}
}
… che non so se funziona o meno … dato che non ho la tastiera

Guglielmo