1 00:00:01,000 --> 00:00:08,039 Hola, en la práctica de hoy vamos a ver la segunda parte de la comunicación a través del puerto serie. 2 00:00:08,560 --> 00:00:15,480 En este caso lo que vamos a ver, vamos a verlo en el simulador y también en la oralidad, 3 00:00:15,960 --> 00:00:21,519 es cómo se pueden mandar órdenes desde el ordenador a la placa Arduino a través de este cable, 4 00:00:21,839 --> 00:00:23,539 que es la comunicación serie. 5 00:00:24,339 --> 00:00:28,300 Entonces, como siempre, vamos a empezar con la simulación. 6 00:00:28,300 --> 00:00:38,600 tengo yo aquí cuatro leds conectados, cada uno de ellos a los terminales 13, 12, 11 y 10 7 00:00:38,600 --> 00:00:44,100 con los tocados de colores y todos ellos a una resistencia de protección que está subida a la tierra 8 00:00:44,100 --> 00:00:53,340 es el montaje habitual para encender y apagar los leds, utilizaríamos 13, 12, 11 y 10 como salidas digitales 9 00:00:53,340 --> 00:00:57,320 nada nuevo en contra de lo que es la circuitería, el montaje 10 00:00:57,320 --> 00:01:10,200 La novedad está en el código. En el código vamos a utilizar esto, leer del puerto serie. 11 00:01:10,200 --> 00:01:16,200 ¿Por qué? ¿Qué hace el Arduino? Bueno, el Arduino va a leer lo que le viene a través del puerto serie. 12 00:01:16,200 --> 00:01:23,200 Este conector que hay aquí lee lo que le viene, lee el número que hay ahí y lo guarda en una variable que le llamamos serie. 13 00:01:23,519 --> 00:01:29,819 Vale, muy bien. Entonces, esa variable serie, dependiendo de qué valores toma, tomaremos distintos valores. 14 00:01:29,980 --> 00:01:36,180 Por ejemplo, si este número que nos ha entrado por aquí vale 1, podemos coger y poner el pasador 13 en alto. 15 00:01:36,640 --> 00:01:40,780 ¿Por qué 1? Pues porque queremos, podríamos haber dicho que valiera 2, 3, 4, 5, lo que queramos. 16 00:01:40,840 --> 00:01:46,459 Es una codificación. Cuando entra un determinado valor, hacemos una acción que está codificada por ese valor. 17 00:01:47,319 --> 00:01:51,760 Podemos también luego ir añadiendo más este bloque sí, puede repetirse. 18 00:01:51,760 --> 00:01:57,780 podría haber otro grupo que sí, que diga si serie vale 3, pues entonces pongo el 12 en alta o lo que sea, ¿vale? 19 00:01:58,299 --> 00:02:00,200 En este momento vamos a trabajar solo con esto. 20 00:02:00,879 --> 00:02:04,159 Entonces, vamos a darle a la simulación y a ver qué pasa. 21 00:02:07,329 --> 00:02:11,430 Pues acordaros que para trabajar con el monitor serie tenemos que clicar en este botoncito de abajo. 22 00:02:14,080 --> 00:02:21,620 Entonces, si yo pongo el puerto serie, pongo 4, pongo 5, pongo 6, no pasa nada, que es lo que uno espera. 23 00:02:21,620 --> 00:02:24,979 Y si pongo 1, debería ponerse el led rojo encendido, ¿verdad? 24 00:02:24,979 --> 00:02:27,400 bueno, pues pulso y no ha pasado nada 25 00:02:27,400 --> 00:02:29,199 bueno, ¿eso por qué? ¿por qué es? 26 00:02:29,620 --> 00:02:30,379 pues es por 27 00:02:30,379 --> 00:02:33,740 nos aparece un problema entre comillas 28 00:02:33,740 --> 00:02:34,719 que es que por una vez 29 00:02:34,719 --> 00:02:37,479 si vamos a texto 30 00:02:37,479 --> 00:02:39,740 aquí vemos muy bien la correspondencia 31 00:02:40,340 --> 00:02:41,819 este, definir serie 32 00:02:41,819 --> 00:02:43,240 leer serie, lo que hace es que 33 00:02:43,240 --> 00:02:45,719 esta línea corresponde con el primer rojo 34 00:02:45,719 --> 00:02:47,659 ¿ok? lo que hace es leer y lo guarda 35 00:02:47,659 --> 00:02:49,759 la variable serie, esta segunda es el 36 00:02:49,759 --> 00:02:51,759 sí, con inglés sí, si la serie vale 37 00:02:51,759 --> 00:02:53,680 uno, entonces pone el pasador 38 00:02:53,680 --> 00:02:55,520 13 en alta, ¿vale? o sea que estas tres líneas 39 00:02:55,520 --> 00:02:56,919 corresponden con estos tres bloques 40 00:02:56,919 --> 00:02:59,479 bueno, pues ha habido un problema, como lo que nosotros estamos 41 00:02:59,479 --> 00:03:01,840 mandando es enteros, esta función 42 00:03:01,840 --> 00:03:03,400 que ha decidido usar 43 00:03:03,400 --> 00:03:05,620 el traductor de bloques a código 44 00:03:05,620 --> 00:03:07,879 no es la más adecuada, hay que cambiarla 45 00:03:07,879 --> 00:03:09,419 entonces lo que yo voy a hacer es 46 00:03:09,419 --> 00:03:11,599 para poder cambiarla, si intento escribir aquí no me deja 47 00:03:11,599 --> 00:03:13,939 porque yo lo modifico aquí en los bloques 48 00:03:13,939 --> 00:03:15,900 no tengo un bloque específico 49 00:03:15,900 --> 00:03:17,219 para leer enteros 50 00:03:17,219 --> 00:03:19,300 entonces lo que tengo que hacer es pasarme a texto 51 00:03:19,300 --> 00:03:21,280 vamos por primera vez a trabajar con texto 52 00:03:21,280 --> 00:03:23,020 entonces le doy aquí 53 00:03:23,020 --> 00:03:26,979 Y me dice, cuidado, ¿estás seguro de que desea cerrar el editor de bloques? 54 00:03:27,520 --> 00:03:31,340 Esto es así porque una vez que yo pase el editor de bloques, ya no me deja volver hacia atrás. 55 00:03:31,539 --> 00:03:35,840 No me deja volver nunca más al editor de bloques, por lo menos para este circuito. 56 00:03:36,360 --> 00:03:40,099 Lo que podéis hacer, si queréis, es hacer una copia, una vez llegados a este punto, hacer una copia, 57 00:03:40,560 --> 00:03:43,719 y tener una copia ahí por si acaso, o bien, otra opción es la que os voy a decir ahora. 58 00:03:44,240 --> 00:03:47,819 Bueno, yo en cualquier caso me vuelvo al texto, que lo que quiero es cambiar, le digo que continuar. 59 00:03:48,460 --> 00:03:51,719 Aquí tengo el texto, ya no puedo trabajar con bloques, ya no me da esa opción. 60 00:03:51,719 --> 00:03:54,219 si quisiera volver a bloque, lo borraría 61 00:03:54,219 --> 00:03:56,819 entonces lo que yo quiero es que en vez de usar la función 62 00:03:56,819 --> 00:03:59,099 serial.read, voy a usar esta función 63 00:03:59,099 --> 00:04:00,919 serial.parse 64 00:04:00,919 --> 00:04:03,919 y ya está 65 00:04:03,919 --> 00:04:06,860 vamos a probar ahora, le doy a iniciar 66 00:04:06,860 --> 00:04:07,460 simulación 67 00:04:07,460 --> 00:04:10,900 y de nuevo, si escribo 68 00:04:10,900 --> 00:04:12,719 aquí, 2, 3 69 00:04:12,719 --> 00:04:14,699 4, no pasa nada 70 00:04:14,699 --> 00:04:16,879 si escribo 1, debería encenderse 71 00:04:16,879 --> 00:04:18,300 vamos a ver, mando 1 72 00:04:18,300 --> 00:04:21,040 y se ha encendido 73 00:04:21,040 --> 00:04:24,920 efectivamente era tan fácil 74 00:04:24,920 --> 00:04:26,019 como cambiar esa 75 00:04:26,019 --> 00:04:27,399 esa función 76 00:04:27,399 --> 00:04:30,839 entonces, el ejercicio 77 00:04:30,839 --> 00:04:32,519 ¿qué es lo que yo os pido? bueno, pues os pido 78 00:04:32,519 --> 00:04:35,000 que hagáis una codificación 79 00:04:35,000 --> 00:04:36,720 es decir, que igual que hemos hecho 80 00:04:36,720 --> 00:04:38,939 tres bloques 81 00:04:38,939 --> 00:04:40,660 estas tres líneas para encender un LED 82 00:04:40,660 --> 00:04:42,800 que lo hagáis para este, para este y para este 83 00:04:42,800 --> 00:04:44,839 y lo mismo que lo hagáis para apagar 84 00:04:44,839 --> 00:04:46,839 ¿vale? entonces sería 85 00:04:46,839 --> 00:04:48,860 empezar otra vez y crear 86 00:04:48,860 --> 00:04:50,800 unos bloques que, pues diga, si serie 87 00:04:50,800 --> 00:04:52,839 es igual a 1, enciende el 13 88 00:04:52,839 --> 00:04:54,839 si serie es igual a 2, enciende 89 00:04:54,839 --> 00:04:56,860 el 12, si es igual a 3, enciende 90 00:04:56,860 --> 00:04:58,800 el 11, si es igual a 4, enciende el 10 91 00:04:58,800 --> 00:05:00,800 lo que queráis, a mí la codificación me da igual 92 00:05:00,800 --> 00:05:02,959 y luego lo mismo, si serie es igual a 5 93 00:05:02,959 --> 00:05:03,879 apaga el 13 94 00:05:03,879 --> 00:05:06,439 eso es una posibilidad, otra 95 00:05:06,439 --> 00:05:07,779 es coger esto 96 00:05:07,779 --> 00:05:09,839 y hacer copiar y pegar 97 00:05:09,839 --> 00:05:12,339 si yo estas tres líneas las voy 98 00:05:12,339 --> 00:05:13,779 copiando y pegando 99 00:05:13,779 --> 00:05:15,819 bueno, ni siquiera 100 00:05:15,819 --> 00:05:18,319 con hacer una única lectura, me vale 101 00:05:18,319 --> 00:05:20,779 yo leo una vez y lo que voy haciendo es 102 00:05:20,779 --> 00:05:23,500 Son estas dos líneas, es comparando las lecturas. 103 00:05:24,579 --> 00:05:27,040 Si serie que he leído vale 2, lo que sea. 104 00:05:27,160 --> 00:05:30,100 Si serie que he leído vale 3, se puede ir haciendo copiar y pegar. 105 00:05:31,439 --> 00:05:34,019 Si yo esto lo copio y lo pego aquí, 106 00:05:35,160 --> 00:05:37,839 luego lo puedo modificar a mi jardín de aire. 107 00:05:38,680 --> 00:05:39,560 Me he equivocado. 108 00:05:39,560 --> 00:05:44,519 El problema de trabajar con el texto es que puede ser complicado. 109 00:05:44,639 --> 00:05:45,560 Es fácil que os equivocéis. 110 00:05:46,000 --> 00:05:49,759 Este cierre va con esta apertura. 111 00:05:49,759 --> 00:05:52,959 Entonces, si yo elijo, lo puedo copiar incluido esto, ¿vale? 112 00:05:53,459 --> 00:05:56,939 Lo copiaría así, y lo iría pegando, con las distintas posibilidades. 113 00:05:57,279 --> 00:06:02,540 Si serie vale 2, entonces se podría poner el 12 en high, o el 12 en low, o el 13 en low, lo que queráis. 114 00:06:02,959 --> 00:06:06,420 ¿Vale? Eso es una posibilidad que es lo mismo que ir repitiendo los 6. 115 00:06:07,819 --> 00:06:08,060 ¿Vale? 116 00:06:08,800 --> 00:06:10,899 Se puede trabajar tanto con bloques como con código. 117 00:06:11,420 --> 00:06:12,639 Entonces, ese sería el ejercicio. 118 00:06:12,959 --> 00:06:14,759 Hacer un programa para... 119 00:06:16,100 --> 00:06:19,079 Que lo podéis programar con bloques, perfectamente, ¿vale? 120 00:06:19,079 --> 00:06:20,579 porque vosotros lo vais a hacer en el simulador 121 00:06:20,579 --> 00:06:22,779 yo he querido utilizar el texto 122 00:06:22,779 --> 00:06:24,740 porque me lo voy a llevar 123 00:06:24,740 --> 00:06:26,480 el IDE de Arduino, que lo he llevado 124 00:06:26,480 --> 00:06:28,779 de hecho lo tengo aquí, pero no os enseño 125 00:06:28,779 --> 00:06:29,800 la parte de arriba 126 00:06:29,800 --> 00:06:32,000 y lo que voy a hacer es 127 00:06:32,000 --> 00:06:33,639 mandar mi programita 128 00:06:33,639 --> 00:06:38,000 a la placa Arduino real, para que veáis 129 00:06:38,000 --> 00:06:39,980 cómo funciona esto en la vida real 130 00:06:39,980 --> 00:06:41,560 que es donde de verdad tiene sentido 131 00:06:41,560 --> 00:06:43,839 es mucho más 132 00:06:43,839 --> 00:06:46,180 interesante, entonces voy a mandar este programa 133 00:06:46,180 --> 00:06:48,319 se encenden 134 00:06:48,319 --> 00:06:50,339 las lucecitas estas, la habéis visto parpadear 135 00:06:50,339 --> 00:06:57,860 que estaba recibiendo un código, entonces yo ahora mismo, herramientas, monitor serie, 136 00:06:59,120 --> 00:07:02,819 y lo que voy a hacer es ir mandando códigos, yo lo que he hecho es que si mando un 12, 137 00:07:03,519 --> 00:07:09,639 se enciende, perdón, si mando, los tengo conectados a 13, 12 y 11, entonces si mando 138 00:07:09,639 --> 00:07:19,139 un 13 se encenderá el que tengo conectado a 13 que es el verde, con una vez a la codificación 139 00:07:19,139 --> 00:07:28,490 vamos a ver si tengo algo mal conectado 140 00:07:28,490 --> 00:07:33,860 en principio está todo bien conectado 141 00:07:33,860 --> 00:07:39,600 ah, ¿cuál es mi problema? 142 00:07:39,740 --> 00:07:42,300 mirad, que me he llevado el código 143 00:07:42,300 --> 00:07:44,000 pero lo he puesto mal, tengo que cambiarlo ahí 144 00:07:44,000 --> 00:07:45,579 el parse int este 145 00:07:45,579 --> 00:07:48,040 vale, lo he cambiado en la simulación 146 00:07:48,040 --> 00:07:49,819 pero no me he acordado de cambiarlo aquí en la 147 00:07:49,819 --> 00:07:52,079 ¿lo veis aquí el parse int? bueno, pues lo voy a compilar 148 00:07:52,079 --> 00:07:53,600 otra vez para asegurarme que está todo bien 149 00:07:53,600 --> 00:07:56,139 no ha dado ningún error en principio 150 00:07:56,139 --> 00:08:00,000 Pío, no, y lo que voy a hacer es mandarlo ahora. 151 00:08:03,629 --> 00:08:05,050 Y entonces repito ahora la jugada. 152 00:08:05,449 --> 00:08:08,910 Si mando el 13, ahora sí debería encenderse el LED verde. 153 00:08:09,310 --> 00:08:11,550 Efectivamente, no había cambiado en el código ese. 154 00:08:11,889 --> 00:08:13,910 Si mando un 12, se encenderá el otro. 155 00:08:14,509 --> 00:08:16,949 Y si mando un 11, se encenderá el otro. 156 00:08:17,470 --> 00:08:21,649 Y ahora, si quiero apagarlos, los he codificado que el 113 me apague el 13. 157 00:08:21,649 --> 00:08:24,610 ¿Y por qué 113? Porque he querido, pudiera ser un 5. 158 00:08:24,730 --> 00:08:26,829 Bueno, 113. ¿Me apaga ese? Sí. 159 00:08:26,829 --> 00:08:29,170 el 111 me apagará el 11 160 00:08:29,170 --> 00:08:31,410 porque está programado así 161 00:08:31,410 --> 00:08:33,830 y el 112 me apagará el otro 162 00:08:33,830 --> 00:08:35,029 porque está programado así 163 00:08:35,029 --> 00:08:37,970 eso ha sido mi codificación 164 00:08:37,970 --> 00:08:39,629 fijaros que chulada es esto 165 00:08:39,629 --> 00:08:41,750 que yo aquí desde el teclado, desde el ordenador 166 00:08:41,750 --> 00:08:42,649 estoy controlando 167 00:08:42,649 --> 00:08:45,750 unos nets 168 00:08:45,750 --> 00:08:47,809 que están conectados al arduino 169 00:08:47,809 --> 00:08:50,049 puedo desde mi ordenador controlar el arduino 170 00:08:50,049 --> 00:08:52,190 esa es la clave 171 00:08:52,190 --> 00:08:53,309 de la comunicación seria 172 00:08:53,309 --> 00:08:55,610 que pueden arduino y el ordenador intercambiar 173 00:08:55,610 --> 00:08:58,509 bueno, pues este es el ejercicio y esto es lo que tenéis que hacer 174 00:08:58,509 --> 00:09:00,149 tenéis que hacer esto mismo que yo he hecho 175 00:09:00,149 --> 00:09:02,450 en la vida real, con un ataque real 176 00:09:02,450 --> 00:09:03,429 lo tenéis que hacer en la 177 00:09:03,429 --> 00:09:05,129 en la simulación, vale 178 00:09:05,129 --> 00:09:08,289 bueno, ya lo tenéis, es facilito