Comandare uscite con un Keypad

Salve a tutti,
io dovrei tramite l'utilizzo di un Keypad comandare delle uscite a relè. Cioè ad ogni tasto associare l'attivazione di un'uscita.
Qualcuno mi potrebbe dire come impostare lo sketch per eseguire questa operazione con Arduino?
Grazie

Quale keypad ?

Comunque c'e' un esempio nel playground
http://playground.arduino.cc/Main/KeypadTutorial

Grazie per la risposta.
io ho provato a copiare lo stesso codice , solo che durante la compilazione mi da in seguente errore

"

C:\Users\Marco\Desktop\keypad\examples\DynamicKeypad\DynamicKeypad.ino:83:20: fatal error: Keypad.h: No such file or directory

#include <Keypad.h>

^

compilation terminated.

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560."

Hai scaricato la libreria?
Puoi farlo dal link di Brunello.

Adesso ho installato la libreria. Utilizzo il Keypad quello con 16 tasti:
1,2,3,A
4,5,6,B
7,8,9,C
*.0,#,D

Bene, andiamo per gradi: riesci a stampare sul monitor seriale il valore del tasto che premi sul keypad?

Si, ma non sono corretti. Nel senso che se premo 1 sul keypad mi compare 8. Se premo 2 mi compare 0. Se premo 3 non compare nulla. Se premo 4 mi compare 9... Tutto sbagliato

Che keypad stai usando?

Uso questo:

http://cdn.instructables.com/FSM/WKU0/HX0DQ2Y3/FSMWKU0HX0DQ2Y3.MEDIUM.jpg

a me succede quando inverto i collegamenti delle righe con le colonne...
sembra banale, ma prova a controllare che i collegamenti siano corretti.

Concordo: se le pressioni vengono rilevate correttamente, ma escono i tasti sbagliati, probabilmente è solo un problema di collegamenti, quindi ricontrollali.

Ho invertito tutti i collegamenti e adesso rileva tutto giusto.
Adesso per associare ad ogni tasto una certa uscita, che funzioni si dovrebbero usare?

Lo switch come indicato nell'esempio del playground
http://playground.arduino.cc/Main/KeypadTutorial

Ci sono molti modi per farlo, il più semplice potrebbe essere uno switch case. Vedi questo e questo.

Occhio solo che il carattere letto deve essere salvato in una variabile di tipo char (o int), non può essere una stringa.

Adesso ho creato uno sketch in cui se preso il taso 1 si accende il led, se premo il tasto 2 si spegne..
E se adesso volessi fare in modo che dopo due secondo si spenga automaticamente il led, senza premere il tasto 2, dove devo inserire la funzione delay?

Questo è il codice:

// ACCENDERE E SPEGNERE UN LED CON IL TASTO 1 E DUE

#include <Keypad.h>

const byte ROWS = 4; // quattro righe
const byte COLS = 4; // quattro colonne
// Definizione del Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'#','0','*','D'}
};
// Connessione Keypad ROW0, ROW1, ROW2 e ROW3 ai pin Arduino
byte rowPins[ROWS] = { 2,3,4,5};
// Connessione Kaypad COL0, COL1 e COL2 ai pin Arduino
byte colPins[COLS] = { 6,7,8,9 }; 

// Creazione del Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define ledpin 13

void setup()
{
  pinMode(ledpin,OUTPUT);
  digitalWrite(ledpin, HIGH);
  Serial.begin(9600);
}

void loop()
{
  char key = kpd.getKey();
  if(key)  // Controllo del tasto premuto
  Serial.println(key);
  {
    switch (key)
    {
      case '1':
        digitalWrite(ledpin, LOW);
        break;
        
      case '2':
        digitalWrite(ledpin, HIGH);
        break;
        }
  }

}

Con delay() è una cavolata. Non è molto pratico, il delay è bloccante. Devi imparare a usare millis() ma non è semplice se hai più rele da controllare.
E' solo una domanda di curiosità o DEVI farlo per forza ? Se si spiega bene quel che vuoi realizzare.

Alla fine ho due relè da controllare si, però intanto pensavo di usare uno per capire come funziona questo funzione millis ()

L'hai mai usata? Il consiglio è sempre quello di partire da esempio più semplice.
Ti consiglio di partire da http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/
Poi puoi arrivare anche ad una macchina a stati finiti, di solito concetto utile per avere una o più variabili che memorizzano lo "stato" di un qualcosa o più cose da monitorare e che può cambiare in base a input oppure in base al tempo.

Mai usato, sembra complessa come cosa...
Quindi mi dici che usando la funzione delay non si riesce a fare la stessa cosa?

Si e no. Nel momento in cui Arduino esegue la delay(2000) tutto è bloccato per 2 secondi, per 2 secondi anche se premi un tasto Arduino è bloccato.