Hola buenas, soy nuevo en el foro y en el mundo de arduino, estoy mirando por Internet pero no lo encuentro, quiero que con un teclado matricial de 3x4 al meter una clave se active un led durante 4 segundos. para cambiar la calve quiero que se haga desde arduino meterlo yo manual mente.
gracias y un saludo.

hola muchas gracias por contestar
, voy a usar un teclado de 4x3 matricial, y si puedes hacer que al pulsar las teclas pite un buzzer te lo agradecería.
gracias y un saludo.
No tengo teclado para probar, así que vas a tener que ir probando tu.
Esto debería leer el teclado, pitar al pulsar y sacar por serial lo que has pulsado. Comprueba que funcione e indicame como debería funcionar.
Cuantos dígitos la clave?
Pulsar # o * para finalizar clave o contar el numero de pulsaciones para controlar cuando acabas de teclear?
La clave la modificas desde el teclado o modificando el código?
#include <Keypad.h>
const byte FILAS = 4;
const byte COLUM = 3;
char Teclas[FILAS][COLUM] =
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte PinsFilas[FILAS] = {5, 4, 3, 2}; //Pins de las filas
byte PinsColum[COLUM] = {8, 7, 6}; //Pines delas columnas
Keypad Teclado = Keypad( makeKeymap(Teclas), PinsFilas, PinsColum, FILAS, COLUM );
byte PinBuzzer = 9;
byte PinLed = 10;
void setup()
{
Serial.begin(9600);
pinMode(PinBuzzer, OUTPUT);
pinMode(PinLed, OUTPUT);
}
void loop()
{
char key = Teclado.getKey();
if (key != NO_KEY) // Hay tecla pulsada?º
{
analogWrite(PinBuzzer,128); // Emite pitido
delay(250); // Tiempo de pitido
digitalWrite(PinBuzzer, LOW);
Serial.println(key);
}
}
Hola, los dígitos depende de la clave que metas. # para borrar + para confirmar la clave. la modifico desde el código. tengo encargado el teclado. gracias y un saludo.
Buenas, no esta probado ni tengo manera de probarlo, pero creo que debería de funcionar .
Un saludo
#include <Keypad.h>
const byte FILAS = 4;
const byte COLUM = 3;
char Teclas[FILAS][COLUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} };
byte PinsFilas[FILAS] = {5, 4, 3, 2}; //Pins de las filas
byte PinsColum[COLUM] = {8, 7, 6}; //Pines delas columnas
Keypad Teclado = Keypad( makeKeymap(Teclas), PinsFilas, PinsColum, FILAS, COLUM );
byte PinBuzzer = 9;
byte PinLed = 10;
const byte DigitosClave=4;
char Clave[DigitosClave] = {'1','2','3','4'};
byte Coincidencias=0;
byte DigitosPulsados=0;
void setup()
{
Serial.begin(9600);
pinMode(PinBuzzer, OUTPUT);
pinMode(PinLed, OUTPUT);
}
void Pitido(int Duracion, int Espera, int Repeticiones)
{
for (int x=0; x<Repeticiones; x++)
{
analogWrite(PinBuzzer,128); // Emite pitido
delay(Duracion); // Tiempo de pitido
digitalWrite(PinBuzzer, LOW);
delay(Espera);
}
}
void loop()
{
char key = Teclado.getKey();
if (key != NO_KEY) // Hay tecla pulsada?
{
Pitido(250,0,1);
Serial.println(key);
if(key=='*') // Abrir??
{
if(Coincidencias==DigitosClave)
{
Pitido(125,125,3);
digitalWrite(PinLed, LOW);
delay(4000);
digitalWrite(PinLed, LOW);
}
key=='#';
}
if(key=='#') // Borrar
{
Coincidencias=0;
DigitosPulsados=0;
Pitido(500,0,1);
}
if (DigitosPulsados<DigitosClave && key==Clave[DigitosPulsados])
{ // No hemos pulado mas digitos que la clave y coinciden
Coincidencias++;
DigitosPulsados++;
}
else
{
DigitosPulsados=DigitosClave+1; // Clave incorrecta,
Coincidencias=0; // ya no controlamos mas hasta q borre
}
}
}