#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);
}