SlideShare una empresa de Scribd logo
1 de 26
PROYECTO DE 
ELECTRÓNICA 
Sistema de 
Alarma 
Francisco Javier López Alcarria 
1
ÍNDICE 
2
- Objetivo: 
El Objetivo principal de este proyecto es realizar un sistema de alarma controlado 
manualmente. Dispondrá de varios modos con los que nos moveremos por el programa 
(alarma apagada, encendida, etc.), de contraseña (la cual designaremos cuando arranque el 
programa), de una temporización para la activación de la alarma, de un dispositivo de sonido 
como un zumbador y de una pantalla LCD en la que se nos mostrará la información necesaria 
para interactuar con el programa. 
- Justificación: 
Realizar un sistema de alarma barato, fácil de usar y con una contraseña que 
podremoscambiar cuando deseemos. 
- Plan de trabajo: 
El plan de trabajo será dividido en varias etapas: 
A) Montaje del circuito en protoboards: 
Ésta será la primera fase del proyecto, realizar el circuito del proyecto usando las placas 
prototipo, conociendo en todo momento las entradas y salidas que usaremos en el arduino, 
para una programación correcta. Para ello usaremos los siguientes materiales: 
- Pack Arduino UNO: del pack usaremos la placa Arduino UNO, la pantalla LCD y el 
teclado. 
- 3 pulsadores. 
- 1 zumbador. 
- 1 potenciómetro. 
- 4 leds, uno de ellos para comprobar que el sensor funciona correctamente. 
- Un total de 15 resistencias 
3
Para el montaje del circuito podemos seguir el siguiente esquema: 
Nuestra pantalla LCD sólo tiene 4 patillas: VCC, GND, SCL y SDA. La patilla SCL la 
conectaremos a la entrada analógica A5 del Arduino, y la SDA a la A4 
El sensor de movimiento lo conectaremos de esta manera, la primera patilla a masa, la 
segunda a 5 Voltios y la tercera al pin 5 del Arduino: 
4
5
El teclado requiere de 8 patillas digitales del arduino normalmente, pero podemos 
utilizar solo una entrada analógica, si usamos un divisor de tensión para cada tecla y un 
método en la programación que explicaremos más tarde, ahorrando un gran número de 
patillas, sin las que nos sería imposible realizar el proyecto. Lo conectaremos de la siguiente 
manera: 
En la parte de programación veremos para que utilizaremos cada uno de estos 
materiales, ya que explicaremos el funcionamiento del programa por partes 
Una vez tengamos todo correctamente montado, podremos pasar a la programación. 
6
B) Programación: 
Este apartado lo dividiremos en varios apartados para explicarlo lo más fácilmente posible. 
Primero veremos la programación para controlar algunos componentes, como la pantalla 
LCD, el teclado y el zumbador: 
PROGRAMACIÓN POR PARTES: 
- La pantalla LCD: 
Para conectar la pantalla al Arduino, debemos conectar la patilla SCL a la entrada 
analógica A5 y SDA la conectaremos a la A4. 
Para poder usar la pantalla LCD en el compilador tenemos que poner esta librería: 
Después, en la función void setup () ponemos esto: 
Con esto ya podremos usar la LCD, para ello se usarán los siguientes comandos: 
lcd.clear(); // para borrar el contenido de la pantalla, es indispensable si queremos 
escribir algo en ella distinto de lo anterior, ya que si no se nos solaparán los dígitos. 
lcd.print (“ejemplo”); // para escribir lo que queramos en la pantalla. 
lcd.setCursor (x,y); // con ésto seleccionaremos la casilla de la LCD en la que 
queremos empezar a escribir, siendo x las columnas e y las filas (las dos empiezan por 
la columna y fila 0). 
7
- El teclado: 
Para poder conectar el teclado al Arduino usando sólo una entrada analógica, lo 
haremos con el divisor de tensión que hemos explicado anteriormente. De esta 
manera cada tecla nos enviará una señal analógica distinta de las otras, por lo tanto 
mediante los rangos de la señal podremos asignar cada valor a un número del teclado. 
Lo podremos hacer de esta forma: 
do 
{ 
int numero2= analogRead (teclado); 
if ((numero2 > 845) && (numero2 < 865)) 
{ 
nf = 1; 
x ++; 
} 
else if ((numero2 > 635) && (numero2 < 655)) 
{ 
nf = 2; 
x ++; 
} 
else if ((numero2 > 503) && (numero2 < 520)) 
{ 
nf = 3; 
x ++; 
} 
else if ((numero2 > 785) && (numero2 < 805)) 
{ 
nf = 4; 
x ++; 
8
} 
else if ((numero2 > 600) && (numero2 < 620)) 
{ 
nf = 5; 
x ++; 
} 
else if ((numero2 > 480) && (numero2 < 495)) 
{ 
nf = 6; 
x ++; 
} 
else if ((numero2 > 720) && (numero2 < 740)) 
{ 
nf = 7; 
x ++; 
} 
else if ((numero2 > 560) && (numero2 < 580)) 
{ 
nf = 8; 
x ++; 
} 
else if ((numero2 > 460) && (numero2 < 475)) 
{ 
nf = 9; 
x ++; 
} 
else if ((numero2 > 545) && (numero2 < 555)) 
9
{ 
nf = 0; 
x ++; 
} 
En este proyecto solo hemos usado los números, así que si queremos añadir el resto 
de teclas de nuestro teclado, comprobaremos los rangos de señal que puede dar cada 
tecla y lo añadiremos en el compilador de la manera anterior. 
- El zumbador : 
El zumbador es un dispositivo para crear sonidos. El tono del sonido lo podemos 
regular usando distintas frecuencias. También podemos controlar su intermitencia con 
el uso de la función delay(). Ejemplo: 
tone (zumbador, 1000); // para activar el zumbador y su tono 
delay (150); 
noTone (zumbador); // para desactivar el zumbador 
tone (zumbador, 1000); 
delay (150); 
noTone (zumbador); 
10
PROGRAMACIÓN POR PARTES: 
En esta parte veremos la programación completa por partes y explicaremos 
brevemente su función. 
1- Declaración de variables. 
Lo primero será declarar las variables y entradas que usaremos en el programa: 
int verde = 13; 
int naranja = 12; 
int rojo = 11; 
int zumbador = 10; 
int pulsador_setup = 8; 
int pulsador_verde = 7; 
int pulsador_naranja = 6; 
int sensor_mov = 5; 
int analog = A0; 
int teclado = A1; 
int i, x, nivel, temporizador, inicio, temp2, nf, ultnum; 
int pass1 [6]; 
int pass2 [6]; 
int tmillis1, tmillis2; 
2- La función setup: 
Aquí asignaremos las entradas o salidas y activaremos la pantalla LCD: 
11
void setup() 
{ 
lcd.init (); 
lcd.backlight (); 
pinMode (verde, OUTPUT); 
pinMode (naranja, OUTPUT); 
pinMode (rojo, OUTPUT); 
pinMode (zumbador, OUTPUT); 
pinMode (pulsador_verde, INPUT); 
pinMode (pulsador_naranja, INPUT); 
pinMode (sensor_mov, INPUT); 
pinMode (analog, INPUT); 
Serial.begin (9600); 
} 
12
3- La función modo_inicio: 
Esta función se activará siempre que se inicie el programa o cuando pulsemos el 
boton_inicio. Sirve para designar la contraseña (será siempre de 6 dígitos) que 
queremos usar para desactivar la alarma usando el teclado y para regular el tiempo de 
activación de ésta mediante un potenciómetro. Después de este modo solo podremos 
pasar al modo_verde: 
void modo_inicio() 
{ 
lcd.clear (); 
digitalWrite (verde, LOW); 
digitalWrite (naranja, LOW); 
digitalWrite (rojo, LOW); 
lcd.print ("Introducir pass: "); 
lcd.setCursor (3,1); 
i=0; 
do 
{ 
int numero2= analogRead (teclado); 
if ((numero2 > 845) && (numero2 < 865)) 
{ 
nf = 1; 
x ++; 
} 
else if ((numero2 > 635) && (numero2 < 655)) 
{ 
nf = 2; 
x ++; 
13
} 
else if ((numero2 > 503) && (numero2 < 520)) 
{ 
nf = 3; 
x ++; 
} 
else if ((numero2 > 785) && (numero2 < 805)) 
{ 
nf = 4; 
x ++; 
} 
else if ((numero2 > 600) && (numero2 < 620)) 
{ 
nf = 5; 
x ++; 
} 
else if ((numero2 > 480) && (numero2 < 495)) 
{ 
nf = 6; 
x ++; 
} 
else if ((numero2 > 720) && (numero2 < 740)) 
{ 
nf = 7; 
x ++; 
} 
else if ((numero2 > 560) && (numero2 < 580)) 
14
{ 
nf = 8; 
x ++; 
} 
else if ((numero2 > 460) && (numero2 < 475)) 
{ 
nf = 9; 
x ++; 
} 
else if ((numero2 > 545) && (numero2 < 555)) 
{ 
nf = 0; 
x ++; 
} 
if (ultnum != nf) 
{ 
x = 0; 
Serial.print ("tecla "); 
Serial.println (nf); 
lcd.print (nf); 
tone (zumbador, 4000); 
delay (100); 
noTone (zumbador); 
delay (400); 
ultnum = nf; 
pass1 [i] = nf; 
15
i++; 
} 
else if ((ultnum == nf) && (x == 1)) 
{ 
x = 0; 
Serial.print ("tecla "); 
Serial.println (nf); 
lcd.print (nf); 
tone (zumbador, 4000); 
delay (100); 
noTone (zumbador); 
delay (400); 
pass1 [i] = nf; 
i++; 
} 
} 
while (i != 6); 
lcd.clear (); 
lcd.print ("la pass es: "); 
lcd.setCursor (3,1); 
lcd.print (pass1[0]); 
lcd.print (pass1[1]); 
lcd.print (pass1[2]); 
lcd.print (pass1[3]); 
lcd.print (pass1[4]); 
16
lcd.print (pass1[5]); 
delay (5000); 
lcd.clear (); 
do 
{ 
temporizador = analogRead (analog); 
temporizador = map (temporizador, 0, 1023, 15, 4); 
Serial.println (temporizador); 
lcd.print ("Introducir temp:"); 
lcd.setCursor (3,1); 
lcd.print (temporizador); 
lcd.print (" segundos "); 
} 
while (digitalRead (pulsador_verde) == LOW); 
inicio = 1; 
nivel = 1; 
} 
17
4- La función modo_verde: 
Cuando se activa esta función se enciende el led verde y nos indica que la alarma está 
desactivada pero lista para usarse, con la contraseña y el tiempo de activación ya 
determinados. Desde esta función puede pasarse al modo_inicio o modo_naranja: 
void modo_verde() 
{ 
lcd.clear(); 
lcd.print ("Alarma OFF"); 
digitalWrite (verde, HIGH); 
digitalWrite (naranja, LOW); 
digitalWrite (rojo, LOW); 
nivel = 1; 
} 
5- La función modo_naranja: 
Al activarse esta función comienza la temporización para la activación de la alarma, 
mostrándonos en la LCD el tiempo restante y con el led naranja y el zumbador 
activándose de manera intermitente. Una vez esta temporización acabe el led naranja 
se quedará fijo y la alarma activa, pasando al modo_rojo si ésta detecta movimiento: 
void modo_naranja() 
{ 
lcd.clear(); 
digitalWrite (verde, LOW); 
digitalWrite (naranja, LOW); 
digitalWrite (rojo, LOW); 
18
temp2 = temporizador; 
for (int i=0; i<temporizador; i++) 
{ 
lcd.print ("Tiempo restante:"); 
lcd.setCursor (3,1); 
lcd.print (temp2); 
lcd.print (" segundos "); 
tone (zumbador, 1000); 
digitalWrite (naranja, HIGH); 
delay (150); 
noTone (zumbador); 
digitalWrite (naranja, LOW); 
delay (850); 
temp2--; 
} 
tone (zumbador, 2500); 
digitalWrite (naranja, HIGH); 
delay (150); 
noTone (zumbador); 
lcd.clear(); 
lcd.print ("Alarma ON"); 
nivel = 2; 
} 
6- La función modo_rojo: 
Una vez se active este modo, el led rojo y el zumbador se activarán y quedarán fijos, 
con una pequeña intermitencia al principio. También se nos pedirá una contraseña de 
19
6 dígitos, si introducimos la correcta el zumbador se desactivará y el programa pasará 
al modo_verde, si ésta es incorrecta el modo_rojo se volverá a activar otra vez: 
void modo_rojo() 
{ 
lcd.clear (); 
digitalWrite (verde, LOW); 
digitalWrite (naranja, LOW); 
digitalWrite (rojo, HIGH); 
digitalWrite (zumbador, HIGH); 
delay (100); 
digitalWrite (zumbador, LOW); 
delay (100); 
digitalWrite (zumbador, HIGH); 
delay (100); 
digitalWrite (zumbador, LOW); 
delay (100); 
digitalWrite (zumbador, HIGH); 
lcd.print ("Introducir pass: "); 
lcd.setCursor (3,1); 
i=0; 
do 
{ 
int numero2= analogRead (teclado); 
if ((numero2 > 845) && (numero2 < 865)) 
{ 
nf = 1; 
20
x ++; 
} 
else if ((numero2 > 635) && (numero2 < 655)) 
{ 
nf = 2; 
x ++; 
} 
else if ((numero2 > 503) && (numero2 < 520)) 
{ 
nf = 3; 
x ++; 
} 
else if ((numero2 > 785) && (numero2 < 805)) 
{ 
nf = 4; 
x ++; 
} 
else if ((numero2 > 600) && (numero2 < 620)) 
{ 
nf = 5; 
x ++; 
} 
else if ((numero2 > 480) && (numero2 < 495)) 
{ 
nf = 6; 
x ++; 
} 
21
else if ((numero2 > 720) && (numero2 < 740)) 
{ 
nf = 7; 
x ++; 
} 
else if ((numero2 > 560) && (numero2 < 580)) 
{ 
nf = 8; 
x ++; 
} 
else if ((numero2 > 460) && (numero2 < 475)) 
{ 
nf = 9; 
x ++; 
} 
else if ((numero2 > 545) && (numero2 < 555)) 
{ 
nf = 0; 
x ++; 
} 
if (ultnum != nf) 
{ 
x = 0; 
Serial.print ("tecla "); 
Serial.println (nf); 
22
lcd.print (nf); 
delay (500); 
ultnum = nf; 
pass2 [i] = nf; 
i++; 
} 
else if ((ultnum == nf) && (x == 1)) 
{ 
x = 0; 
Serial.print ("tecla "); 
Serial.println (nf); 
lcd.print (nf); 
delay (500); 
pass2 [i] = nf; 
i++; 
} 
} 
while (i < 6); 
boolean correcta = 1; 
for (i=0; i < 6; i++) 
{ 
if (pass1[i] != pass2[i]) 
{ 
correcta = 0; 
} 
23
} 
if (correcta == 1) 
{ 
Serial.println ("Pass CORRECTA. "); 
lcd.clear (); 
lcd.print ("Pass CORRECTA. "); 
digitalWrite (zumbador, LOW); 
delay(5000); 
modo_verde(); 
} 
else 
{ 
Serial.println ("Pass INCORRECTA. "); 
lcd.clear (); 
lcd.print ("Pass INCORRECTA. "); 
delay (5000); 
modo_rojo(); 
} 
nivel = 0; 
} 
7- La función loop: 
Es la última parte y el bucle principal del programa. En este caso será la función 
encargada de mover el programa por los distintos modos del sistema de alarma. Para 
ello se usan los pulsadores y unas variables (“inicio” y “nivel”) que irán cambiando 
según se activen los distintos modos: 
24
void loop() 
{ 
if ((digitalRead (pulsador_inicio) == HIGH) || (inicio == 0)) 
{ 
modo_inicio(); 
modo_verde(); 
} 
else if (digitalRead (pulsador_verde) == HIGH) 
{ 
modo_verde(); 
} 
else if ((digitalRead (pulsador_naranja) == HIGH) && ((nivel == 0) || (nivel == 1))) 
{ 
modo_naranja(); 
} 
else if ((digitalRead (sensor_mov) == HIGH) && (nivel == 2)) 
{ 
modo_rojo(); 
} 
} 
25
- Presupuesto: 
Placa Arduino UNO: 27 € 
Teclado: 6 € 
Pantalla LCD: 12 € 
Sensor de movimiento: 9 € 
Potenciómetro: 2 € 
Zumbador: 1 € 
4 leds: 4 € 
15 resistencias: 0,45 € 
26

Más contenido relacionado

La actualidad más candente

54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flopsSENA-CIMI-GIRON
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresBertha Vega
 
Diferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuencialesDiferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuencialesWilfred Garcia Diomeda
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABJose Agustin Estrada
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESFranklin J.
 
Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)251089luis
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensambladoreveTalavera
 
