Cabeza LEGO seguro (4 / 5 paso)

Paso 4: código

El código utiliza bibliotecas ya existentes para el LCD, Servo y teclado. He creado mi propio código con respecto al sistema de contraseñas y funcionalidad general. El código proporciona tres opciones para la caja fuerte: abierta, cercana y establecer contraseña. Para cambiar la contraseña, el usuario tiene que saber la contraseña existente. El código es completamente comentado por la facilidad de una persona nueva a la programación.

El siguiente y adjunto es mi código. No dude en usarlo!

/***************************************************************************************************************************
Título: Cabeza de Lego seguro

Autor: Kaitlin Bellerose

Fecha: 01/11/2014

Actualizado: 03/12/2014

Propósito: Este bosquejo proporciona el sistema de control para el Lego Head seguro.

Este bosquejo pide prestado de múltiples fuentes. Las fuentes originales se citarán aquí en el bloque de título cuando siguieron planteamientos generales.

1) Biblioteca de Keypad.h escrito por Mark Stanley y Alexander Brevig (mstanley alexanderbrevig

2) existe una biblioteca de password.h en Instructables y sitios similares. No me importo para la aplicación, por lo que he creado mi propia. ****************************************************************************************************************************/

#include < Wire.h >

#include < LiquidCrystal_I2C.h >

#include < Servo.h >

#include < Keypad.h >

Lcd(0x27,16,2) de LiquidCrystal_I2C; Crear una instancia de una pantalla de LCD I2C de 16 x 2 con dirección 0x27

Servo myServo; Crear una instancia de un servo

