#include <Keypad.h>
#define Rele 13
const byte ROWS = 4; //cuatro fials
const byte COLS = 4; //cuatro columnas
char keys [ROWS][COLS] ={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4}; //pines filas
byte colPins[COLS] = {3, 2, 1, 0}; //pines columnas
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
pinMode(Rele, OUTPUT);
}
void loop()
{ char key = keypad.getKey();
if (key != NO_KEY){
Serial.println(key);
while (key == '1'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(1000); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(1000);
}
while (key == '2'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(850); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(850);
}
while (key == '3'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(650); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(650);
}
while (key == '4'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(450); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(450);
}
while (key == '5'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(50); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(250);
}
while (key == '6'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(250); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(50);
}
while (key == '7'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(150); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(150);
}
while (key == '8'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(50); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(50);
}
while (key == '9'){
digitalWrite(Rele, HIGH); // enciende el rele
delay(30); // retardo en milisegundos
digitalWrite(Rele, LOW); // apaga el rele
delay(20);
}
while (key == '0'){
digitalWrite(Rele, LOW); // apaga el rele
}
}
}
este es mi codigo y necesito controlar la frencuencia pwm de un rele con un teclado 4x4 con las teclas del 1 al 9 y el 0 apaga el problema es que funciona cada tecla con su frecuencia pero solo una vez y luego en monitor serie no aparecen mas la teclas que toco y queda fija en esa frecuencia y para cambiar de frecuencia necesito resetear la placa alguna ayuda??