Creacion de una red wan en cisco packet tracer
Creacion de una red wan en cisco packet tracerCreacion de una red wan en cisco packet tracer
Creacion de una red wan en cisco packet tracerJenny Lophezz
 
Call ensamblador 3
Call ensamblador  3Call ensamblador  3
Call ensamblador 3Cesar Santin
 

La actualidad más candente (20)

Circuitos digitales-problemas
Circuitos digitales-problemasCircuitos digitales-problemas
Circuitos digitales-problemas
 
54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops54599266 ejercicios-flip-flops
54599266 ejercicios-flip-flops
 
Diodo zener
Diodo zenerDiodo zener
Diodo zener
 
Conversión NAND y NOR
Conversión NAND y NORConversión NAND y NOR
Conversión NAND y NOR
 
Señales y sistemas
Señales y sistemasSeñales y sistemas
Señales y sistemas
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadores
 
Diferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuencialesDiferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuenciales
 
TTL-CMOS
TTL-CMOSTTL-CMOS
TTL-CMOS
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Voltaje de rizado
Voltaje de rizadoVoltaje de rizado
Voltaje de rizado
 
Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Diseño de Circuitos Secuenciales
Diseño de Circuitos SecuencialesDiseño de Circuitos Secuenciales
Diseño de Circuitos Secuenciales
 
