Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Keypad.h>
- #include <LiquidCrystal.h>
- #include <TimerOne.h>
- #include <TimerThree.h>
- #include <TimerFour.h>
- LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
- const byte Filas = 4; //Cuatro filas
- const byte Cols = 3; //Cuatro columnas
- int i,aux,unidad,decena,centena, numero1=0,cont=9,cont1=1,cont2=0;
- char digito[4];
- char pulsacion;
- byte Pins_Filas[] = {3, 4, 5, 6}; //Pines Arduino para las filas
- byte Pins_Cols[] = {23, 25, 27}; // Pines Arduino para las columnas
- char Teclas [ Filas ][ Cols ] =
- {
- {'1','2','3'},
- {'4','5','6'},
- {'7','8','9'},
- {'*','0','#'}
- };
- Keypad myKeypad = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
- void setup()
- { Timer1.initialize(70000); // Configura el disparo de la interrupción cada 500us
- //Timer3.initialize(20000); // Configura el disparo de la interrupción cada 250us
- Timer4.initialize(50000); // Configura el disparo de la interrupción cada 800us
- Timer1.detachInterrupt(); // Desactiva la interrupcion
- Timer3.detachInterrupt(); // Desactiva la interrupcion
- Timer4.detachInterrupt(); // Desactiva la interrupcion
- //pinMode(23, OUTPUT);
- //pinMode(25, OUTPUT);
- //pinMode(27, OUTPUT);
- lcd.begin(16, 2); // Fijamos el numero de caracteres y filas
- lcd.clear();
- lcd.write("MONITOREO DE");
- lcd.setCursor(0,1);
- lcd.write("SEÑALES C/CLAVE");
- delay(3000);
- lcd.clear();
- lcd.write("PULSE (*) CLEAR");
- }
- void temperatura() // rutina de interrupcion Timer1
- {
- long dato;
- float salida;
- long dato2;
- float salida2;
- do
- {
- dato=analogRead(0);
- dato2 = analogRead(2);
- salida=(dato*5.0/1023)*100;
- salida2 = 7113.01392 / dato2 - 5.5;
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("VALOR 1=");
- lcd.setCursor(9,0);
- lcd.print(salida,DEC);
- lcd.setCursor(15,0);
- lcd.print("C ");
- lcd.setCursor(0,1);
- lcd.print("VALOR 1=");
- lcd.setCursor(9,1);
- lcd.print(salida2,DEC);
- lcd.setCursor(15,1);
- lcd.print("cm ");
- delay(5000);
- }
- while (pulsacion=='*');
- }
- void hola() // rutina de interrupcion Timer3
- {
- long dato;
- float salida;
- long dato2;
- float salida2;
- do
- {
- dato=analogRead(4);
- salida=(48.87585533*dato)/(5-dato*0.004887585);
- dato2=analogRead(6);
- salida=dato2*0.1062+10.5555;
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("VALOR 1=");
- lcd.setCursor(9,0);
- lcd.print(salida,DEC);
- lcd.setCursor(15,0);
- lcd.print("P ");
- lcd.setCursor(0,1);
- lcd.print("VALOR 1=");
- lcd.setCursor(9,1);
- lcd.print(salida2,DEC);
- lcd.setCursor(15,1);
- lcd.print("kPa ");
- delay(5000);
- }
- while (pulsacion=='*');
- }
- void potenciometro() // rutina de interrupcion Timer4
- {
- long dato;
- float salida;
- do
- {
- dato=analogRead(4);
- salida=0.004887*dato*270/5;
- lcd.clear();
- lcd.print("MONITOREO 3 ");
- lcd.setCursor(0,1);
- lcd.print("VALOR=");
- lcd.setCursor(6,1);
- lcd.print(salida,DEC);
- lcd.setCursor(15,1);
- lcd.print("G ");
- delay(5000);
- }
- while (pulsacion=='*');
- }
- void loop()
- {
- do
- {
- pulsacion = myKeypad.getKey() ; // lee la señal de la tecla pulsada
- }
- while(pulsacion==NO_KEY); // espera hasta que se pulse la tecla
- if (pulsacion=='*')
- { Timer1.detachInterrupt(); // Desactiva la interrupcion Timer1
- Timer3.detachInterrupt(); // Desactiva la interrupcion Timer3
- Timer4.detachInterrupt(); // Desactiva la interrupcion Timer4
- //int numero=0;
- lcd.clear();
- lcd.print("DIGITE LA CLAVE:");
- for (i=0;i<=3;i++) // controla la pulsación de tres teclas: dos caracteres numéricos y #
- { do
- {
- pulsacion = myKeypad.getKey() ; //lee la tecla pulsada
- aux=pulsacion-48; // convierte el caracter leído a entero
- }
- while (pulsacion==NO_KEY); // espera la pulsación de la tecla
- if((i==0)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del primer caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((i==1)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((i==2)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((i==3)&&(pulsacion=='#')) // controla el tercer caracter leído (#)
- {
- unidad=digito[2]-48; // convierte el primer caracter guardado en entero
- decena=digito[1]-48; // convierte el segundo caracter guardado en entero
- centena=digito[0]-48; // convierte el tercero caracter guardado en entero
- numero1= centena*100+decena*10+unidad; // concatena unidades y decenas
- if (numero1==972) // verifica si la clave 1 es correcta
- {
- Timer4.attachInterrupt(temperatura); // Activa la interrupcion Timer1
- //Timer3.detachInterrupt(); // Desactiva la interrupcion Timer3
- Timer1.detachInterrupt(); // Desactiva la interrupcion Timer4
- }
- else
- if (numero1==160) // verifica si la clave 2 es correcta
- {Timer4.detachInterrupt(); // Desactiva la interrupcion Timer1
- //Timer3.attachInterrupt(LDR); // Activa la interrupcion Timer3
- Timer1.attachInterrupt(hola); // Desactiva la interrupcion Timer4
- }
- else // valida si la clave es incorrecta
- {lcd.clear();
- lcd.write("ERROR...");
- lcd.setCursor(0,1);
- lcd.write("PULSE (*) CLEAR");
- }
- }
- else // valida si la clave no es numérica
- { lcd.clear();
- lcd.write("ERROR...");
- lcd.setCursor(0,1);
- lcd.write("PULSE (*) CLEAR");
- break;
- }
- }
- }
- else // valida si la clave inicia con (*) CLEAR
- { lcd.clear();
- lcd.write(" ");
- lcd.setCursor(0,1);
- lcd.write("PULSE (*) CLEAR");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement