0% encontró este documento útil (0 votos)
234 vistas14 páginas

Codigo Arduino Keypad 4X4 Cristhian Perez Roncal

El documento describe un sistema de control de acceso mediante PIN implementado con Arduino. Incluye una librería para teclado matricial, LCD y reconocimiento de contraseña. Muestra el PIN ingresado en el LCD y reproduce sonidos al ingresar un PIN correcto o incorrecto. También incluye código para reproducir melodías mediante tonos generados por el Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
234 vistas14 páginas

Codigo Arduino Keypad 4X4 Cristhian Perez Roncal

El documento describe un sistema de control de acceso mediante PIN implementado con Arduino. Incluye una librería para teclado matricial, LCD y reconocimiento de contraseña. Muestra el PIN ingresado en el LCD y reproduce sonidos al ingresar un PIN correcto o incorrecto. También incluye código para reproducir melodías mediante tonos generados por el Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

#include <Password.

h> //Incluimos la libreria Password


#include <Keypad.h> //Incluimos la libreria Keypad
#include <LiquidCrystal.h> //Incluimos la libreria LiquidCrystal

Password password = Password("1346AB"); //Definimos el Password


int dlugosc = 6;

//Largo del Password

LiquidCrystal lcd(12,11,5,4,3,2); //Definimos los pines del LCD

int buzzer = 7; //Creamos las Variables de salida


int ledRed = 6;
int ledGreen = 13;

int ilosc; //Numero de Clicks

const byte ROWS = 4; // Cuatro Filas


const byte COLS = 4; // Cuatro Columnas

// Definimos el Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = { A0,A1,A2,A3, };// Conectar los keypads ROW1, ROW2,


ROW3 y ROW4 a esos Pines de Arduino.
byte colPins[COLS] = { A4,A5,9,8, };// Conectar los keypads COL1, COL2, COL3
y COL4 a esos Pines de Arduino.

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{
Serial.begin(9600);
keypad.addEventListener(keypadEvent);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(buzzer, OUTPUT);

digitalWrite(ledRed, HIGH);
digitalWrite(ledGreen, LOW);

lcd.begin(COLS, ROWS);

lcd.setCursor(0,0);
lcd.print(" *Bienvenido*");
lcd.setCursor(0,1);
lcd.print("INSERTAR PIN");
}

void loop()
{
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{

case PRESSED:

int i;
for( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(100);
}

Serial.print("Pressed: ");
Serial.println(eKey);

switch (eKey)
{
/*
case '#':
break;

case '*':
break;
*/

default:
ilosc=ilosc+1;
password.append(eKey);
}
//Serial.println(ilosc);

if(ilosc == 1)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("*_");
}
if(ilosc == 2)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("**_");
}
if(ilosc == 3)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("***_");
}
if(ilosc == 4)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);

lcd.print("****_");
}
if(ilosc == 5)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("*****_");
}
if(ilosc == 6)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("******_");
}
if(ilosc == 7)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" INSERTE PIN ");
lcd.setCursor(0,1);
lcd.print("*******_");
}
if(ilosc == 8)
{
lcd.clear();
lcd.setCursor(1,0);

lcd.print(" INSERTE PIN ");


lcd.setCursor(0,1);
lcd.print("********");
}

if(ilosc == dlugosc)
{
delay(250);
checkPassword();
ilosc = 0;
}
}
}

void checkPassword()
{
if (password.evaluate())
{
int i;
for( i = 1; i <= 3; i++ )
{
digitalWrite(buzzer, HIGH);
delay(120);
digitalWrite(buzzer, LOW);
delay(70);
}
ilosc = 0;
password.reset();

Serial.println("Correcto");

digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH);

lcd.clear();
lcd.setCursor(0,1);
lcd.print("<<FELICIDADES>>");

delay(2000);
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);

lcd.clear();
lcd.setCursor(0,0);
lcd.print(" *Bienvenido*");
lcd.setCursor(0,1);
lcd.print("INSERTAR PIN");

}
else
{
int i;
for( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
delay(100);
}
ilosc = 0;

password.reset();

Serial.println("Error");

digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);