RELOJ DIGITAL TTL 24 horas
RELOJ DIGITAL TTL 24 horas RELOJ DIGITAL TTL 24 horas
RELOJ DIGITAL TTL 24 horas
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Creacion de una red wan en cisco packet tracer
Creacion de una red wan en cisco packet tracerCreacion de una red wan en cisco packet tracer
Creacion de una red wan en cisco packet tracer
 
Call ensamblador 3
Call ensamblador  3Call ensamblador  3
Call ensamblador 3
 

Similar a PRIMER Proyecto alarma arduino

DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINODISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINOFernando Marcos Marcos
 
Móvil esquiva objetos
Móvil esquiva objetosMóvil esquiva objetos
Móvil esquiva objetosLucasPytel
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PFernando Marcos Marcos
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduinoKetoc2k3
 
Apuntes arduino nivel_pardillo
Apuntes arduino nivel_pardilloApuntes arduino nivel_pardillo
Apuntes arduino nivel_pardilloxampa
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagjoaquinin1
 
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADCONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADMaestroMatematicas
 

Similar a PRIMER Proyecto alarma arduino (20)

DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINODISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
 
Móvil esquiva objetos
Móvil esquiva objetosMóvil esquiva objetos
Móvil esquiva objetos
 
Trabajo final.
Trabajo final.Trabajo final.
Trabajo final.
 
