Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema de alarma Arduino:SERENA

Componentes y suministros

Arduino Mega 2560
× 1
Pantalla táctil LCD TFT de 3,2 "
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

He visto muchos sistemas de alarma antes, los revisé, pude ver cómo funcionan y decidí que quería hacer el mío propio. Quiero decir, ¿por qué no? ¿Por qué no tomar algo y hacerlo aún mejor? Quiero decir, soy un ingeniero informático (un estudiante universitario, pero eso cambia pronto) después de todo.

Y así fue como nació este proyecto.

Revisé muchos sistemas y lo que realmente pueden ofrecer y pensé que era una buena idea poner todas estas funciones (y algunas de las mías) en una sola placa Arduino que servirá como panel de control de la alarma.

Nada complicado aquí, solo compré la placa junto con una pantalla táctil de 3.2 ". Para que la pantalla funcionara, por supuesto, necesitaba algunas bibliotecas. ¡Así que muchas gracias a Henning Carlsen por todas las bibliotecas! Enlace a su sitio web en los créditos sección.

El programa

Ahora, esto me tomó un tiempo completarlo. No dejes que el código te confunda, ¡siempre comento cuando es necesario!

Funciones principales de la alarma

Decidí incluir tres contraseñas diferentes. Uno de 4 dígitos, uno de 5 dígitos y uno de 6 dígitos. Sé que son muchos, pero en una actualización futura le daré al usuario la opción de deshabilitar el código de 4 dígitos.

  • El pase de 4 dígitos se usa para armar la alarma.
  • El pase de 5 dígitos se usa para desarmar parcialmente la alarma.
  • El pase de 6 dígitos se usa para desarmar completamente la alarma.

La alarma también se puede armar automáticamente. Después de ingresar el código de 5 dígitos, el programa iniciará una cuenta regresiva (por defecto, 40 segundos). Una vez finalizada esta cuenta atrás, la alarma se armará automáticamente. Esto puede resultar muy útil cuando normalmente se olvida de armar el sistema.

Menú de opciones

En el menú de opciones, puede cambiar las tres contraseñas, así como el tiempo de autoarmado.

Actualizaciones futuras

Las actualizaciones futuras incluirán configuraciones de fecha / hora, soporte para tarjetas SD (en caso de que haya un corte de energía y no queramos perder datos), la opción de deshabilitar el autoarmado, la opción de deshabilitar el pase de 4 dígitos y muchos más. .

Vídeo de presentación

Código

  • SERENA v.1.01
