hola la verdad no se mucho del keypay y estoy tratando de hacer un programa donde un led flashe dependiendo de que botón presione solo que acepta un digito solamente y lo que quiero hacer es que al presionar 1 y 3 digamos estos se sumen y flashe 4 veces que seria lo que debe, no se que esta mal en mi código si ya lo intente todo y solamente presionas el primer digito y no importa cual sea del 0-9 flashea 1 vez y en el segundo digito si prende las veces que se le seleccionaron aquí les dejo parte de mi código y espero y me ayuden a encontrar mi error
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
int n, r, i;
char key, key2;
char keys[ROWS][COLS] =
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
Serial.print("Cuantas veces flashea led: ");
key = keypad.waitForKey();
Serial.println(key);
Serial.print("Cuantas veces flashea led: ");
key2 = keypad.waitForKey();
Serial.println(key2);
Serial.println();
if (key, key2 != '' && key, key2 != '#' && key, key2 != NO_KEY );
{
n = conv_int(key);
for (i = 0; i < n; i++)
{
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
delay(200);
if (key, key2 != '' && key, key2 != '#' && key, key2 != NO_KEY );
{
r = conv_int(key2);
for (i = 0; i < r; i++)
{
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
delay(200);
}
}
}
}
}
int conv_int(char x)
{
switch (x)
{
case '1': return 1; break;
case '2': return 2; break;
case '3': return 3; break;
case '4': return 4; break;
case '5': return 5; break;
case '6': return 6; break;
case '7': return 7; break;
case '8': return 8; break;
case '9': return 9; break;
case '0': return 0; break;
}
}