Equipo7 Arduino
Equipo7 ArduinoEquipo7 Arduino
Equipo7 Arduino
 
Arduino Uno ejercicios prácticos
Arduino Uno ejercicios prácticos Arduino Uno ejercicios prácticos
Arduino Uno ejercicios prácticos
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
 
Ide arduino + arddublock
Ide arduino + arddublockIde arduino + arddublock
Ide arduino + arddublock
 
Arduino componentes
Arduino componentesArduino componentes
Arduino componentes
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Proyecto de arduino
Proyecto de arduinoProyecto de arduino
Proyecto de arduino
 
Apuntes arduino nivel_pardillo
Apuntes arduino nivel_pardilloApuntes arduino nivel_pardillo
Apuntes arduino nivel_pardillo
 
Apuntes arduino nivel_pardillo
Apuntes arduino nivel_pardilloApuntes arduino nivel_pardillo
Apuntes arduino nivel_pardillo
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
 
Programación básica de Arduino
Programación básica de Arduino Programación básica de Arduino
Programación básica de Arduino
 
Presentacion
PresentacionPresentacion
Presentacion
 
Proyecto Arduino
Proyecto ArduinoProyecto Arduino
Proyecto Arduino
 
Proyecto Hacienda Domotica
Proyecto Hacienda DomoticaProyecto Hacienda Domotica
Proyecto Hacienda Domotica
 
