Como no consegui hacerlo funcionar, solo de esta manaera, lo malo es que el waitForKey() pe detiene el codigo hasta que precione la opcion elegida
#include <Keypad.h>
int led_1 =8;
int led_2 =9;
int led_3=11;
int led_4 =12;
const byte Filas = 4; //KeyPad de 4 filas
const byte Cols = 4; //y 4 columnas
byte Pins_Filas[] = {33,35,37,39}; //Pines Arduino para las filas.
byte Pins_Cols[] = {41,43,45,47}; // Pines Arduino para las columnas.
int tiempo = 250;
unsigned long inicia=0;
char cadena[17];
char Teclas [Filas][Cols] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Keypad Teclado = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
char leds;
char pulsacion;
void setup() {
Serial.begin(9600);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
pulsacion = Teclado.getKey();
if(millis() - inicia>=tiempo){
inicia = millis();
digitalWrite(6, !digitalRead(6));
}
switch (pulsacion) {
case 'A' :
leds = Teclado.waitForKey();
switch (leds)
{
case '1':
digitalWrite(led_1, !digitalRead(led_1));
break;
case '2':
digitalWrite(led_2, !digitalRead(led_2));
break;
}
break;
case 'B' :
leds = Teclado.waitForKey();
switch (leds){
case '3':
digitalWrite(led_3, !digitalRead(led_3));
break;
case '4':
digitalWrite(led_4, !digitalRead(led_4));
break;
}
break;
}
}