lcd.clear();
lcd.setCursor(0,1);
lcd.print("<<FALLASTE>>");
delay(2000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print(" *Bienvenido*");
lcd.setCursor(0,1);
lcd.print("INSERTAR PIN");
}
}
int spk=13;
// altavoz a GND y pin 13
int c[5]={131,262,523,1046,2093};
// frecuencias 4 octavas de Do
int cs[5]={139,277,554,1108,2217};
// Do#
int d[5]={147,294,587,1175,2349};
// Re
int ds[5]={156,311,622,1244,2489}; // Re#
int e[5]={165,330,659,1319,2637};
// Mi
int f[5]={175,349,698,1397,2794};
// Fa
int fs[5]={185,370,740,1480,2960}; // Fa#
int g[5]={196,392,784,1568,3136}; // Sol
int gs[5]={208,415,831,1661,3322}; // Sol#
int a[5]={220,440,880,1760,3520};
// La
int as[5]={233,466,932,1866,3729}; // La#
int b[5]={247,494,988,1976,3951};
// Si
void nota(int a, int b);
enteros.
void setup()
{

// declaracion de la funcion auxiliar. Recibe dos numeros

/**************************************/
/*
HARRY POTTER
/**************************************/
nota(b[2], 500);
nota(e[3],1000);
nota(g[3], 250);
nota(fs[3],250);
nota(e[3],1000);
nota(b[3],500);
nota(a[3],1250);
nota(fs[3],1000);
nota(b[2], 500);
nota(e[3],1000);
nota(g[3],250);
nota(fs[3],250);
nota(d[3],1000);
nota(e[3],500 );
nota(b[2],1000 );
noTone(spk); delay(1000);
nota(b[2], 500);
nota(e[3],1000);
nota(g[3], 250);
nota(fs[3],250);
nota(e[3],1000);
nota(b[3],500);
nota(d[4],1000);
nota(cs[4],500);
nota(c[4],1000);
nota(a[3],500);
nota(c[4],1000);
nota(b[3],250);
nota(as[3],250);
nota(b[2],1000);
nota(g[3],500);
nota(e[3],1000);
noTone(spk);
delay(2000);
/*******************/
/* STAR WARS
*/
/*******************/
/**** tema principal ****/
nota(d[1],150);noTone(spk);delay(50);
nota(d[1],150);noTone(spk);delay(50);
nota(d[1],150);noTone(spk);delay(50);
nota(g[1],900);noTone(spk);delay(150);
nota(d[2],900);noTone(spk);delay(50);
nota(c[2],150);noTone(spk);delay(50);
nota(b[1],150);noTone(spk);delay(50);
nota(a[1],150);noTone(spk);delay(50);
nota(g[2],900);noTone(spk);delay(150);
nota(d[2],900);noTone(spk);delay(100);
nota(c[2],150);noTone(spk);delay(50);
nota(b[1],150);noTone(spk);delay(50);
nota(a[1],150);noTone(spk);delay(50);

*/

nota(g[2],900);noTone(spk);delay(150);
nota(d[2],900);noTone(spk);delay(100);
nota(c[2],150);noTone(spk);delay(50);
nota(b[1],150);noTone(spk);delay(50);
nota(c[2],150);noTone(spk);delay(50);
nota(a[1],1200);noTone(spk);delay(2000);
/**** marcha del imperio ****/
nota(g[2],500);noTone(spk);delay(100);
nota(g[2],500);noTone(spk);delay(100);
nota(g[2],500);noTone(spk);delay(100);
nota(ds[2],500);noTone(spk);delay(1);
nota(as[2],125);noTone(spk);delay(25);
nota(g[2],500);noTone(spk);delay(100);
nota(ds[2],500);noTone(spk);delay(1);
nota(as[2],125);noTone(spk);delay(25);
nota(g[2],500);
noTone(spk);delay(2000);
/**********************/
/* entre dos aguas */
/**********************/
nota(a[1],400);noTone(spk);delay(400);
nota(e[1],400);noTone(spk);delay(400);
nota(a[1],400);noTone(spk);delay(200);
nota(e[1],200);noTone(spk);delay(200);
nota(a[1],200);noTone(spk);delay(200);
nota(as[1],100);noTone(spk);delay(100);
nota(b[1],400);noTone(spk);delay(400);
nota(fs[1],400);noTone(spk);delay(400);
nota(b[1],400);noTone(spk);delay(200);
nota(fs[1],200);noTone(spk);delay(200);
nota(b[1],200);noTone(spk);delay(200);
nota(as[1],100);noTone(spk);delay(100);
nota(a[1],400);noTone(spk);delay(400);
nota(e[1],400);noTone(spk);delay(400);
nota(a[1],400);noTone(spk);delay(400);
}
void nota(int frec, int t)
{
tone(spk,frec);
// suena la nota frec recibida
delay(t);
// para despues de un tiempo t
}
void loop()
{
}

MOTOR DE PASOS
/* Motor Paso a Paso ajustado a grados
by: www.elprofegarcia.com

Gira los grados que se le indiquen por el monitor serial o bluetooth

Arduino

Driver ULN200

IN1

IN2

10

IN3

11

IN4

Tienda en Linea: http://dinastiatecnologica.com/


*/

int retardo=5;
int dato_rx;

// Tiempo de retardo en milisegundos (Velocidad del Motor)


// valor recibido en grados

int numero_pasos = 0; // Valor en grados donde se encuentra el motor


String leeCadena;

// Almacena la cadena de datos recibida

void setup() {
Serial.begin(9600);

// inicializamos el puerto serie a 9600 baudios

pinMode(11, OUTPUT);

// Pin 11 conectar a IN4

pinMode(10, OUTPUT);

// Pin 10 conectar a IN3

pinMode(9, OUTPUT);

// Pin 9 conectar a IN2

pinMode(8, OUTPUT);

// Pin 8 conectar a IN1

void loop() {
while (Serial.available()) {

// Leer el valor enviado por el Puerto serial

delay(retardo);
char c = Serial.read();

// Lee los caracteres

leeCadena += c;

// Convierte Caracteres a cadena de caracteres

}
if (leeCadena.length()>0){
dato_rx = leeCadena.toInt(); // Convierte Cadena de caracteres a Enteros
Serial.print(dato_rx);

// Envia valor en Grados

Serial.println(" Grados");
delay(retardo);
dato_rx = (dato_rx * 1.4222222222); // Ajuste de 512 vueltas a los 360
grados
}

while (dato_rx>numero_pasos){ // Girohacia la izquierda en grados


paso_izq();
numero_pasos = numero_pasos + 1;
}
while (dato_rx<numero_pasos){ // Giro hacia la derecha en grados
paso_der();
numero_pasos = numero_pasos -1;
}
leeCadena = ""; // Inicializamos la cadena de caracteres recibidos
apagado();

// Apagado del Motor para que no se caliente

} ///////////////////// Fin del Loop ///////////////////////////

void paso_der(){

// Pasos a la derecha

digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, LOW);

digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}

void paso_izq() {

// Pasos a la izquierda

digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);

digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}

void apagado() {

// Apagado del Motor

digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}

También podría gustarte