Proyecto cosa
Proyecto cosaProyecto cosa
Proyecto cosa
 
Arduino + Arddublock.pdf
Arduino + Arddublock.pdfArduino + Arddublock.pdf
Arduino + Arddublock.pdf
 
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDADCONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
CONCEPTOS BASICOS DE ARDUINO EN ELECTRICIDAD
 

Último

CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesgovovo2388
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 

Último (20)

CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 

PRIMER Proyecto alarma arduino

  • 1. PROYECTO DE ELECTRÓNICA Sistema de Alarma Francisco Javier López Alcarria 1
  • 3. - Objetivo: El Objetivo principal de este proyecto es realizar un sistema de alarma controlado manualmente. Dispondrá de varios modos con los que nos moveremos por el programa (alarma apagada, encendida, etc.), de contraseña (la cual designaremos cuando arranque el programa), de una temporización para la activación de la alarma, de un dispositivo de sonido como un zumbador y de una pantalla LCD en la que se nos mostrará la información necesaria para interactuar con el programa. - Justificación: Realizar un sistema de alarma barato, fácil de usar y con una contraseña que podremoscambiar cuando deseemos. - Plan de trabajo: El plan de trabajo será dividido en varias etapas: A) Montaje del circuito en protoboards: Ésta será la primera fase del proyecto, realizar el circuito del proyecto usando las placas prototipo, conociendo en todo momento las entradas y salidas que usaremos en el arduino, para una programación correcta. Para ello usaremos los siguientes materiales: - Pack Arduino UNO: del pack usaremos la placa Arduino UNO, la pantalla LCD y el teclado. - 3 pulsadores. - 1 zumbador. - 1 potenciómetro. - 4 leds, uno de ellos para comprobar que el sensor funciona correctamente. - Un total de 15 resistencias 3
  • 4. Para el montaje del circuito podemos seguir el siguiente esquema: Nuestra pantalla LCD sólo tiene 4 patillas: VCC, GND, SCL y SDA. La patilla SCL la conectaremos a la entrada analógica A5 del Arduino, y la SDA a la A4 El sensor de movimiento lo conectaremos de esta manera, la primera patilla a masa, la segunda a 5 Voltios y la tercera al pin 5 del Arduino: 4
  • 5. 5
  • 6. El teclado requiere de 8 patillas digitales del arduino normalmente, pero podemos utilizar solo una entrada analógica, si usamos un divisor de tensión para cada tecla y un método en la programación que explicaremos más tarde, ahorrando un gran número de patillas, sin las que nos sería imposible realizar el proyecto. Lo conectaremos de la siguiente manera: En la parte de programación veremos para que utilizaremos cada uno de estos materiales, ya que explicaremos el funcionamiento del programa por partes Una vez tengamos todo correctamente montado, podremos pasar a la programación. 6
  • 7. B) Programación: Este apartado lo dividiremos en varios apartados para explicarlo lo más fácilmente posible. Primero veremos la programación para controlar algunos componentes, como la pantalla LCD, el teclado y el zumbador: PROGRAMACIÓN POR PARTES: - La pantalla LCD: Para conectar la pantalla al Arduino, debemos conectar la patilla SCL a la entrada analógica A5 y SDA la conectaremos a la A4. Para poder usar la pantalla LCD en el compilador tenemos que poner esta librería: Después, en la función void setup () ponemos esto: Con esto ya podremos usar la LCD, para ello se usarán los siguientes comandos: lcd.clear(); // para borrar el contenido de la pantalla, es indispensable si queremos escribir algo en ella distinto de lo anterior, ya que si no se nos solaparán los dígitos. lcd.print (“ejemplo”); // para escribir lo que queramos en la pantalla. lcd.setCursor (x,y); // con ésto seleccionaremos la casilla de la LCD en la que queremos empezar a escribir, siendo x las columnas e y las filas (las dos empiezan por la columna y fila 0). 7
  • 8. - El teclado: Para poder conectar el teclado al Arduino usando sólo una entrada analógica, lo haremos con el divisor de tensión que hemos explicado anteriormente. De esta manera cada tecla nos enviará una señal analógica distinta de las otras, por lo tanto mediante los rangos de la señal podremos asignar cada valor a un número del teclado. Lo podremos hacer de esta forma: do { int numero2= analogRead (teclado); if ((numero2 > 845) && (numero2 < 865)) { nf = 1; x ++; } else if ((numero2 > 635) && (numero2 < 655)) { nf = 2; x ++; } else if ((numero2 > 503) && (numero2 < 520)) { nf = 3; x ++; } else if ((numero2 > 785) && (numero2 < 805)) { nf = 4; x ++; 8
  • 9. } else if ((numero2 > 600) && (numero2 < 620)) { nf = 5; x ++; } else if ((numero2 > 480) && (numero2 < 495)) { nf = 6; x ++; } else if ((numero2 > 720) && (numero2 < 740)) { nf = 7; x ++; } else if ((numero2 > 560) && (numero2 < 580)) { nf = 8; x ++; } else if ((numero2 > 460) && (numero2 < 475)) { nf = 9; x ++; } else if ((numero2 > 545) && (numero2 < 555)) 9
  • 10. { nf = 0; x ++; } En este proyecto solo hemos usado los números, así que si queremos añadir el resto de teclas de nuestro teclado, comprobaremos los rangos de señal que puede dar cada tecla y lo añadiremos en el compilador de la manera anterior. - El zumbador : El zumbador es un dispositivo para crear sonidos. El tono del sonido lo podemos regular usando distintas frecuencias. También podemos controlar su intermitencia con el uso de la función delay(). Ejemplo: tone (zumbador, 1000); // para activar el zumbador y su tono delay (150); noTone (zumbador); // para desactivar el zumbador tone (zumbador, 1000); delay (150); noTone (zumbador); 10
  • 11. PROGRAMACIÓN POR PARTES: En esta parte veremos la programación completa por partes y explicaremos brevemente su función. 1- Declaración de variables. Lo primero será declarar las variables y entradas que usaremos en el programa: int verde = 13; int naranja = 12; int rojo = 11; int zumbador = 10; int pulsador_setup = 8; int pulsador_verde = 7; int pulsador_naranja = 6; int sensor_mov = 5; int analog = A0; int teclado = A1; int i, x, nivel, temporizador, inicio, temp2, nf, ultnum; int pass1 [6]; int pass2 [6]; int tmillis1, tmillis2; 2- La función setup: Aquí asignaremos las entradas o salidas y activaremos la pantalla LCD: 11
  • 12. void setup() { lcd.init (); lcd.backlight (); pinMode (verde, OUTPUT); pinMode (naranja, OUTPUT); pinMode (rojo, OUTPUT); pinMode (zumbador, OUTPUT); pinMode (pulsador_verde, INPUT); pinMode (pulsador_naranja, INPUT); pinMode (sensor_mov, INPUT); pinMode (analog, INPUT); Serial.begin (9600); } 12
  • 13. 3- La función modo_inicio: Esta función se activará siempre que se inicie el programa o cuando pulsemos el boton_inicio. Sirve para designar la contraseña (será siempre de 6 dígitos) que queremos usar para desactivar la alarma usando el teclado y para regular el tiempo de activación de ésta mediante un potenciómetro. Después de este modo solo podremos pasar al modo_verde: void modo_inicio() { lcd.clear (); digitalWrite (verde, LOW); digitalWrite (naranja, LOW); digitalWrite (rojo, LOW); lcd.print ("Introducir pass: "); lcd.setCursor (3,1); i=0; do { int numero2= analogRead (teclado); if ((numero2 > 845) && (numero2 < 865)) { nf = 1; x ++; } else if ((numero2 > 635) && (numero2 < 655)) { nf = 2; x ++; 13
  • 14. } else if ((numero2 > 503) && (numero2 < 520)) { nf = 3; x ++; } else if ((numero2 > 785) && (numero2 < 805)) { nf = 4; x ++; } else if ((numero2 > 600) && (numero2 < 620)) { nf = 5; x ++; } else if ((numero2 > 480) && (numero2 < 495)) { nf = 6; x ++; } else if ((numero2 > 720) && (numero2 < 740)) { nf = 7; x ++; } else if ((numero2 > 560) && (numero2 < 580)) 14
  • 15. { nf = 8; x ++; } else if ((numero2 > 460) && (numero2 < 475)) { nf = 9; x ++; } else if ((numero2 > 545) && (numero2 < 555)) { nf = 0; x ++; } if (ultnum != nf) { x = 0; Serial.print ("tecla "); Serial.println (nf); lcd.print (nf); tone (zumbador, 4000); delay (100); noTone (zumbador); delay (400); ultnum = nf; pass1 [i] = nf; 15
  • 16. i++; } else if ((ultnum == nf) && (x == 1)) { x = 0; Serial.print ("tecla "); Serial.println (nf); lcd.print (nf); tone (zumbador, 4000); delay (100); noTone (zumbador); delay (400); pass1 [i] = nf; i++; } } while (i != 6); lcd.clear (); lcd.print ("la pass es: "); lcd.setCursor (3,1); lcd.print (pass1[0]); lcd.print (pass1[1]); lcd.print (pass1[2]); lcd.print (pass1[3]); lcd.print (pass1[4]); 16
  • 17. lcd.print (pass1[5]); delay (5000); lcd.clear (); do { temporizador = analogRead (analog); temporizador = map (temporizador, 0, 1023, 15, 4); Serial.println (temporizador); lcd.print ("Introducir temp:"); lcd.setCursor (3,1); lcd.print (temporizador); lcd.print (" segundos "); } while (digitalRead (pulsador_verde) == LOW); inicio = 1; nivel = 1; } 17
  • 18. 4- La función modo_verde: Cuando se activa esta función se enciende el led verde y nos indica que la alarma está desactivada pero lista para usarse, con la contraseña y el tiempo de activación ya determinados. Desde esta función puede pasarse al modo_inicio o modo_naranja: void modo_verde() { lcd.clear(); lcd.print ("Alarma OFF"); digitalWrite (verde, HIGH); digitalWrite (naranja, LOW); digitalWrite (rojo, LOW); nivel = 1; } 5- La función modo_naranja: Al activarse esta función comienza la temporización para la activación de la alarma, mostrándonos en la LCD el tiempo restante y con el led naranja y el zumbador activándose de manera intermitente. Una vez esta temporización acabe el led naranja se quedará fijo y la alarma activa, pasando al modo_rojo si ésta detecta movimiento: void modo_naranja() { lcd.clear(); digitalWrite (verde, LOW); digitalWrite (naranja, LOW); digitalWrite (rojo, LOW); 18
  • 19. temp2 = temporizador; for (int i=0; i<temporizador; i++) { lcd.print ("Tiempo restante:"); lcd.setCursor (3,1); lcd.print (temp2); lcd.print (" segundos "); tone (zumbador, 1000); digitalWrite (naranja, HIGH); delay (150); noTone (zumbador); digitalWrite (naranja, LOW); delay (850); temp2--; } tone (zumbador, 2500); digitalWrite (naranja, HIGH); delay (150); noTone (zumbador); lcd.clear(); lcd.print ("Alarma ON"); nivel = 2; } 6- La función modo_rojo: Una vez se active este modo, el led rojo y el zumbador se activarán y quedarán fijos, con una pequeña intermitencia al principio. También se nos pedirá una contraseña de 19
  • 20. 6 dígitos, si introducimos la correcta el zumbador se desactivará y el programa pasará al modo_verde, si ésta es incorrecta el modo_rojo se volverá a activar otra vez: void modo_rojo() { lcd.clear (); digitalWrite (verde, LOW); digitalWrite (naranja, LOW); digitalWrite (rojo, HIGH); digitalWrite (zumbador, HIGH); delay (100); digitalWrite (zumbador, LOW); delay (100); digitalWrite (zumbador, HIGH); delay (100); digitalWrite (zumbador, LOW); delay (100); digitalWrite (zumbador, HIGH); lcd.print ("Introducir pass: "); lcd.setCursor (3,1); i=0; do { int numero2= analogRead (teclado); if ((numero2 > 845) && (numero2 < 865)) { nf = 1; 20
  • 21. x ++; } else if ((numero2 > 635) && (numero2 < 655)) { nf = 2; x ++; } else if ((numero2 > 503) && (numero2 < 520)) { nf = 3; x ++; } else if ((numero2 > 785) && (numero2 < 805)) { nf = 4; x ++; } else if ((numero2 > 600) && (numero2 < 620)) { nf = 5; x ++; } else if ((numero2 > 480) && (numero2 < 495)) { nf = 6; x ++; } 21
  • 22. else if ((numero2 > 720) && (numero2 < 740)) { nf = 7; x ++; } else if ((numero2 > 560) && (numero2 < 580)) { nf = 8; x ++; } else if ((numero2 > 460) && (numero2 < 475)) { nf = 9; x ++; } else if ((numero2 > 545) && (numero2 < 555)) { nf = 0; x ++; } if (ultnum != nf) { x = 0; Serial.print ("tecla "); Serial.println (nf); 22
  • 23. lcd.print (nf); delay (500); ultnum = nf; pass2 [i] = nf; i++; } else if ((ultnum == nf) && (x == 1)) { x = 0; Serial.print ("tecla "); Serial.println (nf); lcd.print (nf); delay (500); pass2 [i] = nf; i++; } } while (i < 6); boolean correcta = 1; for (i=0; i < 6; i++) { if (pass1[i] != pass2[i]) { correcta = 0; } 23
  • 24. } if (correcta == 1) { Serial.println ("Pass CORRECTA. "); lcd.clear (); lcd.print ("Pass CORRECTA. "); digitalWrite (zumbador, LOW); delay(5000); modo_verde(); } else { Serial.println ("Pass INCORRECTA. "); lcd.clear (); lcd.print ("Pass INCORRECTA. "); delay (5000); modo_rojo(); } nivel = 0; } 7- La función loop: Es la última parte y el bucle principal del programa. En este caso será la función encargada de mover el programa por los distintos modos del sistema de alarma. Para ello se usan los pulsadores y unas variables (“inicio” y “nivel”) que irán cambiando según se activen los distintos modos: 24
  • 25. void loop() { if ((digitalRead (pulsador_inicio) == HIGH) || (inicio == 0)) { modo_inicio(); modo_verde(); } else if (digitalRead (pulsador_verde) == HIGH) { modo_verde(); } else if ((digitalRead (pulsador_naranja) == HIGH) && ((nivel == 0) || (nivel == 1))) { modo_naranja(); } else if ((digitalRead (sensor_mov) == HIGH) && (nivel == 2)) { modo_rojo(); } } 25
  • 26. - Presupuesto: Placa Arduino UNO: 27 € Teclado: 6 € Pantalla LCD: 12 € Sensor de movimiento: 9 € Potenciómetro: 2 € Zumbador: 1 € 4 leds: 4 € 15 resistencias: 0,45 € 26