SERENA v.1.01 Arduino
Simplemente cargue el código en su placa Arduino.
Algunos comentarios están en griego, esto cambiará pronto.
 ////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// ////////////////////// Sistema de alarma SERENA // Autor:Michael Marinis // Copyright (C) 2016 Michael Marinis. Todos los derechos reservados // Sitio web:http://www.youtube.com/SauROnmiKE//// Este es el sistema de alarma SERENA, un sistema de alarma de dos funciones que le da // al usuario la capacidad de armar automáticamente la alarma, o armarlo manualmente cuando el usuario quiera .//// Este programa requiere las bibliotecas UTFT y URTouch de Henning Karlsen y una pantalla LCD // compatible con su protector .////////////// VERSIONES //////////// 0.10a:Primera compilación, funciones básicas // 0.20a:Mejoras menores // 0.30a:Entrada de paso y confirmación para una nueva contraseña de armado manual está hecha (12/11 /2016)//0.40a:Se completó la entrada de aprobación y la confirmación para una nueva contraseña de armado automático (11/12/2016) // 1.00a:Entrada y verificación de contraseña de armado completada (11/12/2016, 19:16) //1.10a:Completó el menú cuando el sistema está armado (sin enviar una señal a un relé u otra cosa). La hora y la fecha se agregarán más tarde. Solo se agrega el botón Desarmar (13/11/2016, 13:04) // 1.20a:Programado el botón "DESARMAR". Solicita la entrada de contraseña de 5 dígitos. También se realiza la verificación de contraseña, lo que desarma la alarma (sin enviar una señal a un relé u otra cosa) (13/11/2016, 14:15) // 1.21a:Se solucionó un problema por el cual el usuario no podía ingresar ningún número después de la verificación de confirmación de contraseña. Si el usuario presionó "NO", no podría escribir una nueva contraseña hasta que se presionara el botón "BORRAR". Esto ahora está arreglado (14/11/2016, 13:32) // 1.22a:El temporizador de cuenta regresiva para el autoarmado ahora está completo (14/11/2016, 15:46) // 1.30a:Autoarmado El menú está completo. El menú de autoarmado muestra los segundos que quedan para que el armado se autoarme nuevamente. Se accederá al menú de desarmado completo a través de un botón debido a las limitaciones de la biblioteca (14/11/2016, 21:42) // 1.31a:Se cambió la variable "buf" de "-1" a "0". Esto resolvió el error, donde la primera pulsación de cualquier botón numérico no haría nada (16/11/2016, 00:45) // 1.40b:Se agregó el botón "ESTABLECER CONTRASEÑA" que permite al usuario modificar el 4 - contraseña de dígitos utilizada para armar la alarma (16/11/2016, 14:33) // 1.41b:Los botones "BACK" de "SET AUTO-ARM PASS", ahora redireccionan a la segunda página del menú de opciones, en lugar del primero (16/11/2016, 16:21) // 1.42b:Completó el tercer menú de opciones. Contiene los botones "ESTABLECER HORA" y "ESTABLECER FECHA" (16/11/2016, 16:37) // 1.43b:Se corrigió un error por el cual el botón de borrar en la entrada de pase de desarmado no restablecía la "entrada automática" array (17/11/2016, 00:05) // 1.44b:El botón "SET AUTO-ARM PASS", ahora le indicará al usuario el segundo menú de opciones cuando se cambie la contraseña, en lugar del primero (18 / 11/2016, 10:02) // Los cambios se registrarán hasta la versión final 1.00. Después de la 1.00, los cambios se registrarán en el archivo SERENA_changelog.txt.//1.00:Diseño de la función de desarmado completo. La función requerirá la contraseña de 6 dígitos y se dirigirá al menú principal del programa de alarma. Se escucha un timbre con cada clic de un botón (1/8/2017, 20:53) ////////// VERSIONES FUTURAS //////////// * IDEAS PARA NUEVAS VERSIONES SE PONERÁ AQUÍ * /////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// /////////// # incluir  #include  UTFT myGLCD (ITDB32WC, 38, 39, 40, 41); URTouch myTouch (6, 5, 4, 3, 2); extern uint8_t SmallFont []; extern uint8_t BigFont []; extern uint8_t SevenSegNumFont []; int x; int y; int armpass [4] ={1, 2, 3, 4}; int autopass [5] ={ 1, 2, 3, 4, 5}; int manualpass [6] ={1, 1, 1, 1, 1, 1}; int timeinput [4]; int arminput [4]; int autoinput [5]; int entrada manual [6]; int autolength =0; int manuallength =0; int buzzerpin =8; int systarm =9; int serenapin =10; int buttonpin =13; int autoarmtime =40; int autoarmtimemem =autoarmtime; int mes =1; int día =1; int año =2016; // FUNCIONES PERSONALIZADAS nulo alarmtitle () {myGLCD.setFont (SmallFont); myGLCD.setBackColor (0, 0, 0); myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.drawLine (0, 14, 319, 14); myGLCD.print ("SERENA ALARM SYSTEM v.1.01", CENTER, 1);} void title () // SEPARADO PORQUE EL NOMBRE NO ES DESEADO EN ALGUNAS VECES {alarmtitle (); myGLCD.print ("POR MICHAEL MARINIS", CENTER, 30);} vacío drawbutton1 () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 60, 300, 100);} vacío drawbutton2 () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 120, 300, 160);} anular drawdisarm () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 300, 220); myGLCD.setColor (0, 0, 0); myGLCD.setBackColor (192, 192, 192); myGLCD.setFont (BigFont); myGLCD.print ("DESARMAR", CENTER, 193);} void drawback () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 150, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (SmallFont); myGLCD.print ("BACK", 70, 190);} vacío drawno () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 150, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (SmallFont); myGLCD.print ("NO", 80, 190);} vacío drawyes () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (170, 180, 300, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (SmallFont); myGLCD.print ("SÍ", 225, 190);} vacío drawnext () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (170, 180, 300, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (SmallFont); myGLCD.print ("SIGUIENTE", 220, 190);} void drawbuttons () {myGLCD.clrScr (); int z; myGLCD.setFont (SmallFont); para (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 15, 60 + (z * 60), 55); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 1, 37 + (z * 60), 30); } para (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 70, 60 + (z * 60), 110); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 4, 37 + (z * 60), 85); } para (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 125, 60 + (z * 60), 165); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 7, 37 + (z * 60), 140); } para (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (190, 15 + (z * 55), 290, 55 + (z * 55)); } myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 175, 80, 205); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (0, 48, 185); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.print ("BORRAR", 221, 30); myGLCD.print ("Aceptar", 232, 85); myGLCD.print ("BACK", 225, 140);} void optionsmenuend () {myGLCD.clrScr (); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setBackColor (255, 0, 0); alarmtitle (); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.print ("MENÚ DE OPCIONES", CENTRO, 20); drawbutton1 (); drawbutton2 (); retirarse(); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0);} menú de opciones vacío () {myGLCD.clrScr (); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setBackColor (255, 0, 0); alarmtitle (); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.print ("MENÚ DE OPCIONES", CENTRO, 20); drawbutton1 (); drawbutton2 (); retirarse(); dibujar siguiente (); myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0);} void drawoptions () {myGLCD.setFont (BigFont); myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 70, 300, 120); myGLCD.setBackColor (255, 0, 0); myGLCD.setColor (255, 255, 255); myGLCD.print ("OPCIONES", CENTRO, 90);} void drawarm () {myGLCD.setFont (BigFont); myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 140, 300, 190); myGLCD.setBackColor (255, 0, 0); myGLCD.setColor (255, 255, 255); myGLCD.print ("BRAZO", CENTRO, 160);} void printmonth (int i) {myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); if (i ==1) {myGLCD.print ("ENERO", 95, 100); } if (i ==2) {myGLCD.print ("FEBRERO", 95, 100); } if (i ==3) {myGLCD.print ("MARZO", 95, 100); } if (i ==4) {myGLCD.print ("ABRIL", 95, 100); } if (i ==5) {myGLCD.print ("MAYO", 70, 100); } if (i ==6) {myGLCD.print ("JUNIO", 95, 100); } if (i ==7) {myGLCD.print ("JULIO", 95, 100); } if (i ==8) {myGLCD.print ("AGOSTO", 95, 100); } if (i ==9) {myGLCD.print ("SEPTIEMBRE", 95, 100); } if (i ==10) {myGLCD.print ("OCTUBRE", 95, 100); } if (i ==11) {myGLCD.print ("NOVIEMBRE", 95, 100); } if (i ==12) {myGLCD.print ("DICIEMBRE", 95, 100); }} // int fecha de actualización (int d, int m, int y) // {// if (y% 4 ==0) // DISEKTO ETOS // {// if ((m> =0) &&(m <=13)) // {// si (m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12) // {// si ((d> =0) &&(d <=32)) // {// si (d ==0) // {// d =31; //} // // if (d ==32) // {// d =1; //} //} //} //} //} // DISEKTO ETOS END //} int armupdate (int i, int armlength) {if (armlength <4) {if (armlength ==0) {arminput [0] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return arminput [0]; } if (armlength ==1) {arminput [1] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [1], 135, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return arminput [1]; } if (armlength ==2) {arminput [2] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [2], 170, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return arminput [2]; } if (armlength ==3) {arminput [3] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [3], 205, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return arminput [3]; }}} int autoarmupdate (int i, int timelength) {if (timelength <5) {if (timelength ==1) {timeinput [0] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada de tiempo [0], 100, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); retorno timeinput [0]; } if (timelength ==2) {timeinput [1] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada de tiempo [1], 135, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); retorno timeinput [1]; } if (timelength ==3) {timeinput [2] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada de tiempo [2], 170, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); retorno timeinput [2]; } if (timelength ==4) {timeinput [3] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada de tiempo [3], 205, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); retorno timeinput [3]; }}} int autoupdate (int i, int autolength) {if (autolength <5) {if (autolength ==0) {autoinput [0] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [0]; } if (autolength ==1) {autoinput [1] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [1], 135, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [1]; } if (autolength ==2) {autoinput [2] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [2], 170, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [2]; } if (autolength ==3) {autoinput [3] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [3], 205, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [3]; } if (longitud automática ==4) {entrada automática [4] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [4], 240, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [4]; } if (autolength ==5) {autoinput [5] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (autoinput [5], 275, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); return autoinput [5]; }}} int manualupdate (int i, int manuallength) {if (manuallength <6) {if (manuallength ==0) {manualinput [0] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [0]; } if (longitud manual ==1) {entrada manual [1] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [1], 135, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [1]; } if (longitud manual ==2) {entrada manual [2] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [2], 170, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [2]; } if (longitud manual ==3) {entrada manual [3] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [3], 205, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [3]; } if (longitud manual ==4) {entrada manual [4] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [4], 240, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [4]; } if (longitud manual ==5) {entrada manual [5] =i; // longitud manual ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (entrada manual [5], 275, 185); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); devolver entrada manual [5]; }}} configuración vacía () {myGLCD.InitLCD (); myGLCD.clrScr (); myTouch.InitTouch (); myTouch.setPrecision (PREC_EXTREME); pinMode (buzzerpin, SALIDA); pinMode (systarm, SALIDA); pinMode (serenapin, SALIDA); digitalWrite (buzzerpin, ALTO); retraso (1000); digitalWrite (buzzerpin, BAJO); título(); drawoptions (); drawarm ();} void loop () {while (true) {mainmenu:if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); // BOTÓN DE OPCIONES if ((x> =20) &&(x <=300) &&(y> =70) &&(y <=120)) {opciones:menú de opciones (); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 255); myGLCD.print ("ESTABLECER CONTRASEÑA DE BRAZO MANUAL", CENTRO, 73); myGLCD.print ("ESTABLECER CONTRASEÑA", CENTRO, 133); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); while (verdadero) {if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); // CONFIGURAR EL BOTÓN DE CONTRASEÑA MANUAL if ((x> =20) &&(x <=300) &&(y> =60) &&(y <=100)) {title (); myGLCD.setBackColor (0, 0, 0); myGLCD.setColor (255, 0, 0); myGLCD.print ("INTRODUZCA CONTRASEÑA DE 6 DÍGITOS", CENTRO, 119); retirarse(); dibujar siguiente (); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); while (verdadero) {if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); if ((x> =20) &&(x <=150) &&(y> =180) &&(y <=210)) {digitalWrite (buzzerpin, HIGH); retraso (50); digitalWrite (buzzerpin, BAJO); ir a opciones; } if ((x> =170) &&(x <=300) &&(y> =180) &&(y <=210)) // MENÚ DE BOTONES {para (int o =0; o <6; o ++) { entrada manual [o] =0; } entrada de paso:int buf =0; myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setColor (255, 255, 255); botones de dibujo (); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); myGLCD.setFont (SevenSegNumFont); myGLCD.setBackColor (0, 0, 0); // akolouthei to while (true) &drawbuttons (TICK!) while (true) {if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); // BOTONES 1-3 if ((y> =15) &&(y <=55)) {if ((x> =20) &&(x <=60)) // 1 {actualización manual (1, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 2 {actualización manual (2, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 3 {actualización manual (3, buf); buf ++; retraso (85); }} // BOTONES 1-3 FINALIZAR if ((y> =70) &&(y <=110)) // BOTONES 4-6 {if ((x> =20) &&(x <=60)) // 4 {actualización manual (4, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 5 {actualización manual (5, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 6 {actualización manual (6, buf); buf ++; retraso (85); }} // BOTONES 4-6 FINALIZAR if ((y> =125) &&(y <=165)) // BOTONES 7-9 {if ((x> =20) &&(x <=60)) // 7 {actualización manual (7, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 8 {actualización manual (8, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 9 {actualización manual (9, buf); buf ++; retraso (85); }} // BOTONES 7-9 FIN si ((x> =20) &&(x <=80) &&(y> =175) &&(y <=205)) // 0 {actualización manual (0, buf); buf ++; retraso (85); } if ((x> =190) &&(x <=290) &&(y> =70) &&(y <=110)) // BOTÓN OK {bool flag =true; for (int t =0; t <6; t ++) {if (entrada manual [t]! =paso manual [t]) {bandera =falso; }} if (flag ==true) // swstos kwdikos {for (int i =0; i <6; i ++) {manualinput [i] =0; } myGLCD.clrScr (); myGLCD.setFont (BigFont); myGLCD.print ("¡PASA OK!", CENTRO, 100); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); retraso (2000); título(); myGLCD.setBackColor (0, 0, 0); myGLCD.setColor (255, 0, 0); myGLCD.print ("INTRODUZCA NUEVA CONTRASEÑA", CENTRO, 119); retirarse(); dibujar siguiente (); while (verdadero) {if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); int buf =0; // EISAGWGH NEOU KWDIKOU if ((x> =170) &&(x <=300) &&(y> =180) &&(y <=210)) {newmanpassinput:myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setColor (255, 255, 255); botones de dibujo (); digitalWrite (buzzerpin, ALTO); retraso (50); digitalWrite (buzzerpin, BAJO); myGLCD.setFont (SevenSegNumFont); myGLCD.setBackColor (0, 0, 0); while (verdadero) {if (myTouch.dataAvailable ()) {myTouch.read (); x =myTouch.getX (); y =myTouch.getY (); // BOTONES 1-3 if ((y> =15) &&(y <=55)) {if ((x> =20) &&(x <=60)) // 1 {actualización manual (1, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 2 {actualización manual (2, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 3 {actualización manual (3, buf); buf ++; retraso (85); }} // BOTONES 1-3 FINALIZAR if ((y> =70) &&(y <=110)) // BOTONES 4-6 {if ((x> =20) &&(x <=60)) // 4 {actualización manual (4, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 5 {actualización manual (5, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 6 {actualización manual (6, buf); buf ++; retraso (85); }} // BOTONES 4-6 FINALIZAR if ((y> =125) &&(y <=165)) // BOTONES 7-9 {if ((x> =20) &&(x <=60)) // 7 {actualización manual (7, buf); buf ++; retraso (85); } if ((x> =80) &&(x <=120)) // 8 {actualización manual (8, buf); buf ++; retraso (85); } if ((x> =140) &&(x <=180)) // 9 {actualización manual (9, buf); buf ++; retraso (85); }} // BOTONES 7-9 FIN si ((x> =20) &&(x <=80) &&(y> =175) &&(y <=205)) // 0 {actualización manual (0, buf); buf ++; retraso (85); } // EDW THA MPEI PARA OK. THA RWTAW AN O KWDIKOS EINAI ENTAKSEI (2 KOUMPIA, SÍ Y NO). UN "SÍ", TOTE THA EPISTREFEI STO ARXIKO MENOU, AN "NO" THA EPISTREFEI STHN EISAGWGH KWDIKOY if ((x> =190) &&(x <=290) &&(y> =70) &&(y <=110) ) // BOTÓN DE ACEPTACIÓN DE NUEVA PASA {buf =0; myGLCD.clrScr (); title (); ... Este archivo ha sido truncado, descárguelo para ver su contenido completo. 

Proceso de manufactura

  1. Diseño a prueba de fallas
  2. Sistema de alarma por detección de movimiento
  3. Decodificador DTMF usando solo Arduino
  4. Sistema de riego automático de plantas con Arduino
  5. La seguridad del sistema de alarma se pone a prueba
  6. Sistema de ventilación del sótano / espacio de acceso
  7. Python3 y comunicación Arduino
  8. Sistema de asistencia basado en Arduino y hoja de cálculo de Google
  9. Sistema de advertencia de detección de colisiones basado en Arduino
  10. Sistema de seguridad basado en Arduino
  11. Reloj despertador simple con DS1302 RTC