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
- 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("SENIALES 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);
- salida2 = 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 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