1 00:00:00,000 --> 00:00:09,359 buenas tardes vamos con el segundo paso que sería el de crear el código de la caja fuerte 2 00:00:11,119 --> 00:00:20,339 tengo ya el circuito con todas las conexiones y vamos a proceder a empezar con cada una de 3 00:00:20,339 --> 00:00:28,239 las partes del código para no tener que para no hacer el vídeo extenso muy extenso voy a 4 00:00:28,239 --> 00:00:33,159 copiando y pegando cada una de las partes y les voy explicando. Lo primero que tenemos que hacer, 5 00:00:33,159 --> 00:00:40,780 es la primera fase, sería importar las librerías. Estas librerías que vamos a importar serían estas 6 00:00:40,780 --> 00:00:48,759 cuatro. Vimos ya que para utilizar un keypad necesitábamos la librería keypad.h, para utilizar 7 00:00:48,759 --> 00:00:57,460 el LC2 I2C necesitábamos tanto wire.h como liquidcrystal I2C.h y vimos también que para 8 00:00:57,460 --> 00:01:03,679 utilizar un servo necesitamos la librería de servo y esto sería con respecto a importar 9 00:01:07,670 --> 00:01:17,709 las librerías bien esta sería la primera parte del código a continuación necesitaríamos también 10 00:01:17,709 --> 00:01:28,829 crear un objeto el liquid cristal para ello acordaos lo que hacíamos es que el objeto 11 00:01:28,829 --> 00:01:38,010 el líquido cristal I2C, le llamamos, vamos a llamarle LCD, este sería el nombre, y para crearlo necesitábamos crear el constructor con tres parámetros. 12 00:01:38,170 --> 00:01:49,129 Un primer parámetro que sería el parámetro que concretamente aquí no lo hemos puesto, pero el parámetro es la dirección en hexadecimal 0x27, 13 00:01:49,129 --> 00:01:56,510 sería la dirección del componente LCD y 2C, que el que vamos a utilizar es el PCF8574 14 00:01:56,510 --> 00:02:03,129 y que iría de manera correcta con esta dirección, con la dirección 39 15 00:02:03,129 --> 00:02:06,049 y lo que se le pone es la dirección que queremos utilizar 16 00:02:06,049 --> 00:02:09,250 y a continuación las filas y las columnas que tiene ese LCD. 17 00:02:09,509 --> 00:02:12,169 Acordaos que eran 16 columnas y dos filas. 18 00:02:13,069 --> 00:02:17,009 Bien, una vez que hemos creado también un objeto Liquid Crystal y 2C 19 00:02:17,009 --> 00:02:20,590 y pasaríamos ahora a crear una serie de constantes. 20 00:02:21,250 --> 00:02:22,789 ¿Qué constante vamos a tener? 21 00:02:23,250 --> 00:02:27,590 Esas constantes las vamos a utilizar tanto para... son constantes para el servo. 22 00:02:27,889 --> 00:02:31,270 Bueno, aquí vamos a poner las constantes. 23 00:02:33,990 --> 00:02:48,400 Aquí sería crear objeto servo y constantes para el servo. 24 00:02:49,060 --> 00:02:54,379 Bien, explico. Aquí tendríamos el objeto servo. Necesitamos servo para poder luego utilizar el servo. 25 00:02:54,819 --> 00:02:59,659 Ya lo vimos también en vídeos anteriores. Y luego tenemos tres constantes de tipo entero. 26 00:03:00,099 --> 00:03:03,800 Las tres constantes de tipo entero son servo pin, que va a alojar el pin del servo. 27 00:03:04,000 --> 00:03:07,680 Acordaos que lo hemos puesto el pin, es el 9, la señal del servo. 28 00:03:08,060 --> 00:03:11,300 Con lo cual lo vamos a alojar dentro de una constante que se llama servo-pin. 29 00:03:11,580 --> 00:03:15,860 Y luego vamos a tener un ángulo cerrado, que sería cuando está en 0º, como está ahora, 30 00:03:15,860 --> 00:03:20,939 y un ángulo abierto, que sería cuando está en 90, que es cuando se abre la caja fuerte. 31 00:03:21,060 --> 00:03:26,939 Y lo vamos a concretar, tanto el 0 grados como el 90, lo vamos a meter dentro de dos constantes enteras, 32 00:03:27,020 --> 00:03:29,080 un ángulo cerrado y otro ángulo abierto. 33 00:03:29,860 --> 00:03:32,560 Y con esto ya tendríamos también las constantes. 34 00:03:32,939 --> 00:03:36,699 Ahora necesitaríamos crear las constantes para el K-pad. 35 00:03:37,860 --> 00:03:41,840 Vamos a las constantes para el K-pad, que serían estas dos. 36 00:03:41,840 --> 00:04:04,680 Necesitamos una que nos represente el número de filas y otra que nos represente el número de columnas. Acordaos que este keypad es 4x4, entonces tenemos 4 filas por 4 columnas. Entonces filas será 4 y columnas 4. También son constantes porque no vamos a necesitar que estos valores varíen a lo largo del programa. 37 00:04:04,680 --> 00:04:25,420 Bien, una vez que ya tenemos esto, a continuación acordaos del keypad. El keypad necesitábamos crear una matriz de filas y columnas. Esa matriz, que sería teclas, va a constar de cuatro filas y de cuatro columnas. 38 00:04:25,420 --> 00:04:29,860 ¿Cuál van a ser? Pues correctamente el orden en el que aparecen aquí en la matriz 39 00:04:29,860 --> 00:04:32,139 Veis que esto es una matriz de 4x4 40 00:04:32,139 --> 00:04:35,139 Entonces lo ponemos y la creamos en ese mismo orden 41 00:04:35,139 --> 00:04:37,779 La primera fila sería 1, 2, 3, A 42 00:04:37,779 --> 00:04:39,740 La segunda 4, 5, 6, B 43 00:04:39,740 --> 00:04:41,720 La tercera 7, 8, 9, C 44 00:04:41,720 --> 00:04:47,420 Y la cuarta, las últimas teclas que aparecen en el keypad 45 00:04:47,420 --> 00:04:53,220 Esto crearía una matriz de tipo char en el de 4x4 46 00:04:53,220 --> 00:04:59,819 ¿Veis? Aquí ha añadido o ha puesto las dos constantes que hemos creado anteriormente para crear la matriz. 47 00:05:00,019 --> 00:05:01,899 Esto sería un 4 y esto sería otro 4. 48 00:05:02,740 --> 00:05:06,240 Bien, esta matriz será necesaria para poder luego utilizar el keypad. 49 00:05:06,779 --> 00:05:14,060 ¿Qué nos quedaba también? Ahora nos quedan los pines que van alojados o que representan a las cuatro filas, 50 00:05:14,240 --> 00:05:20,459 que serían el 13, 12, 11 y 10, y a las columnas, que son el 7, el 6, el 5 y el 4. 51 00:05:20,459 --> 00:05:49,360 Y eso lo tenemos que reflejar también en dos arrays. Esos dos arrays que voy a representar a continuación serían estos que aparecen aquí. El primero sería un array de tipo byte en el que estaría formado por un valor de 4, con lo cual tiene 4 elementos, o sea que ha puesto aquí la constante filas para representar un array de 4 elementos que serían los 4 pines de las filas. 52 00:05:49,360 --> 00:06:01,220 Y luego aquí ha puesto otro array de cuatro elementos, pero con la constante cols, para indicar los cuatro pines de las columnas. 53 00:06:02,040 --> 00:06:08,360 Bien, ya tenemos en el keypad tanto las dos constantes indicando cuántas filas y cuántas columnas son, 54 00:06:08,959 --> 00:06:17,060 la matriz de cuatro filas y cuatro columnas, que es esta matriz, todas estas caracteres, en ese mismo orden, 55 00:06:17,060 --> 00:06:24,060 Y tenemos también los dos arrays de cuatro elementos cada uno que indican los pines tanto de las filas como los de las columnas. 56 00:06:25,420 --> 00:06:29,540 ¿Y ya qué nos quedaría? Ahora nos quedaría ahora sí crear el objeto keypad. 57 00:06:29,819 --> 00:06:36,379 Lo mismo que hemos hecho arriba, que hemos creado el objeto servo, hemos creado el objeto líquido cristal, 58 00:06:36,860 --> 00:06:46,540 ahora tenemos que crear un objeto de tipo también keypad, porque sin él no podremos utilizar dicho componente. 59 00:06:47,120 --> 00:06:50,459 Creamos dicho objeto y aquí lo veis, es un objeto de tipo keypad. 60 00:06:50,779 --> 00:06:54,860 Keypad sería la librería de la que hemos importado al principio. 61 00:06:55,519 --> 00:07:01,519 El objeto le hemos llamado keypad y, acordaos, el keypad se generaba como? 62 00:07:01,660 --> 00:07:05,779 Con un constructor que tenía cinco elementos. 63 00:07:05,920 --> 00:07:11,639 El primero era una función que era makeKeepMap, metiendo, introduciendo, 64 00:07:11,639 --> 00:07:39,680 O lo que está diciendo es que esta función lo que hace es un map. La función map lo que va a hacer es que va a mapear las teclas, o sea, la matriz bidimensional de 4x4, a que la va a mapear con los pines de las filas, que son estos cuatro, con los pines de las columnas, indicando cuántas filas hay y cuántas columnas hay. 65 00:07:39,680 --> 00:07:49,759 Y esos serían los cinco elementos que necesita el objeto Keypad para crearse y poder manejar este componente. 66 00:07:50,319 --> 00:07:59,180 Esto lo vimos en el vídeo anterior y con esto ya tendríamos todos los elementos que aparecen al principio del programa, 67 00:07:59,180 --> 00:08:10,160 tanto la importación de librerías, las constantes que vamos a necesitar y la creación de los tres objetos, puesto que tenemos los tres componentes aquí en el escenario. 68 00:08:11,040 --> 00:08:21,199 Bien, una vez que tenemos eso, nos quedaría, aún así todavía, crear una constante y una variable de tipo string. 69 00:08:22,000 --> 00:08:26,920 Estas lo que hacen es que en la constante vamos a almacenar el valor de la clave, 70 00:08:27,079 --> 00:08:29,819 en esa constante la vamos a llamar un base de tipo string, 71 00:08:30,220 --> 00:08:36,759 y le vamos a almacenar el 1, 2, 3, 4, que es el valor de la contraseña para poder abrir la caja fuerte. 72 00:08:37,440 --> 00:08:41,159 Y luego creamos una variable, porque esta sí va a variar, esta no sería constante, 73 00:08:41,740 --> 00:08:47,820 en el que va a ser la entrada, que vamos a introducir nosotros, y que en un principio está vacía. 74 00:08:47,820 --> 00:08:51,399 una vez que ya tenemos todos estos componentes 75 00:08:51,399 --> 00:08:56,340 vamos a poner el voice setup 76 00:08:56,340 --> 00:08:59,539 antes del voice setup 77 00:08:59,539 --> 00:09:02,000 como dentro del voice setup vamos a llamar a una función 78 00:09:02,000 --> 00:09:04,720 necesitaremos crear una función 79 00:09:04,720 --> 00:09:06,960 acordaos cómo se crea una función 80 00:09:06,960 --> 00:09:12,460 la ponemos fuera del voice loop 81 00:09:12,460 --> 00:09:13,279 y del voice setup 82 00:09:13,279 --> 00:09:16,919 y se crearía siempre 83 00:09:16,919 --> 00:09:19,299 con un valor a devolver 84 00:09:19,299 --> 00:09:21,240 y avoid si no devuelve nada 85 00:09:21,240 --> 00:09:23,679 el nombre de la función y luego entre paréntesis 86 00:09:23,679 --> 00:09:25,639 con parámetros o sin ellos 87 00:09:25,639 --> 00:09:27,480 en función de lo que necesitemos 88 00:09:27,480 --> 00:09:29,519 para crear la función, esta sería sin parámetros 89 00:09:29,519 --> 00:09:31,080 no necesita parámetros para ser llamada 90 00:09:31,080 --> 00:09:33,500 y una llave de apertura y una llave 91 00:09:33,500 --> 00:09:34,779 de cierre y dentro 92 00:09:34,779 --> 00:09:37,039 cada vez que llame a la función 93 00:09:37,039 --> 00:09:39,159 en nuestro código, en el void loop 94 00:09:39,159 --> 00:09:41,559 o en el void setup, pero generalmente 95 00:09:41,559 --> 00:09:42,980 en el void loop cada vez que pongamos 96 00:09:42,980 --> 00:09:44,159 mostrar intro 97 00:09:44,159 --> 00:09:47,820 se ejecutará este, esta función o método 98 00:09:47,820 --> 00:09:50,740 ¿veis? lo único que hace es que en el LCD 99 00:09:50,740 --> 00:09:52,720 con el objeto LCD que creamos arriba 100 00:09:52,720 --> 00:09:55,059 está creando, primero limpiando la pantalla 101 00:09:55,059 --> 00:09:58,919 luego se posiciona en el cursor 102 00:09:58,919 --> 00:10:01,159 concretamente en el 00, acordaos 103 00:10:01,159 --> 00:10:02,860 el primer rectángulo que aparece aquí 104 00:10:02,860 --> 00:10:05,100 del propio esquema 105 00:10:05,100 --> 00:10:06,980 este sería la posición 00 106 00:10:06,980 --> 00:10:08,460 para que empiece a escribir desde ahí 107 00:10:08,460 --> 00:10:10,700 escribe, introduce clave 108 00:10:10,700 --> 00:10:13,480 y lo escribirá en la primera línea 109 00:10:13,480 --> 00:10:21,519 luego coloca el cursor donde en la columna 0 pero en la fila 1 recordar que siempre se empezaban en 110 00:10:21,519 --> 00:10:28,179 la numeración desde el 0 con lo cual está la columna 0 1 2 3 etcétera y esta sería la fila 111 00:10:28,179 --> 00:10:33,980 0 y ésta sale a fila 1 por lo cuanto si es la columna 0 fila 1 estaría en este rectángulo de 112 00:10:33,980 --> 00:10:38,980 aquí donde escribiría el que escribiría estos cuatro guiones que son los va a representar 113 00:10:38,980 --> 00:10:43,980 donde vamos a introducir los números para poner la contraseña. 114 00:10:44,960 --> 00:10:51,799 A continuación, vuelve a poner el cursor en la posición 01 y ya estaría. 115 00:10:51,919 --> 00:10:54,700 Eso es lo que haría este método cada vez que se le llama. 116 00:10:55,039 --> 00:11:01,179 Lógicamente, si es mostrar intro, solo se aparecerá al principio, cuando se enciende la aplicación, 117 00:11:01,679 --> 00:11:03,840 y lo llamará al principio. 118 00:11:04,940 --> 00:11:08,799 ¿Dónde estará? Si lo va a llamar al principio y solo lo va a llamar una sola vez, 119 00:11:08,799 --> 00:11:14,580 pues lo lógico es que lo metamos en vez de dentro del void loop, la llamada, lo metamos dentro del void setup. 120 00:11:16,620 --> 00:11:44,700 Bien, ya que tenemos aquí, esto es una función, función que se llama una vez desde el setup para mostrar la información de inicio. 121 00:11:47,730 --> 00:12:04,230 Bien, ya tenemos esta función y ahora lo que vamos a añadir es el, vamos a añadir el setup. El setup, vamos a dejarlo con un espacio y la introducimos aquí. Bien, este sería lo que aparecería en el setup. 122 00:12:04,230 --> 00:12:24,730 Veis que al final del setup realiza una serie de configuraciones y al final de setup llama a la función mostrar dentro. Lo va a hacer solo una vez puesto que este método solo se ejecuta una vez. Llamará aquí, actualizará el LCD y pondrá introduce clave y cuatro líneas y luego posteriormente se irá al void loop. 123 00:12:24,730 --> 00:12:53,970 ¿Qué hace el setup? Pues inicializa el monitor porque además de sacar estos valores en el LCD van a salir en el monitor y luego ya todos los parámetros son de inicialización del LCD, lo arranca, le pone la luz del mismo, del LED, limpia el LCD, pone el cursor en el columna 0, fila 0, imprime LCD OK, que funciona, 124 00:12:54,730 --> 00:13:02,470 Coloca luego el cursor hacia la fila 1 y columna 0 y le pone arrancando. 125 00:13:03,370 --> 00:13:05,289 Esto es lo primero que aparecerá en el LCD. 126 00:13:05,850 --> 00:13:09,750 Lo primero que aparecerá es que el LCD funciona y que está arrancando. 127 00:13:10,250 --> 00:13:13,269 A continuación también actualiza o configura el servo. 128 00:13:13,269 --> 00:13:19,169 Primero le une al servo cuál va a ser su pin de señal, que es correctamente el 9, 129 00:13:19,169 --> 00:13:24,870 que lo habíamos puesto con la constante servo pin. 130 00:13:25,029 --> 00:13:28,490 Si nos vamos aquí, habíamos puesto servo pin como el valor 9, 131 00:13:29,090 --> 00:13:36,610 con lo cual está uniendo el servo 9, o sea, el pin digital 9 lo está uniendo al servo, 132 00:13:36,610 --> 00:13:40,070 que lógicamente se corresponde, puesto que aquí lo hemos puesto. 133 00:13:40,629 --> 00:13:43,429 Y luego escribe en el servo un ángulo cerrado. 134 00:13:43,590 --> 00:13:47,169 El ángulo cerrado, acordaos que era 0 grados, que se ponga en 0 grados. 135 00:13:47,169 --> 00:14:19,210 Y después llama a la función mostrar intro, que sería cuando aparece introduce clave. Bien, esto sería lo que haría el, esto sería un parámetro de configuración y aquí vamos a poner inicialización LCD, inicialización servo. 136 00:14:19,210 --> 00:14:31,509 Bien, una vez que ya lo tenemos, vamos a pasar a continuación a otra función o método que también hemos creado aquí, que va a ser el llamado voidAbrir. 137 00:14:37,830 --> 00:14:53,690 ¿Veis? Cada vez que creamos una función o método es para aglutinar un montón de líneas que queremos que, con una llamada desde el loop o desde el setup, se ejecuten, hagan una función que nosotros queramos que haga y vuelvan de nuevo a nuestro propio programa. 138 00:14:53,690 --> 00:14:58,549 esta sería otra función que sería void abrir en el que el nombre es abrir no tiene parámetros de 139 00:14:58,549 --> 00:15:05,809 entrada y lo que devuelve es un valor void o sea no devuelve ningún valor también aquí lo que hace 140 00:15:05,809 --> 00:15:17,570 es una serie de configuración del lcd bueno lo único que hace no es que lo configure sino que 141 00:15:17,570 --> 00:15:24,649 realmente lo que hace es que limpia el cursor le ponen el 00 pone acceso ok y le dice abriendo o 142 00:15:24,649 --> 00:15:30,690 sea que estamos viendo que tiene tres partes el lcd cuando primero cuando se arranca está 143 00:15:30,690 --> 00:15:37,809 diciendo que el lcd con el setup que está ok y que está arrancando también el servo se pone en 144 00:15:37,809 --> 00:15:44,570 posición de 0 grados después a continuación pasamos a mostrar intro y cuando le damos a 145 00:15:44,570 --> 00:15:49,190 mostrar y en todo lo que nos aparece se introduce clave y las cuatro líneas y 146 00:15:49,190 --> 00:15:56,570 luego ya tenemos voy a abrir este método sólo se va a llamar 147 00:15:57,149 --> 00:16:02,210 y todo se le llamará 148 00:16:02,210 --> 00:16:06,889 cuando coincida 149 00:16:07,070 --> 00:16:12,690 clave que hemos añadido 150 00:16:12,690 --> 00:16:19,159 con la clave real cuando coincida lo que hará es que 151 00:16:19,159 --> 00:16:26,379 abrirá el la caja fuerte por tanto abrirá