1 00:00:04,400 --> 00:00:31,160 Bien, buenos días a todos. Os presento la última de las prácticas, la práctica final que vamos a desarrollar en este curso y consiste en el desarrollo de una pequeña práctica que simularía una bola de cristal, es decir, simularía el funcionamiento de esas típicos jueguecitos en los que haces una pregunta y en una pantalla aparece la respuesta de esa pregunta. 2 00:00:31,160 --> 00:00:42,320 Obviamente respuesta aleatoria, que no tiene nada que ver con la realidad, pero bueno, en sí en la práctica es interesante porque vamos a ver varios aspectos que interesa abarcar. 3 00:00:42,439 --> 00:00:47,640 En primer lugar, el control de la pantalla LCD y el programa propiamente dicho. 4 00:00:47,840 --> 00:00:59,100 Entonces, para poder realizar esta práctica tenéis este documento en el aula virtual y en ese documento se describe todo lo necesario para poder hacerlo. 5 00:00:59,100 --> 00:01:11,780 Lo vais a tener que hacer utilizando el simulador TKC, publicando el proyecto para que yo pueda después calificarlo directamente sobre vuestro enlace que me dejéis en el aula virtual. 6 00:01:12,280 --> 00:01:18,579 Bien, ¿y cómo funciona? Bueno, por lo primero lo que tenemos que centrarnos es en ver un poquito el circuito. 7 00:01:18,579 --> 00:01:25,040 Bueno, en primer lugar no os asustéis porque efectivamente tú ves esto y dices aquí hay un lío de cables, esto está fatal. 8 00:01:25,040 --> 00:01:33,439 Bueno, ahora os voy a enseñar otra pequeña conexión mucho más fácil, esto está más desordenado, pero en realidad es mucho más fácil de lo que parece aquí. 9 00:01:33,939 --> 00:01:40,939 De todas maneras, evidentemente, pues haciendo un zoom puedes acercarte y ver exactamente cómo son las conexiones, insisto, ahora voy a detallar todas ellas, 10 00:01:41,359 --> 00:01:47,920 pero sobre todo lo que más me interesa es que aquí tenéis, en la parte esta de aquí, el esquema electrónico de conexiones, 11 00:01:47,920 --> 00:01:50,439 que esta si realmente detalla claramente 12 00:01:50,439 --> 00:01:52,439 donde van cada uno de los pines 13 00:01:52,439 --> 00:01:53,680 de la pantalla LCD 14 00:01:53,680 --> 00:01:56,700 al arduino y a nuestro sensor 15 00:01:56,700 --> 00:01:58,159 por cierto que 16 00:01:58,159 --> 00:02:00,640 en el TKC no se si hay un sensor 17 00:02:00,640 --> 00:02:02,500 de inclinación, da igual ponéis cualquier 18 00:02:02,500 --> 00:02:04,219 otro elemento, un simple pulsador 19 00:02:04,219 --> 00:02:05,239 o un sensor 20 00:02:05,239 --> 00:02:07,340 o cualquier otro sensor me da igual 21 00:02:07,340 --> 00:02:09,120 un simple pulsador es suficiente 22 00:02:09,120 --> 00:02:14,580 bueno 23 00:02:14,580 --> 00:02:18,060 como funcionaría esta práctica 24 00:02:18,060 --> 00:02:19,740 pues evidentemente cuando tu le da 25 00:02:19,740 --> 00:02:23,879 golpeas al sensor de iluminación o le das al pulsador, una vez que hayas hecho una pregunta 26 00:02:23,879 --> 00:02:27,780 pues aparecerá aquí la respuesta correspondiente. Entonces, lo más importante es 27 00:02:27,780 --> 00:02:31,580 entender cómo es la conexión de la pantalla LCD directamente 28 00:02:31,580 --> 00:02:35,719 a Arduino sin la utilización de una comunicación I2T. Esto que 29 00:02:35,719 --> 00:02:39,560 significa que la comunicación no la podemos hacer vía serie con otro chip 30 00:02:39,560 --> 00:02:43,539 que suelen ir incorporados en estas placas, sino que tenemos que hacerlo a través 31 00:02:43,539 --> 00:02:46,780 de un bus de datos, es decir, de cuatro pines de conexión 32 00:02:46,780 --> 00:02:48,879 De datos de la pantalla LCD 33 00:02:48,879 --> 00:02:51,580 Directamente a la tarjeta Arduino 34 00:02:51,580 --> 00:02:53,879 Y por eso hay que realizar el resto de las configuraciones 35 00:02:53,879 --> 00:02:55,860 Que normalmente con una comunicación I2C 36 00:02:55,860 --> 00:02:57,460 El propio chip que viene internamente 37 00:02:57,460 --> 00:02:59,719 Dentro de la LCD 38 00:02:59,719 --> 00:03:01,900 Pues ya lleva todas estas conexiones hechas 39 00:03:01,900 --> 00:03:02,919 Bueno, no pasa nada 40 00:03:02,919 --> 00:03:04,340 Así repasamos las conexiones 41 00:03:04,340 --> 00:03:06,139 Y así os fijáis un poquito como va todo 42 00:03:06,139 --> 00:03:09,520 Y una vez que hagáis las conexiones 43 00:03:09,520 --> 00:03:10,979 Pues aquí tendremos el programa 44 00:03:10,979 --> 00:03:12,280 Que vamos a ver ahora más tarde 45 00:03:12,280 --> 00:03:15,120 Que es muy básico porque en realidad todo esto es reconfiguración 46 00:03:15,120 --> 00:03:17,319 que yo voy a dar un programa más sencillito para que lo entendáis 47 00:03:17,319 --> 00:03:20,740 y luego realmente aquí tendríamos todas las respuestas que nos podría dar 48 00:03:20,740 --> 00:03:22,580 aquí hay 8 pero podéis poner las que queráis 49 00:03:22,580 --> 00:03:29,759 y de hecho se valorará especialmente las respuestas más originales que podáis incluir 50 00:03:29,759 --> 00:03:32,800 no solamente 8, si queréis incluir alguna más diferente 51 00:03:32,800 --> 00:03:35,800 10 respuestas a cada cual más original 52 00:03:35,800 --> 00:03:39,699 pues perfecto, siempre tened en cuenta que debe dar una respuesta a una pregunta concreta 53 00:03:39,699 --> 00:03:43,659 y como digo aquí está perfectamente explicado el programa 54 00:03:43,659 --> 00:03:45,060 y que lo vamos a ver ahora más despacito 55 00:03:45,060 --> 00:04:03,979 Y como os decía, aquí tenéis un poco la idea de añadir para personalizar, digamos que sería un requisito obligatorio, hay que personalizar la práctica incluyendo algún elemento, alguna respuesta más personal de las que vienen o más original de las que vienen de esa tarjeta aquí. 56 00:04:03,979 --> 00:04:11,080 Bueno, entonces la duda que todos tendréis es cómo Narices se conecta a todo esto, si aquí prácticamente no hay Dios que se entere de nada. 57 00:04:11,439 --> 00:04:25,319 Bueno, en realidad es muy fácil, lo vais a ver porque tengo aquí directamente, como veis aquí, una configuración ya muy básica hecha de una pantalla LCD con Arduino y por supuesto con su código a lo más simple posible. 58 00:04:25,319 --> 00:04:27,439 entonces vamos a analizar un poquito todo 59 00:04:27,439 --> 00:04:32,560 en primer lugar, la pantalla LCD tiene todas estas configuraciones 60 00:04:32,560 --> 00:04:35,459 y todo esto que veis aquí, voy a hacerlo un poco más grande 61 00:04:35,459 --> 00:04:42,759 todo esto que veis aquí, de 1, de 2, de 3, de 4, 5, 6, 7 y 8 62 00:04:42,759 --> 00:04:49,459 esto de aquí sería el bus de comunicaciones entre cualquier dispositivo como Arduino y la pantalla LCD 63 00:04:49,459 --> 00:04:54,379 pero en realidad no solo nos interesa estos 4 porque podemos hacer la comunicación directamente con estos 4 pines 64 00:04:54,379 --> 00:05:00,279 por lo tanto estos cuatro pines es la comunicación que nos vamos a tener con el Arduino 65 00:05:00,279 --> 00:05:09,839 y el resto en realidad son pines de configuración o pines de alimentación de la propia LCD 66 00:05:09,839 --> 00:05:17,519 tenemos por ejemplo estos dos pines que simplemente es para configurar la retroiluminación que tiene la LCD 67 00:05:17,519 --> 00:05:22,600 de hecho si nosotros quitáramos estos dos elementos pues no funcionaría porque no se visualizaría 68 00:05:22,600 --> 00:05:24,620 o se visualizaría muy pequeñito, mejor dicho 69 00:05:24,620 --> 00:05:27,199 y luego tenemos, perdón, muy pequeñito 70 00:05:27,199 --> 00:05:30,040 con una luz muy baja y prácticamente no se vería 71 00:05:30,040 --> 00:05:32,500 luego tenemos este pin de aquí, Enable 72 00:05:32,500 --> 00:05:34,360 y este pin de aquí, RS 73 00:05:34,360 --> 00:05:38,939 que son también dos pines de configuración muy importantes 74 00:05:38,939 --> 00:05:40,920 estos dos junto con estos cuatro 75 00:05:40,920 --> 00:05:41,980 ahora lo vamos a ver en el programa 76 00:05:41,980 --> 00:05:43,720 y luego todo esto que veis aquí 77 00:05:43,720 --> 00:05:46,339 pues en realidad es la alimentación propia del propio chip 78 00:05:46,339 --> 00:05:47,439 y de la propia LCD 79 00:05:47,439 --> 00:05:49,379 V0 es la entrada 80 00:05:49,379 --> 00:05:51,420 si quisiéramos regular la intensidad 81 00:05:51,420 --> 00:06:01,420 en la que aparece en las letras y y r w sería lectura y escritura que en este caso no lo 82 00:06:01,420 --> 00:06:05,519 necesitamos bloquear la lectura de la escritura con lo cual lo ponemos directamente a base y ya 83 00:06:05,519 --> 00:06:09,560 está este la v 0 en realidad lo hemos puesto a masa pero podríamos ponerlo a través de un 84 00:06:09,560 --> 00:06:13,560 potenciómetro irregular como digo la intensidad pero en este caso como queremos que brille al 85 00:06:13,560 --> 00:06:18,300 máximo por directamente negativo y ya está de acuerdo y ahora vamos a ver el programa que es 86 00:06:18,300 --> 00:06:41,800 En primer lugar, tenemos que utilizar la librería Liquid Crystal. Es una librería específica para el control de pantallas LCD y en este caso, esta propia librería necesita que defines primeramente los pines de configuración, es decir, los pines de conexión o de comunicación entre Arduino y la pantalla LCD. 87 00:06:41,800 --> 00:06:43,800 y aquí como veis los hemos conectado 88 00:06:43,800 --> 00:06:51,339 aquí los hemos conectado directamente desde el D7, D6, D5 y D4 89 00:06:51,339 --> 00:06:55,540 los hemos conectado, veis, a los pines desde el 2 hasta el 5 90 00:06:55,540 --> 00:06:58,519 bueno, pues en esta configuración Liquid Crystal LCD 91 00:06:58,519 --> 00:07:02,319 ponemos entre paréntesis los cuatro últimos números 92 00:07:02,319 --> 00:07:04,639 corresponderían a estos cuatro datos que hemos visto 93 00:07:04,639 --> 00:07:06,839 en el pin 2, 3, 4 y 5 94 00:07:06,839 --> 00:07:08,560 en el pin 2, 3, 4 y 5 95 00:07:08,560 --> 00:07:12,939 Tenemos esta configuración de estos cuatro pines 96 00:07:12,939 --> 00:07:16,579 Y los dos primeros, 7 y 6, en realidad son estos dos de aquí 97 00:07:16,579 --> 00:07:19,800 Que corresponden con estos dos pines que hemos dicho 98 00:07:19,800 --> 00:07:22,759 Enable y Reset, R, S y E 99 00:07:22,759 --> 00:07:25,759 Que son los que también se necesitan para poder configurar 100 00:07:25,759 --> 00:07:27,740 Y poder enviar los datos 101 00:07:27,740 --> 00:07:29,939 Y limpiar la pantalla en caso de necesario 102 00:07:29,939 --> 00:07:34,160 Y habilitar, Enable habilita la pantalla para poder comunicarnos con ella 103 00:07:34,160 --> 00:07:43,740 Es decir, que esta instrucción lo que hace es permitir la escritura sobre la pantalla LCD con ayuda de estos cuatro pines. 104 00:07:44,680 --> 00:07:46,759 Y luego ya el programa principal es muy sencillo. 105 00:07:47,139 --> 00:07:51,560 Tenemos que indicar en el VoiceTab la configuración, es decir, qué tipo de LCD tenemos. 106 00:07:51,720 --> 00:07:55,199 En este caso es de 16 columnas y dos filas. 107 00:07:55,360 --> 00:08:02,060 Aquí tenemos que indicarlo de esta manera, con LCD.begin y entre paréntesis 16 y 2. 108 00:08:02,060 --> 00:08:20,579 Y luego en el programa este que nos va a permitir escribir cosas, pues en realidad en la instrucción que permite escribirlo, primero tienes que decir dónde quieres empezar a escribir, en este caso con la instrucción lcd.secursor y entre paréntesis dónde quieres empezar, siempre se empieza aquí indicando en este caso fila y columna. 109 00:08:20,579 --> 00:08:25,199 bueno pues en la primera fila que sería la fila número cero empieza por cero y 110 00:08:25,199 --> 00:08:28,079 la columna también empezaría por cero si quiero que empecé a escribir aquí pues 111 00:08:28,079 --> 00:08:33,779 entonces esto sería le puntos el curso y entre partidos cero con cero vale y de 112 00:08:33,779 --> 00:08:38,480 esta manera empezaría aquí a escribir y luego ya escribo el texto en este caso 113 00:08:38,480 --> 00:08:42,720 pues con la instrucción lcd punto print y entre paréntesis indicar lo que 114 00:08:42,720 --> 00:08:47,580 quieras casa escriban y luego esto sería esto lo he hecho para la primera para la 115 00:08:47,580 --> 00:08:52,259 primera fila la fila cero para la fila número uno o segunda fila según como 116 00:08:52,259 --> 00:08:55,440 contemos pues entonces tendríamos que colocar otra vez los mismos y vamos a 117 00:08:55,440 --> 00:09:00,480 decirle que escribimos en la segunda fila vale en la fila número uno 118 00:09:00,480 --> 00:09:04,379 empezando a contar por cero y luego aquí escribimos el texto correspondiente de 119 00:09:04,379 --> 00:09:11,440 manera que si ejecutamos ahora esto pues aparece efectivamente el mensajito que 120 00:09:11,440 --> 00:09:15,360 hemos escrito entre paréntesis vale y que en vuestro caso pues van a ser las 121 00:09:15,360 --> 00:09:17,259 respuestas a las 122 00:09:17,259 --> 00:09:19,620 preguntas que vas a hacer de manera aleatoria 123 00:09:19,620 --> 00:09:20,899 bueno 124 00:09:20,899 --> 00:09:23,500 como veis, lo que os decía 125 00:09:23,500 --> 00:09:24,740 estos dos 126 00:09:24,740 --> 00:09:27,539 pines son realmente 127 00:09:27,539 --> 00:09:28,639 de la propia 128 00:09:28,639 --> 00:09:31,240 retroiluminación de la LCD 129 00:09:31,240 --> 00:09:33,320 si nosotros la quitamos 130 00:09:33,320 --> 00:09:35,720 veremos que efectivamente 131 00:09:35,720 --> 00:09:37,720 aparece, no sé si se apreciará 132 00:09:37,720 --> 00:09:39,480 en la grabación, pero aparece con 133 00:09:39,480 --> 00:09:41,539 muy poca luz porque no tiene la retroiluminación 134 00:09:42,279 --> 00:09:44,879 con esto también podemos jugar 135 00:09:44,879 --> 00:09:55,559 si quisiéramos con algún programa para que brillase más o menos, pero bueno, esto digamos que sería la forma de controlar con Arduino directamente una pantalla LCD a lo bestia, 136 00:09:55,620 --> 00:10:04,100 es decir, con cuatro datos, con cuatro pines de comunicaciones. Bueno, ¿y cómo sería el programa entonces que nos permite ejecutar esta pequeña aplicación? 137 00:10:04,220 --> 00:10:13,899 Pues vamos a ella. Esta aplicación, lo mismo que hemos dicho antes, incluimos la librería Liquid Crystal y en este caso, bueno, pues para el montaje anterior tiene esta configuración. 138 00:10:13,899 --> 00:10:16,559 si queréis seguir directamente este pdf 139 00:10:16,559 --> 00:10:18,500 pues tenéis que seguir con estos pines 140 00:10:18,500 --> 00:10:20,399 y de hecho si nosotros nos vamos aquí 141 00:10:20,399 --> 00:10:23,100 efectivamente con lo que hemos visto anteriormente 142 00:10:23,100 --> 00:10:24,899 tendríamos estos pines 143 00:10:24,899 --> 00:10:26,340 de aquí, estos cuatro de aquí 144 00:10:26,340 --> 00:10:27,659 que serían los cuatro de datos 145 00:10:27,659 --> 00:10:31,080 tenemos estos que veis aquí que son los de configuración 146 00:10:31,080 --> 00:10:32,679 y los pines digamos de alimentación 147 00:10:32,679 --> 00:10:34,679 de la LCD 148 00:10:35,399 --> 00:10:36,860 y estos dos de aquí 149 00:10:36,860 --> 00:10:38,940 el amarillo y el naranja que serían los que hemos visto 150 00:10:38,940 --> 00:10:40,620 antes de enable y rs 151 00:10:40,620 --> 00:10:43,159 y los demás son de alimentación 152 00:10:43,159 --> 00:10:45,159 como comentaba antes, bueno aquí ha incluido 153 00:10:45,159 --> 00:10:47,080 un potenciómetro en la entrada V0 154 00:10:47,080 --> 00:10:49,120 pero es porque si quieres regular el 155 00:10:49,120 --> 00:10:51,039 brillo de la pantalla, en este caso 156 00:10:51,039 --> 00:10:52,740 yo directamente lo he puesto a negativo 157 00:10:52,740 --> 00:10:54,840 y luego el sensor 158 00:10:54,840 --> 00:10:57,019 pues está puesto aquí 159 00:10:57,019 --> 00:10:59,080 perdón, el elemento 160 00:10:59,080 --> 00:11:01,120 que nos da la respuesta, que en este caso es un sensor 161 00:11:01,120 --> 00:11:02,320 de inclinación, lo 162 00:11:02,320 --> 00:11:04,980 ha conectado a través de 163 00:11:04,980 --> 00:11:07,399 dos pillos de alimentación 164 00:11:07,399 --> 00:11:09,259 positivo y negativo 165 00:11:09,259 --> 00:11:10,919 a través de una resistencia y digamos que 166 00:11:10,919 --> 00:11:12,820 cuando nosotros golpeamos el sensor este 167 00:11:12,820 --> 00:11:14,899 de inclinación 168 00:11:14,899 --> 00:11:17,000 pues entramos en el 169 00:11:17,000 --> 00:11:18,960 pin número 6 para indicar 170 00:11:18,960 --> 00:11:20,519 que queremos que nos dé la respuesta 171 00:11:20,519 --> 00:11:22,740 vosotros podéis poner perfectamente un pulsador 172 00:11:22,740 --> 00:11:24,799 y ya está, de acuerdo 173 00:11:24,799 --> 00:11:26,200 y vamos a ver el programa 174 00:11:26,200 --> 00:11:28,960 el programa es muy 175 00:11:28,960 --> 00:11:30,639 básico, ya digo, muy sencillo 176 00:11:30,639 --> 00:11:32,759 configuración, todo esto es configuración 177 00:11:32,759 --> 00:11:34,639 y aquí lo único que establecemos es una serie de variables 178 00:11:34,639 --> 00:11:36,659 estado del sensor, estado 179 00:11:36,659 --> 00:11:38,860 previo del sensor y finalmente 180 00:11:38,860 --> 00:11:40,700 la variable contestar 181 00:11:40,700 --> 00:11:51,340 para que nos dé la respuesta. En el pin número 6 establecemos el estado del sensor y aquí indicamos que se trata 182 00:11:51,340 --> 00:12:03,179 de una pantalla de CD16-2, configuramos ese pin número 6 como entrada y directamente imprimimos ya la frase 183 00:12:03,179 --> 00:12:09,700 Pregúntame para que la bola de cristal, también lo ponemos aquí en la segunda fila, para que aparezca este mensaje. 184 00:12:09,700 --> 00:12:19,559 Y ahora simplemente en el programa principal, en el del bucle, preguntamos si el pin del sensor ha sido activado. 185 00:12:19,899 --> 00:12:25,340 Si en este caso el sensor ha sido activado, pues en este caso empezamos a contestar. 186 00:12:26,480 --> 00:12:29,259 Y aquí tenéis todas las posibles respuestas. 187 00:12:29,399 --> 00:12:34,279 Bueno, lo primero limpiamos, aquí no lo hemos visto antes en el programa anterior, 188 00:12:34,279 --> 00:12:39,500 pero aquí aparece lcd.clear, esta función lo que nos permite es limpiar la pantalla. 189 00:12:39,700 --> 00:12:43,360 y aparecerá en este caso un nuevo mensaje que dice 190 00:12:43,360 --> 00:12:44,919 la bola dice y te da la respuesta 191 00:12:44,919 --> 00:12:50,179 dependiendo del número aleatorio entre 0 y 8 192 00:12:50,179 --> 00:12:52,440 y para ello utilizamos la función switch 193 00:12:52,440 --> 00:12:55,840 y las diferentes opciones con case 0, case 1, case 2 194 00:12:55,840 --> 00:12:57,759 la función switch y entre paréntesis 195 00:12:57,759 --> 00:13:01,639 indicando la variable que hemos definido 196 00:13:01,639 --> 00:13:04,659 para que se active cada uno de estos casos 197 00:13:04,659 --> 00:13:07,259 con la variable contestar si la hemos activado 198 00:13:07,259 --> 00:13:10,919 a través del sensor este de inclinación 199 00:13:10,919 --> 00:13:13,720 pues entonces aparecerá cualquiera de estas 200 00:13:13,720 --> 00:13:20,159 digo cualquiera porque dependerá del valor del número aleatorio 201 00:13:20,159 --> 00:13:22,679 en este caso en la variable contestar 202 00:13:22,679 --> 00:13:27,679 dependiendo del número aleatorio con esta instrucción random y entre paréntesis 8 203 00:13:27,679 --> 00:13:32,840 nos aparece un valor que va desde el 0 hasta el 7 204 00:13:32,840 --> 00:13:36,259 y aquí aparecen varias, vosotros podéis incluir todas las que queráis 205 00:13:36,259 --> 00:13:37,919 y por supuesto como digo modificar 206 00:13:37,919 --> 00:13:40,600 las respuestas como se os 207 00:13:40,600 --> 00:13:41,879 antoje, de acuerdo 208 00:13:41,879 --> 00:13:44,179 es una práctica muy fácil, muy sencilla 209 00:13:44,179 --> 00:13:46,240 y lo único como veis que hay un 210 00:13:46,240 --> 00:13:48,059 condicional en función de ese 211 00:13:48,059 --> 00:13:50,059 condicional pues se ejecuta con la 212 00:13:50,059 --> 00:13:52,320 instrucción suite case una opción o otra 213 00:13:52,320 --> 00:13:54,299 de acuerdo, bueno pues yo creo 214 00:13:54,299 --> 00:13:56,340 que con esto es más que suficiente 215 00:13:56,340 --> 00:13:57,860 para poder 216 00:13:57,860 --> 00:14:00,299 lanzaros a hacer esta práctica 217 00:14:00,299 --> 00:14:01,720 venga, un saludo