int pos; Declarar la variable para que contenga el valor de posición del servo (Nota: "la posición es una palabra reservada)

int servoSpeed; Declarar la variable para que contenga el valor de la velocidad del servo (Nota: "velocidad" es una palabra reservada) password char [3]; Matriz que contiene la contraseña maestra. Establece a la longitud que se desea. Elegí 3 para facilitar la entrada de char demo [3]; Matriz que contiene el intento de contraseña introducidos por el usuario

isAlreadyOpen Boolean; Bandera que si seguro ya está abierto

isAlreadyClosed Boolean; Bandera que si seguro ya está cerrado

const filas bytes = 4; Cuatro filas en la matriz de teclado 4 x 4

byte const COLS = 4; Cuatro columnas en la matriz de teclado 4 x 4

teclas de Char [filas] [COLS] = {/ / mapas de los valores de teclado {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'* ', '0', '#','d '}};

byte rowPins [filas] = {8, 7, 6, 5}; Conectar a las conexiones de la fila del teclado

byte colPins [COLS] = {4, 3, 2, 10}; Conectar a las conexiones de la columna del teclado

Utilice el pasador de 1 o más apropiado para lo que yo he etiquetado como "10"

Mi Arduino tiene muchos puertos muertos por que tengo que navegar

Teclado teclado = teclado (makeKeymap(keys), rowPins colPins, filas, COLS); Crea una instancia de un teclado numérico con los valores pasados.

/ *** Función de configuración *** /

void setup() {Serial.begin(9600); / / Set serie a 9600 baudios

myServo.attach(11); Sistema servo en el pin 11

isAlreadyOpen = 0; Sistemas abierto bandera a falsos

isAlreadyClosed = 1; Bandera de conjuntos cerrados en true

pos = 90; Establece el valor de posición de brazo del servo a 90 º

servoSpeed = 3; Ajusta la velocidad del servo a 3 grados por segundo

myServo.write(pos); Sistemas servo brazo a 90 grados

contraseña [0] = '1'; Asegúrese de poner el valor inicial en comillas simples debido a su naturaleza de char

contraseña [1] = '2'; Segundo valor de matriz de contraseña

contraseña [2] = '3'; Último valor en contraseña. La contraseña por defecto "123" cuando / / se pierde la energía.

keypad.setDebounceTime(250); Establece el botón debounce tiempo para el teclado

LCD.init(); Inicializar el LCD

LCD.Backlight(); Configurar la pantalla a contraluz

LCD.Print ("Bienvenido a casa!"); Imprimir mensaje de bienvenida a LCD

Delay(1000); Tienen mensaje pantalla para milseconds de 1000

LCD.Clear(); Borrar la pantalla

LCD.Print("1) Open 2) estrecha"); Menú opciones de impresión

lcd.setCursor(0,1); Mover el cursor a la línea segunda

LCD.Print("3) Set Code"); Segunda parte del menú de opciones de impresión

Delay(3000); Retardo de

}

/***************Main Loop*****************/

void loop() {}

entrada [0] = NO_KEY; Restablece la matriz de entrada con cada lazo o bien

entrada [1] = NO_KEY; obtendrá "falsas" entradas de valores existentes

entrada [2] = NO_KEY; Configurar el teclado final a NO_KEY (similar a ajuste / /
valor null en C++)

clave char = keypad.getKey(); Obtener la primera tecla en el menú.

Si (clave == '1') {/ / inicia la lógica si se selecciona la opción "Open safe"

if(isAlreadyOpen == 1) / / comprueba si ya está abierta la caja fuerte. Ningún punto en la apertura de algo ya abierto

{

LCD.Clear(); LCD Clear

LCD.Print ("seguro es ya"); Mensaje de impresiones

lcd.setCursor(0,1); Mover el cursor a la línea segunda

LCD.Print("Open."); Segunda parte del menú de opciones de impresión

Delay(2000); Milisegundos de retardo 2000}

Else / / si la caja fuerte no está ya abierta, el código siguiente dedica a {}

LCD.Clear(); Claro la pantalla LCD

LCD.Print ("introducir la clave 1:"); Mensaje para solicitar la primera tecla

lcd.setCursor(0,1); Mueve el cursor a la línea segunda

mientras (entrada [0] == NO_KEY) / / el bucle se ejecuta hasta que una tecla válida

`{

entrada [0] = keypad.getKey(); Almacena el primer valor de la tentativa del introducido por el usuario en la contraseña

}

LCD.Print(Entry[0]); Imprime valor de visualización en pantalla LCD. Utilizar para la depuración y la facilidad de uso. Delay(1000); Retrasos para 1000 milisegundos

LCD.Clear(); Borra LCD

LCD.Print ("2 º Intro:"); Entrar en la segunda tecla

lcd.setCursor(0,1); Mover el curosr

mientras (entrada [1] == NO_KEY) / / otro bucle que se ejecutará indefinidamente a menos que una pulsación válida

{entrada [1] = keypad.getKey(); / / almacena el segundo valor el intento de contraseña introducidos por el usuario}

LCD.Print(Entry[1]); Imprime valor de visualización en pantalla LCD. Utilizar para la depuración y la facilidad de uso. Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear

LCD.Print ("introducir la clave 3:"); Solicitar tercera tecla

lcd.setCursor(0,1); Mover el cursor

mientras (entrada [2] == NO_KEY) / / otra vez, un tiempo bucle a continuamente unti de la encuesta se hace una tecla válida. {

entrada [2] = keypad.getKey(); Obtiene la tecla final

}

LCD.Print(Entry[2]); Imprime valor de visualización en pantalla LCD. Utilizar para la depuración y la facilidad de uso. Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear

Si ((entrada [0] == password[0]) & & entrada [1] == contraseña [1] & & entrada [2] == password[2]) / / si lo que el usuario introducido coincide con la contraseña almacenada, este bucle se ejecuta

{

isAlreadyOpen = 1; Configurar isAlreadyOpen bandera a true/alto

isAlreadyClosed = 0; Set isAlreadyClosed bandera a falsos bajo

pos = 180; Posición a 180 grados

myServo.write(pos); Fijar el servo a 180 grados

LCD.Clear(); LCD Clear en espera de mensaje

LCD.Print ("caja fuerte está abierta."); Mensaje que la caja fuerte está abierta

Delay(2000); Retraso de 2000 milisegundos}

Else / / si ha introducido un código incorrecto, esto se ejecuta

{

LCD.Clear(); LCD Clear

LCD.Print ("código no válido."); Mensaje de código no válido

Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear}}

mainLCDMenu(); Independientemente de si la entrada de contraseña ha sido exitoso, esto inicia nuevamente a las funciones de menú principal}

else if (clave == '2')

{/ / Se inicia si se selecciona "Cierre seguro"

if(isAlreadyClosed == 1) / / si la cabeza ya está cerrada, ¿por qué cerrarla otra vez?

{

LCD.Clear(); LCD Clear

LCD.Print ("seguro es ya"); Inicio mensaje de la caja fuerte ya cerrado lcd.setCursor(0,1); Mover el cursor a la línea segunda

LCD.Print("Closed."); Mensaje final

Delay(2000); Retraso de 2000 milisegundos demora}

Else / / si la caja fuerte no está ya cerrada, esto se ejecuta

{isAlreadyOpen = 0; / / sistemas isAlreadyOpen bandera a falsos bajo

isAlreadyClosed = 1; Establece isAlreadyClosed bandera a true y alto

pos = 90; Pos se establece en 90 grados

myServo.write(pos); Servo sistemas a 90 grados

LCD.Clear(); Borra LCD

LCD.Print ("seguro está cerrada."); Mensaje que la caja esté cerrada

Delay(2000); Milisegundos de retardo 2000}

LCD.Clear(); LCD Clear

mainLCDMenu(); De cualquier manera, volver al menú principal}

else if (clave == '3') {/ / si está seleccionada la opción "Ajustar código"

LCD.Clear(); LCD Clear

LCD.Print ("introducir la clave 1:"); El código que sigue es una repetición de código en lcd.setCursor(0,1) opción 1; El usuario tiene que introducir la contraseña correctamente antes de cambiarlo

mientras (entrada [0] == NO_KEY)

{entrada [0] = keypad.getKey();}

LCD.Print(Entry[0]);

Delay(1000);

LCD.Clear();

LCD.Print ("2 º Intro:");

lcd.setCursor(0,1);

mientras (entrada [1] == NO_KEY)

{entrada [1] = keypad.getKey();}

LCD.Print(Entry[1]);

Delay(1000);

LCD.Clear();

LCD.Print ("introducir la clave 3:");

lcd.setCursor(0,1);

mientras (entrada [2] == NO_KEY)

{entrada [2] = keypad.getKey();}

LCD.Print(Entry[2]);

Delay(1000);

LCD.Clear();

Si ((entrada [0] == password[0]) & & entrada [1] == contraseña [1] & & entrada [2] == password[2]) / / si se introdujo correctamente la contraseña, esta lógica se ejecuta

{contraseña [0] = NO_KEY; / / Reset el valor 0 de la contraseña para contraseña de NO-KEY [1] = NO_KEY; / / restablecer el valor de contraseña 1 contraseña de NO-KEY [2] = NO_KEY; / / restablecer el valor de contraseña 2 de NO-KEY

LCD.Print ("Set key 1:"); Primer valor clave

lcd.setCursor(0,1);

mientras que (contraseña [0] == NO_KEY) / / bucles sin fin hasta válido clave prensa recibido {contraseña [0] = keypad.getKey(); / / establece contraseña [0] al valor nuevo} lcd.print(password[0]); Imprime el nuevo valor

Delay(1000);

LCD.Clear(); LCD Clear

LCD.Print ("establecer clave 2:"); Mensaje de clave 2

lcd.setCursor(0,1); Mover código

mientras que (contraseña [1] == NO_KEY) / / bucles sin fin hasta válido clave prensa recibido {contraseña [1] = keypad.getKey(); / / establece contraseña [1] nuevo valor para} lcd.print(password[1]); Imprime el nuevo valor

Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear

LCD.Print ("establecer clave 3:"); Mensaje para la tercera llave

lcd.setCursor(0,1); Mover el cursor

mientras que (contraseña [2] == NO_KEY) / / bucles sin fin hasta válido clave prensa recibido {contraseña [2] = keypad.getKey(); / / establece contraseña [2] en nuevo valor}

LCD.Print(password[2]); Imprime el nuevo valor

Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear}

Else / / esto se ejecuta si el usuario escribe la contraseña incorrecta antes de la verificación {/ / para cambiar la contraseña. Usuario no puede cambiar la contraseña sin saber la contraseña

LCD.Clear(); LCD Clear

LCD.Print ("código no válido."); Mensaje de código no válido

Delay(1000); Retardo de 1000 milisegundos

LCD.Clear(); LCD Clear}

mainLCDMenu(); Independientemente del resultado, volver al menú principal

} }

Artículos Relacionados

Tanque LEGO cabeza líquido propano (gas LP)

Tanque LEGO cabeza líquido propano (gas LP)

que tenemos los amantes LEGO en la familia, y ese tanque debajo de la parrilla sólo se ve demasiado como una cabeza LEGO para no pintarlo!Encontré algo muy similar ya se ha hecho antes aquí en instructables, pero voy a seguir adelante y publicar de t
Cómo hacer cuentas de cabeza de Lego

Cómo hacer cuentas de cabeza de Lego

que necesita,-Cabezas Lego-Sombreros Lego-Super Glue-Taladro-DrillbitPaso 1: Encuentra el sombrero de la derecha de su grano una vez hayas encontrado el sombrero de la derecha para la cabeza derecha, pasar a paso 2Paso 2: Perforar usando un taladro d
Niño tamaño Lego Haunted House

Niño tamaño Lego Haunted House

los niños les encanta Lego, adultos encantan Lego, siempre he amado Legos aunque no he tuve un Lego solo en unos 15 años. El año pasado Lego salió con la serie de Monster Fighters Lego casa embrujada. Ahora ser un gran fan de Halloween y un fan de Le
Traje de hombre LEGO!

Traje de hombre LEGO!

Jugar con LEGO es tiempo para muchos y me decidí a hacer mi traje de estatuilla mini tamaño propio para Halloween. Cuando planifiqué este traje, que estaba haciendo dos para mí y un amigo así que empecé a trabajar en este traje tres meses de anticipa
Gran LEGO MineCraft Creeper Bot

Gran LEGO MineCraft Creeper Bot

Vamos a construir un pie de dos alto Minecraft Creeper robótico alimentado por un LEGO Mindstorms EV3! Si no tienes un kit de EV3 todavía puede construir la enredadera! Esto fue creado originalmente para el Cerebro de monos en Ann Arbor.Esto es un gr
Trajes del película de Lego Lego

Trajes del película de Lego Lego

Amaba la película de Lego y quería recrear algunos de nuestros personajes favoritos. Los trajes tomaron mucho tiempo crear (cerca de 70 horas), pero las reacciones fueron invaluables.Paso 1: fuentes deFuentes:-Cajas cartón-Cinta de embalaje-Espuma de
Acolchados de pluma de Sugru LEGO

Acolchados de pluma de Sugru LEGO

Este fue uno de los proyectos que hemos completado en nuestra noche de construir Sugru LEGO en septiembre. Nuestros programas son atendidos a menudo por las familias, así que necesitábamos una idea fácil y barata para nuestra noche de construir. Los
Yarda de vacaciones de invierno de LEGO

Yarda de vacaciones de invierno de LEGO

Aprende a hacer un festivo Lego yarda.Paso 1: El patioPrimero agarras el piso verde y lo establecido.Paso 2: Las esquinasLuego tienes cuatro 2 x 2 marca de piezas de lego seguro que son colores de la Navidad.Paso 3: Los regalosA continuación tienes u
¡Disfraz de hombre LEGO!

¡Disfraz de hombre LEGO!

Jugar con LEGOs es un pasatiempo para muchos y me decidí a hacer mi propia disfraz de tamaño real de este mini hombre famoso. Cuando se me ocurrió esta idea, decidí hacer dos, uno para mí y otro para un amigo, así empecé a trabajar con tres meses de
LEGO Call of Duty Zombies Charcters

LEGO Call of Duty Zombies Charcters

Este es mi segundo proyecto de Lego espero que disfruten de estos personajes. Estos son los personajes de Black Ops Black Ops 2 voy a hacer no un hoPaso 1: Dr. Edward Richtofen Para Richthofen (el personaje principal de la franquicia de Zombis) básic
Papel maché arcilla Angel Tree Topper

Papel maché arcilla Angel Tree Topper

Dulce que un ángel vela por usted y su árbol de Navidad! Esto es seguro que será un día de fiesta favorito durante años!Materiales necesarios:CelluClayTaza de medirBolsa de plástico de galónAgua calientePapel de ceraPerno de balanceoGuantes de plásti
Cómo tratar con personas molestas.

Cómo tratar con personas molestas.

¿Conoces a alguien que es molesto? ¿Ellos le molestan? ¿No tienes idea cómo lidiar con ellos?Entonces lea este Instructable y te darás cuenta.ADVERTENCIA: No es 100% garantizadoPaso 1: Cuento Este es probablemente el paso más fácil, pero también la m
Reconstrucción de una envolvente de la chimenea

Reconstrucción de una envolvente de la chimenea

este Instructable (Instructanovel) detalla el proceso que atravesó para demoler una repisa existentes de losa y sustituirlo por un mucho más atractivo (al menos a mi ojo) costumbre construido uno.Cuando me mudé a mi casa, una de las cosas que definit
Cómo hacer tu propio casco de espuma integral PU

Cómo hacer tu propio casco de espuma integral PU

este instructable le mostrará cómo hacer el casco perfecto para tu noggin, sin embargo torpe la forma o tamaño. Mascotas loro, cabeza de huevo, Klingons, el melón de ganador del premio... Lo que sea!Lo que se necesita es, por supuesto, PU espuma aisl