Mmmm, no se muestran las fotos, quizas porque este alojadas en otro servidor, buscare la forma y lo edito.
El codigo lo quite de arriba porque tambien excede los 9000 caracteres, asi que lo subire por trozos.
Ahi va la primera parte.
/* ----------------------------------------------------------------
Proyecto introduccion clave
por teclado matricial con LCD I2C
Funciones de teclas:
* Borra clave introducida y resetea
# enciende o apaga la pantalla
por Suso
22/11/2015
Modificado por ArroyitoDeluxe,
añadiendo funciones para activacion
de los reles A,B,C con mostrado de
clave erronea, saludo, e informacion en pantalla,
controles de presion mediante motor y servo con potenciometro
--------------------------------------------------------------------
*/
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Servo.h>
/* Funcion de configuracion
de pines del modulo LCD/I2C (Direccion,en,rw,rs,d4,d5,d6,d7,backlight,polaridad)*/
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Keypad.h>
const byte Filas = 4; //Cuatro filas
const byte Cols = 4; //Cuatro columnas
byte Pins_Filas[] = {22,23,24,25}; //Pines Arduino a los que contamos las filas.
byte Pins_Cols[] = {26,27,28,29}; // Pines Arduino a los que contamos las columnas.
//no utilizar los pines 1 y 0 para no interferir en Rx y Tx
char Teclas [ Filas ][ Cols ] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
char codigoSecreto[4] = {'2','2','5','5'}; // Aqui va el codigo secreto
// Para cambiar el tamaño de la clave, solo hay que cambiar el tamaño del array
int posicion=0; // necesaria para la clave
int cursor=7; // posicion inicial de la clave en el LCD
int clave=0; // para el LCD
int luz=0; // para el LCD
int tiempo=0; // para el LCD
int ledVerde=32; // pin para el LED verde
int ledRojo=33; // pin para el LED rojo
int buzzer=30; // pin altavoz
int rele1=39; // pin rele 1
int rele2=40; // pin rele 2
int rele3=41; // pin rele 3
int flexo1=0; //para el rele1
int flexo2=0; //para rele2
int compresor=0; // para rele3
int objetivo; //lectura potenciometro
int actual; //lectura transductor 100psi
int total; //lectura transductor 150psi
float lactual; // para transductor de presion actual 100psi
int lobjetivo; // para potenciometro de presion objetivo
float ltotal; // para transductor de presion total 150psi
float practual; //variable presion actual
float probjetivo; //variable presion objetivo
float prtotal; //variable presion total
int psiactual; //para equivalencia de unidades
float baractual; //para equivalencia de unidades
int psitotal; //para equivalencia de unidades
float bartotal; //para equivalencia de unidades
Servo servo1; //nombre del servo de bajada de presion
int servopos=0; //poscion del servo
Keypad Teclado1 = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
void setup(){
Serial.begin(9600) ;
lcd.begin(20,4); // inicializamos el LCD.
lcd.noBacklight(); // apagamos LCD
pinMode (ledVerde,OUTPUT);
pinMode (ledRojo, OUTPUT);
pinMode (buzzer, OUTPUT);
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
digitalWrite(ledRojo,HIGH); // encendemos el LED rojo
digitalWrite(ledVerde, LOW); // apagamos el verde
servo1.attach(9); //salida pwm del servo
lcd.setCursor(5,0); // situamos el cursor el la posición 2 de la linea 0.
lcd.print("Password?"); // escribimos en LCD
lcd.setCursor(cursor,1); // cursor en la posicion de la variable, linea 1
void loop(){
char pulsacion = Teclado1.getKey() ; // leemos pulsacion
if (pulsacion != 0){ // Si el valor es 0 es que no se ha pulsado ninguna tecla
if (pulsacion != '#' && pulsacion != '*' && pulsacion != 'A' && pulsacion != 'B' && pulsacion != 'C' && pulsacion != 'D' && clave==0){ // descartamos almohadilla, asterisco, A, B, C y D
lcd.print(pulsacion); // imprimimos pulsacion
cursor++; // incrementamos el cursor
tone(buzzer,350); // tono de pulsacion
delay(200);
noTone(buzzer);
//--- Condicionales para comprobar la clave introducida -----------
if (pulsacion == codigoSecreto[posicion]){ // comparamos entrada con cada uno de los digitos, uno a uno
posicion ++; // aumentamos en uno el contador de posicion si es correcto el digito
}
if (posicion == 4){ // comprobamos que se han introducido los 4 correctamente
lcd.clear();
lcd.setCursor(0,0); // situamos el cursor el la posición 0 de la linea 0.
lcd.print("Welcome back!!!"); // escribimos en LCD
lcd.setCursor(3,2);
lcd.print ("ArroyitoDeluxe");
delay(200); // tono de clave correcta
tone(buzzer,500);
delay(100);
noTone(buzzer);
tone(buzzer,600);
delay(100);
noTone(buzzer);
tone(buzzer,800);
delay(100);
noTone(buzzer);
clave=1; // indicamos que se ha introducido la clave
digitalWrite(ledRojo,LOW); // apagamos el LED rojo
digitalWrite(ledVerde, HIGH); // encendemos el verde
delay (1500);
lcd.clear(); // Borranmos y escribimos el menu
lcd.setCursor(0,0);
lcd.print ("Light1Off");
lcd.setCursor (11,0);
lcd.print ("Light2Off");
lcd.setCursor (0,1);
lcd.print ("Compressor Off");
lcd.setCursor(0,2);
lcd.print ("Ready");
lcd.setCursor (10,2);
lcd.print ("Bar");
lcd.setCursor (14,2);
lcd.print ("Total");
lcd.setCursor(0,3);
lcd.print ("Object");
lcd.setCursor (10,3);
lcd.print ("Bar");
lcd.setCursor (17,3);
lcd.print ("Bar");
}
}
//--- En el caso de que este incompleta o no hayamos acertado ----------
if (HIGH==digitalRead(ledRojo) && cursor>10){ // comprobamos que no pase de la cuarta posicion
cursor=7; // lo volvemos a colocar al inicio
posicion=0; // borramos clave introducida
lcd.setCursor(7,1);
lcd.print(" "); // borramos la clave de la pantalla
lcd.setCursor (2,2); // decimos que la clave es introducida es incorrecta
lcd.print ("Wrong password!");
delay (500);
lcd.setCursor (2,2);
lcd.print (" ");
delay (500);
lcd.setCursor (2,2);
lcd.print ("Wrong password!");
delay (500);
lcd.setCursor (2,2);
lcd.print (" ");
lcd.setCursor(7,1);
if(clave==0){ // comprobamos que no hemos acertado
tone(buzzer,70,500); // para generar
delay(250); // tono de error
noTone(buzzer);
}
}
}
//--- Condicionales para encender o apagar el LCD --------------
if (pulsacion == '#' && luz==0){ // comprobamos tecla y encendemos si esta apagado
lcd.backlight(); // encendemos
luz=1; // indicamos que esta encendida
pulsacion =0; // borramos el valor para poder leer el siguiente condicional
}
if (pulsacion == '#' && luz==1){ // comprobamos tecla y estado
lcd.noBacklight(); // apagamos
luz=0; // indicamos que esta apagada
}
//---------------------------------------------------------------
//--- Condicionales para resetear clave introducida -------------
if (pulsacion == '*'){ // asterisco para resetear el contador
lcd.clear();
posicion = 0;
cursor = 7;
clave=0;
posicion=0;
lcd.setCursor(5,0); // situamos el cursor el la posición 2 de la linea 0.
lcd.print("Password?"); // escribimos en LCD
lcd.setCursor(7,1);
lcd.print(" "); // borramos de la pantalla los numeros
lcd.setCursor(7,1);
digitalWrite(ledRojo,HIGH); // encendemos el LED rojo
digitalWrite(ledVerde, LOW); // apagamos el verde
digitalWrite(rele1, LOW); // Apagamos rele1
digitalWrite(rele2, LOW); // Apagamos rele1
digitalWrite(rele3, LOW); // Apagamos rele1
}