1 00:00:10,539 --> 00:00:17,640 Entonces, el otro día de todas formas estuvimos viendo un repaso de lo que eran las estructuras 2 00:00:17,640 --> 00:00:23,859 de los diagramas de flujo que ya vimos al principio del curso, ¿vale? Pues vimos que 3 00:00:23,859 --> 00:00:33,640 teníamos la secuencia que venía dada por estos tres elementos, ya, voy a hacer un repaso 4 00:00:33,640 --> 00:00:39,140 de todo, ¿vale? La secuencia, que son esos tres elementos, las flechas que nos indican 5 00:00:39,140 --> 00:00:47,140 los rectángulos que nos dicen las acciones que nosotros estaríamos ejecutando sin interacción con el exterior 6 00:00:47,140 --> 00:00:53,140 y el romboide que son las acciones que yo ejecuto con algún tipo de interacción con el exterior. 7 00:00:53,140 --> 00:01:03,740 Luego, por otro lado, tengo las decisiones, la separación del camino. 8 00:01:03,740 --> 00:01:07,739 A este rombo se llega por un único camino, que es el camino de entrada, 9 00:01:07,739 --> 00:01:14,579 por donde viene el programa, ejecuta algo así, y tiene dos salidas, una para sí y otra para no. 10 00:01:15,879 --> 00:01:19,299 Y aquí en medio tenemos una pregunta, ¿vale? 11 00:01:20,120 --> 00:01:29,900 Tenemos secuencia, tenemos decisiones, y luego tenemos bucles que vimos que había tres tipos. 12 00:01:29,900 --> 00:01:42,299 El bucle for, que es una palabra que se dice un poco en inglés, porque vais a encontrarlo en montones de sitios, ¿vale? 13 00:01:42,299 --> 00:01:47,579 en inglés. Entonces, para que os lo suplique también a las palabras en inglés. For es 14 00:01:47,579 --> 00:02:00,319 el núcleo para, while es el núcleo mientras y el until es el hasta. ¿Vale? Tres tipos 15 00:02:00,319 --> 00:02:05,280 de bucles. Que vimos que el primero era cuando sabíamos cuántas veces había que repetirlo. 16 00:02:05,900 --> 00:02:10,259 El segundo se ejecutaba mientras que se cumpliera una condición, con lo cual no es un número 17 00:02:10,259 --> 00:02:15,159 fijo de veces, sino que se va a repetir mientras que se cumpla una condición. Y el último 18 00:02:15,159 --> 00:02:21,580 es, se va a repetir hasta que se cumpla una condición. Por lo tanto, el mientras, cuando 19 00:02:21,580 --> 00:02:25,520 se cumple la condición, me mantengo ejecutando las órdenes que están dentro del bucle, 20 00:02:26,080 --> 00:02:31,280 ¿vale? Mientras que está ejecutándose, con lo cual, tengo que evaluar y si se cumple 21 00:02:31,280 --> 00:02:37,240 dentro. Y el hasta, que es al contrario, se va a ejecutar hasta que se cumpla la condición. 22 00:02:37,620 --> 00:02:40,439 Cuando se cumple la condición, lo que me hago es que ya me salgo del mundo. 23 00:02:40,539 --> 00:02:41,240 No repito más. 24 00:02:41,560 --> 00:02:41,759 ¿Vale? 25 00:02:42,680 --> 00:02:43,560 Es decir, esto es lo diferente. 26 00:02:43,780 --> 00:02:46,840 Pero claro, si lo pensáis, es lo mismo que hacemos nosotros, ¿no? 27 00:02:47,340 --> 00:02:50,120 Yo qué sé, te dice tu madre, vete a jugar mientras haya luz. 28 00:02:50,819 --> 00:02:55,060 Mientras haya luz. 29 00:02:55,360 --> 00:03:00,129 ¿Qué ocurre cuando no se cumple la condición que te ha dado tu madre? 30 00:03:00,250 --> 00:03:00,729 Se acabó. 31 00:03:00,909 --> 00:03:01,110 Acá. 32 00:03:01,949 --> 00:03:03,449 ¿Y qué pasa si te dice lo contrario? 33 00:03:03,930 --> 00:03:06,389 Vete a jugar hasta que anochezca. 34 00:03:07,469 --> 00:03:09,689 Entonces, el que se cumpla la condición, 35 00:03:09,689 --> 00:03:15,789 en este caso lo que implica es que tú te vuelves a casa. Antes era cuando dejaba de cumplirse 36 00:03:15,789 --> 00:03:23,169 y ahora es cuando se cumple. ¿Entendéis? Pues estos son los diagramas de flujo y hacemos 37 00:03:23,169 --> 00:03:32,159 dibujitos aquí con la secuencia de órdenes. Bien. Luego, el último día estuvimos viendo 38 00:03:32,159 --> 00:03:36,580 qué era un robot. ¿Qué es un robot? ¿Qué componen un robot? ¿Qué partes componen 39 00:03:36,580 --> 00:03:55,020 Tenemos, por un lado, entradas que son sensores. Esto nos va a meter dentro de nuestra placa de control información. 40 00:03:55,020 --> 00:04:16,970 Entonces, ¿qué ejemplo de sensores vimos? El ejemplo de sensores puede ser, por ejemplo, el sensor de presión, también llamado botón. 41 00:04:16,970 --> 00:04:25,110 un botón. Es un sensor de presión, cuando yo lo presiono se activa, cuando lo dejo de 42 00:04:25,110 --> 00:04:33,990 presionar se desactiva. Por lo tanto, un botón es capaz de detectar la presión. También 43 00:04:33,990 --> 00:04:46,199 tenemos sensores, por ejemplo, de temperatura, que me miden los temperaturas y me dan la 44 00:04:46,199 --> 00:05:02,540 información de luminosidad, que se llaman LDR. Pues un sensor de luminosidad lo que 45 00:05:02,540 --> 00:05:07,079 va a detectar es cuánta luz hay, si es de día o si es de noche, si hay mucha luz o 46 00:05:07,079 --> 00:05:12,000 si hay poca. Por ejemplo, los sensores de luminosidad se utilizan para los focos de 47 00:05:12,000 --> 00:05:16,720 los coches, los faros de los coches. Hay un sensor de luminosidad para algún lugar y 48 00:05:16,720 --> 00:05:22,480 cuando la luminosidad cae por debajo de un determinado valor, los luces de los coches 49 00:05:22,480 --> 00:05:32,050 También tenemos distancias, por ejemplo. 50 00:05:32,050 --> 00:05:38,050 Son sensores que me permiten detectar a qué distancia se encuentra el objeto más cercano. 51 00:05:38,050 --> 00:05:43,050 En cualquier caso, yo voy a medir. Hay sensores para todo el armamento de física, prácticamente. 52 00:05:43,050 --> 00:05:52,050 Entonces, yo cojo y a través de un sensor mido una magnitud física a mi alrededor. 53 00:05:52,050 --> 00:06:02,410 Y esa magnitud física la introduzco al robot, con lo cual el robot recibe información de lo que está pasando. 54 00:06:02,410 --> 00:06:06,410 Tengo mis sensores de presión en la piel. 55 00:06:06,410 --> 00:06:11,410 Si yo estoy de pie y de repente viene alguien por detrás y me toca la espalda para llamar mi atención, 56 00:06:11,410 --> 00:06:19,410 los sensores de presión que yo tengo en mi espalda reciben esa información de la presión que está haciendo el dedo del que me está llamando 57 00:06:19,410 --> 00:06:23,410 y me meten al cerebro esa información, oye, que te están tocando atrás. 58 00:06:23,410 --> 00:06:29,410 Reciben la información y la introducen en el cerebro, que es nuestra placa de control. 59 00:06:29,410 --> 00:06:33,410 O, por ejemplo, pues yo que sé, tengo también sensores de temperatura. 60 00:06:33,410 --> 00:06:53,449 Si yo meto el dedo en el horno y si no lo quito, pues me muere. 61 00:06:53,449 --> 00:07:00,449 Entonces tengo sensores de temperatura, también tengo, pues en los ojos tengo cámaras que me permiten identificar objetos a mi alrededor. 62 00:07:00,449 --> 00:07:03,449 Tengo sensores de distancia en los ojos, ¿vale? 63 00:07:03,449 --> 00:07:07,449 al tener visión tridimensional puedo detectar y analizar que es a la que se encuentran los objetos 64 00:07:07,449 --> 00:07:14,449 con lo cual los sensores funcionan como esos elementos que introducen la información al robot 65 00:07:14,449 --> 00:07:18,449 luego está la placa microcontroladora 66 00:07:18,449 --> 00:07:41,459 es así, se utiliza en física en divisores para identificar los micros 67 00:07:41,459 --> 00:07:44,459 y la sede controladora 68 00:07:44,459 --> 00:08:04,319 el microcontrolador que funcione en los planos, no tiene ningún tipo de interés. 69 00:08:04,319 --> 00:08:07,319 Dotarlos de inteligencia a través de un programa. 70 00:08:07,319 --> 00:08:13,319 Y ese programa va a cumplir lo que hemos visto de los diagramas de flujo. 71 00:08:13,319 --> 00:08:19,319 Es decir, van a ser una secuencia ordenada de pasos que van a resolver ciertos problemas. 72 00:08:19,319 --> 00:08:20,319 Depende de lo que yo quiero que... 73 00:08:20,319 --> 00:08:32,059 Bueno, yo estoy aquí de pie, me han tocado en la espalda, mis sensores de presión han detectado que me están... 74 00:08:32,059 --> 00:08:36,879 Y entonces yo cojo y ¿qué hago? Ya he procesado, me están llamando. 75 00:08:38,179 --> 00:08:54,269 ¿Qué hago? Hago lo mismo. Recibe la información de los sensores, procesa a través de un programa esa información y toma decisiones. 76 00:08:55,529 --> 00:09:06,529 Y decide, claro, yo, y sé que es el cansino del alumno que me está preguntando por la nota de la gente, y puedo no activar mis motores, ¿no? 77 00:09:07,049 --> 00:09:11,429 Pero si no sé quién es y tengo curiosidad, me giraré. 78 00:09:11,429 --> 00:09:28,460 Bueno, pues entonces lo que voy a hacer es activar mis salidas, que son los actuadores, que son los actuadores, y esas salidas que son mis actuadores, ¿qué pueden ser? 79 00:09:28,460 --> 00:09:44,200 O pueden ser, por ejemplo, motores. O pueden ser servomotores, que son unos motores especiales. 80 00:09:44,860 --> 00:09:59,440 Pueden ser luces. O puede ser un zumbador, por ejemplo. O más cosas. ¿Vale? Son dispositivos 81 00:09:59,440 --> 00:10:06,059 que permiten al robot comunicarse con el exterior, devolver información o actuar de alguna forma 82 00:10:06,059 --> 00:10:17,519 con el exterior. Por un lado tengo las entradas, por el otro tengo las salidas. ¿Vale? Zumbador. 83 00:10:23,259 --> 00:10:31,080 Zumbador. ¿Vale? Un zumbador. Zumbador es un aparato que cuando lo activo, zumba. Hace 84 00:10:31,080 --> 00:10:40,120 un ruido. Como un timbre. ¿Vale? Entonces, estos son los actuadores. Y esto es un robot. 85 00:10:40,120 --> 00:10:50,120 Cuando yo construyo un robot, si le pongo dos sensores y un actuador, una luz, pues hago un robot muy sencillito, que hace muy pocas cosas. 86 00:10:50,120 --> 00:10:59,120 Y si le pongo cientos de sensores y cientos de actuadores, pues hago un robot muy complicado. Claro, para el controlador. 87 00:10:59,120 --> 00:11:14,120 Cualquier robot que encontréis, incluso los robots humanoides que hacen en China, que hacen un montón de cosas, son estos. 88 00:11:14,120 --> 00:11:27,120 Al final, el circuito de desmonta son motores, son actuadores, son luces, son cámaras, son sensores auditivos, sensores de presión y un programa muy complicado que analiza todo eso. 89 00:11:27,120 --> 00:11:39,529 También, claro, hay cables. Los sensores y los actuadores a mi placa de control. 90 00:11:39,529 --> 00:12:05,830 ¿Vale? Entonces ahora lo que vamos a hacer en este último trimestre es poner todo esto junto, la parte teorija y la parte práctica, vamos a tener que conectar sensores al controlador, vamos a tener que conectar actuadores al controlador, vamos a tener que hacer un programa para dotar de... 91 00:12:05,830 --> 00:12:30,840 es nulo, yo no lo he dicho, tengo que decirle, tendrás que leer órdenes concretas, y una vez que haya hecho eso, hablemos con el robot, ¿vale? 92 00:12:32,519 --> 00:12:51,330 ¿Cómo funciona un programa de robots? Pues un programa de robots, normalmente, cumple siempre los mismos pasos, ¿vale? 93 00:12:51,549 --> 00:12:56,450 Entonces cuando yo, fíjense, en un programa cualquiera, pues un programa puede hacer mil cosas, 94 00:12:56,450 --> 00:13:01,409 pero un programa para robots siempre va a hacer lo que voy a poner ahora mismo. 95 00:13:01,590 --> 00:13:26,779 Lo primero que va a hacer es leer los sensores, se va a conectar a todos los sensores que tiene y va a ver que información le llega de ellos, con lo cual lo primero que va a hacer es leer. 96 00:13:26,779 --> 00:13:37,720 Como os digo, un procesador, siempre pensamos que es una cosa muy compleja, pero realmente un procesador es una cosa muy sencilla. 97 00:13:38,539 --> 00:13:40,600 No hace nada y es bastante tonto. 98 00:13:42,019 --> 00:13:52,259 De hecho, si yo simplemente leo algo, el robot automáticamente se olvida de ello. 99 00:13:52,259 --> 00:13:54,899 ¿Vale? Es decir 100 00:13:54,899 --> 00:13:56,580 Si yo le digo 101 00:13:56,580 --> 00:13:59,299 Léete la distancia del sensor de distancia 102 00:13:59,299 --> 00:14:01,879 O léete la temperatura del sensor de temperatura 103 00:14:01,879 --> 00:14:03,919 Él coge, recibe esa información 104 00:14:03,919 --> 00:14:06,740 Y si no la apunta en algún sitio 105 00:14:06,740 --> 00:14:07,240 Se olvida 106 00:14:07,240 --> 00:14:08,740 Se le olvida 107 00:14:08,740 --> 00:14:10,759 Por lo tanto siempre 108 00:14:10,759 --> 00:14:13,740 Tiene que apuntarlo en algún sitio 109 00:14:13,740 --> 00:14:15,620 Ese sitio donde apunta 110 00:14:15,620 --> 00:14:17,240 Los valores 111 00:14:17,240 --> 00:14:18,779 Un programa que se llama variables 112 00:14:18,779 --> 00:14:21,259 Y son cajas vacías 113 00:14:21,259 --> 00:14:24,730 una variable 114 00:14:24,730 --> 00:14:28,149 es una caja vacía 115 00:14:28,149 --> 00:14:29,250 que tiene una etiqueta 116 00:14:29,250 --> 00:14:34,750 es una caja vacía 117 00:14:34,750 --> 00:14:36,429 con una etiqueta, un nombre 118 00:14:36,429 --> 00:14:38,990 ¿vale? entonces por ejemplo 119 00:14:38,990 --> 00:14:41,350 si yo tengo un sensor de distancia 120 00:14:41,350 --> 00:14:43,429 pues me puedo hacer una caja 121 00:14:43,429 --> 00:14:45,269 que tenga el nombre list 122 00:14:45,269 --> 00:14:46,889 ¿vale? entonces esta etiqueta 123 00:14:46,889 --> 00:14:48,370 yo le llamo DST 124 00:14:48,370 --> 00:14:51,129 o solamente la letra D, me da igual 125 00:14:51,129 --> 00:14:52,309 es un nombre que yo le pongo 126 00:14:52,309 --> 00:14:54,850 y ese nombre me identifica la caja 127 00:14:54,850 --> 00:14:56,629 y aquí dentro 128 00:14:56,629 --> 00:14:58,070 de esta caja 129 00:14:58,070 --> 00:15:00,570 yo pondré 130 00:15:00,570 --> 00:15:01,929 valores. 131 00:15:04,009 --> 00:15:04,330 ¿Vale? 132 00:15:04,490 --> 00:15:06,110 Será mi forma de recordar. 133 00:15:08,009 --> 00:15:08,970 Esto es una variable. 134 00:15:10,389 --> 00:15:10,830 Y se llama 135 00:15:10,830 --> 00:15:11,330 variable 136 00:15:11,330 --> 00:15:13,970 porque si yo meto un valor, 137 00:15:14,450 --> 00:15:16,750 lo recuerdo, pero en el momento en el que yo quiera 138 00:15:16,750 --> 00:15:17,950 puedo meter otro valor. 139 00:15:18,970 --> 00:15:20,350 Cuando meto otro valor, 140 00:15:20,350 --> 00:15:21,850 el primero desaparece. 141 00:15:22,970 --> 00:15:23,190 ¿Vale? 142 00:15:23,929 --> 00:15:25,830 Pero puedo recordar el segundo valor. 143 00:15:25,830 --> 00:15:30,690 el valor va cambiando, puede cambiar a lo largo del programa, por eso se llama variable, 144 00:15:30,830 --> 00:15:37,090 porque puede variar, es un contenido que no es un variable. Entonces, ¿qué voy a hacer 145 00:15:37,090 --> 00:15:41,230 en el programa de robots? Pues mira, voy a leer unos sensores y claro, para no olvidarme 146 00:15:41,230 --> 00:15:47,340 de lo que he leído, ¿qué tengo que hacer con esto? Tengo que apuntarlo, tengo que guardarlo 147 00:15:47,340 --> 00:16:01,970 en variables, ¿vale? Guardar valores en variables, con lo cual guardamos los valores que yo he 148 00:16:01,970 --> 00:16:07,110 he leído en variables y así luego me puedo acordar, ¿de acuerdo? Si yo tomo una caja 149 00:16:07,110 --> 00:16:12,149 que se llama DIST, que tiene lo que yo he leído del sensor de distancia, al principio 150 00:16:12,149 --> 00:16:16,070 del programa yo le digo sensor de distancia, dime la distancia al objeto más cercano, 151 00:16:16,070 --> 00:16:23,409 él me dice 32 centímetros, y yo cojo su valor y lo coloco en la caja. Ahora ya, cada 152 00:16:23,409 --> 00:16:28,649 vez que yo quiera hacer algo, pensar si está muy lejos, si está muy cerca, compararlo 153 00:16:28,649 --> 00:16:33,710 con un valor, o tomar una decisión, puedo coger ese valor que está ahí almacenado 154 00:16:33,710 --> 00:16:37,649 y mirar cuánto vale, porque ya me acuerdo de ello, porque lo tengo apuntado, ¿entendéis? 155 00:16:38,389 --> 00:16:43,330 Esas son las variables, y las tenéis que ver así, como cajas, etiquetadas, entonces 156 00:16:43,330 --> 00:16:48,070 yo meto los valores. Bueno, pues entonces le doy los sensores, todos los sensores que 157 00:16:48,070 --> 00:17:04,289 yo tenga, meto los valores en variables, después, ¿qué hago? Proceso la información, procesamos 158 00:17:04,289 --> 00:17:09,210 esa información, ya tengo la información, la tengo apuntada y ahora tengo que ver qué 159 00:17:09,210 --> 00:17:15,450 tengo que hacer con eso, pues oye, si la temperatura que me indica mi dedo es que estamos a muchísimos 160 00:17:15,450 --> 00:17:23,900 grados, aparta la mano, mueve el motor, o si alguien te ha tocado en la espalda y la 161 00:17:23,900 --> 00:17:27,539 de presión me ha dicho que esto, yo tengo que tomar la decisión de mover el motor de 162 00:17:27,539 --> 00:17:35,539 la cintura para girar. Entonces, tengo que procesar la información y acto seguido tengo 163 00:17:35,539 --> 00:17:51,009 que tomar decisiones. Guardar valores en variables. Primero leemos los sensores, guardamos los 164 00:17:51,009 --> 00:17:58,410 valores en las variables, procesamos la información que hemos leído, es bastante lógico. Tomo 165 00:17:58,410 --> 00:18:03,869 decisiones, en función de lo que he leído, pues tomo decisiones. Ya os digo, puedo decidir 166 00:18:03,869 --> 00:18:09,849 girarme o no girarme, he notado la presión, pero yo puedo decidir, depende de qué condiciones 167 00:18:09,849 --> 00:18:16,690 sucedan, puedo girarme o no. Por tanto, tomo decisiones y luego lo último que hago es 168 00:18:16,690 --> 00:18:19,190 activar 169 00:18:19,190 --> 00:18:24,309 mis actuadores 170 00:18:24,309 --> 00:18:28,730 si es necesario 171 00:18:28,730 --> 00:18:32,809 ¿vale? entonces yo leo 172 00:18:32,809 --> 00:18:33,630 mi entorno 173 00:18:33,630 --> 00:18:36,210 detecto cosas 174 00:18:36,210 --> 00:18:38,710 introduzco esos valores 175 00:18:38,710 --> 00:18:41,069 en variables para no olvidarme de ellos 176 00:18:41,069 --> 00:18:44,589 el programa que yo estoy ejecutando 177 00:18:44,589 --> 00:18:46,589 hace cuentas 178 00:18:46,589 --> 00:18:48,490 o procesa de alguna forma 179 00:18:48,490 --> 00:18:49,250 esa información 180 00:18:49,250 --> 00:18:52,630 tomamos decisiones 181 00:18:52,630 --> 00:18:56,509 y ahora que en función de estas decisiones 182 00:18:56,509 --> 00:18:57,809 activamos o no 183 00:18:57,809 --> 00:18:59,970 mis motores, mis luces, mis tumbadores 184 00:18:59,970 --> 00:19:01,410 hacemos que el robot 185 00:19:01,410 --> 00:19:04,150 devuelva información al internet 186 00:19:04,150 --> 00:19:05,869 ¿vale? y entonces el programa 187 00:19:05,869 --> 00:19:07,450 normalmente un programa de ordenador 188 00:19:07,450 --> 00:19:10,309 cuando llega al final se para, se termina 189 00:19:10,309 --> 00:19:12,089 y ya está 190 00:19:12,089 --> 00:19:14,069 se termina de ejecutar, bueno pues un robot no 191 00:19:14,069 --> 00:19:15,349 un robot 192 00:19:15,349 --> 00:19:22,930 un robot, cuando el programa 193 00:19:22,930 --> 00:19:29,930 El martillo de espíritu llega al final, no se para, coge, sube arriba y vuelve a empezar. 194 00:19:29,930 --> 00:19:32,930 Cuando llega al final, vuelve a empezar. 195 00:19:32,930 --> 00:19:34,930 Cuando llega al final, vuelve a empezar. 196 00:19:34,930 --> 00:19:36,930 Y se pasa así hasta que le quiten las pilas. 197 00:19:36,930 --> 00:19:40,930 ¿Vale? Por lo tanto es un bucle, un ciclo, 198 00:19:40,930 --> 00:19:45,930 en el cual se leen los sensores, se almacenan los valores, procesamos la información, 199 00:19:45,930 --> 00:19:49,930 tomamos decisiones, activamos o no los actuadores 200 00:19:49,930 --> 00:19:57,930 y volvemos a hacer los sensores, y ese es un programa de un robot, dando vueltas toda la vida 201 00:19:57,930 --> 00:20:01,930 hasta que se gasta la velocidad, ¿vale? 202 00:20:01,930 --> 00:20:05,930 vamos a hacer un ejemplo, rápido 203 00:20:09,930 --> 00:20:18,839 yo tengo aquí un robot, voy a mirar el robot desde arriba, es una base con dos ruedas 204 00:20:18,839 --> 00:20:24,660 y aquí en la parte de abajo es un detector de distancia. 205 00:20:24,660 --> 00:20:32,380 Y voy a poner aquí mi algoritmo para el robot. 206 00:20:32,380 --> 00:20:36,380 Mi algoritmo, ¿vale? 207 00:20:36,380 --> 00:20:40,380 Vamos a ir diciéndole la secuencia ordenada de pasos 208 00:20:40,380 --> 00:20:44,380 que quiero que ejecute mi robot. Lo voy a hacer en forma de diagrama de flujo. 209 00:20:44,380 --> 00:21:04,059 Ejemplo. Primero, activa motor 1 210 00:21:04,059 --> 00:21:11,930 y activa motor 2. Perdón. 211 00:21:11,930 --> 00:21:42,660 activa motor 1, hacia delante y lo mismo, activa motor 2, hacia delante y al 100%, esas son las dos primeras órdenes. 212 00:21:42,660 --> 00:22:03,059 Después, primero leer sensor de distancia, lo primero que hacemos es leer los sensores, perdonad, 213 00:22:03,059 --> 00:22:28,539 y el valor lo almaceno en, vale, lo voy a almacenar, que es una variable, de acuerdo, 214 00:22:29,539 --> 00:22:35,099 le he hecho el sensor de distancia y el resultado lo guardas en tris, eso me hace la primera 215 00:22:35,099 --> 00:22:50,319 orden. Después le digo, distancia mayor de 10 centímetros, y aquí tengo dos salidas, 216 00:22:50,319 --> 00:24:55,920 para motor 1, para motor 2, activa motor 2, atrás 50%, espera un segundo, me quedan dos cuadritos aquí debajo, 217 00:24:55,920 --> 00:25:19,599 El primero pone activa 1 y 2 adelante al 3% y el segundo espera un segundo. 218 00:25:31,299 --> 00:25:31,519 ¿Vale? 219 00:25:32,400 --> 00:25:51,500 Entonces, lees el sensor de distancia y lo metes en dist, entrecomillado. 220 00:25:54,779 --> 00:25:55,960 Luego aquí hay una pregunta. 221 00:25:57,319 --> 00:25:59,400 ¿Distancia es mayor de 10 cm? 222 00:25:59,400 --> 00:26:07,400 Si es mayor que 10 centímetros, no hago nada. Pero si no es mayor que 10 centímetros, ejecuto toda esta parte. 223 00:26:07,400 --> 00:26:15,400 Que es, para el motor 1, para el motor 2, activa el motor 2 al 50%, espera un segundo y para el motor 2. 224 00:26:15,400 --> 00:26:26,680 Y luego, tanto si hemos salido de por sí como si hemos ejecutado toda la parte de no, 225 00:26:26,680 --> 00:26:32,680 lo siguiente que hacemos es activar los motores 1 y 2 adelante al 100% y esperar un segundo. 226 00:26:32,680 --> 00:26:35,240 ¿Vale? ¿Lo tenéis? 227 00:26:51,730 --> 00:26:53,569 Para empezar ya veo que tiene forma de obra. 228 00:27:00,079 --> 00:27:05,140 ¿Vale? Lo que hace que es, lo primero es leer los sensores y almacenar los valores en variables. 229 00:27:06,599 --> 00:27:14,299 Lo siguiente que hace que es, toma decisiones, procesa la información y en función de la información que ha recogido, 230 00:27:14,299 --> 00:27:19,039 si cumple o no ciertos parámetros, ejecuta o no ciertas acciones. 231 00:27:19,039 --> 00:27:27,900 y después lo que hace es interactuar con los dispositivos de salida, con lo cual activa o desactiva los motores 232 00:27:27,900 --> 00:27:37,559 y cuando termina de hacer eso, vuelve arriba y vuelve a leer el sensor, vuelve a procesar, vuelve a activar motores, vuelve arriba, etc. 233 00:27:37,900 --> 00:27:44,460 se pasa así toda la vida, vamos a hacer este robot, yo tengo aquí un robot, tiene aquí delante un sensor de distancia 234 00:27:44,460 --> 00:27:49,640 que es esta rayita que he puesto, y dos ruedas, mirando desde arriba, sino mirando desde el 235 00:27:49,640 --> 00:28:05,059 cielo, ¿vale? Y voy a poner aquí, por ejemplo, una pared. Eso es una pared. Y aquí voy a 236 00:28:05,059 --> 00:28:16,779 poner otra pared. Bien. Fijaros. Le damos a las pilas y nos sentemos, ¿vale? Clic. ¿Qué 237 00:28:16,779 --> 00:28:24,960 va a hacer este robot? Bueno, pues lo primero que va a hacer es leer el sensor de distancia. 238 00:28:25,119 --> 00:28:31,240 Coge el sensor de distancia, mide la distancia, un metro. Con lo cual, en la cajita que yo 239 00:28:31,240 --> 00:28:39,859 he llamado dist, ¿lo verán así? Esta cajita se llama dist. ¿Vale? Pues en esa cajita 240 00:28:39,859 --> 00:28:48,119 meto un metro. ¿Vale? Y entonces, ya he terminado de leer el sensor y almacenar en la cajita 241 00:28:48,119 --> 00:28:55,099 la distancia. Ahora, ¿la distancia es mayor de 10 centímetros? Sí, ¿verdad? Pues me 242 00:28:55,099 --> 00:29:02,180 salgo por aquí y voy aquí. Activa los motores 1 y 2 adelante al 100%. Perfecto. Si yo activo 243 00:29:02,180 --> 00:29:06,200 los motores 1 y 2, que son las dos ruedas, hacia adelante al 100%, ¿qué hace el robot? 244 00:29:07,119 --> 00:29:12,059 Avanza. Por lo cual el robot se empieza a mover. ¿Y después qué hago? Esperar un 245 00:29:12,059 --> 00:29:20,250 segundo, al cabo de un segundo, tengo el robot aquí. Y ahora termina de esperar el segundo. 246 00:29:21,029 --> 00:29:25,349 Vuelve arriba. ¿Qué hace? Lea el sensor de distancia y el contenido lo mete en gris. 247 00:29:25,349 --> 00:29:35,289 Bueno, pues ahora estamos a 75 centímetros. ¿Vale? Vuelvo. ¿No es mayor que 10 centímetros? 248 00:29:35,869 --> 00:29:41,369 Sí. Activo los motores, con lo cual, cuando estaban activados, pues siguen activados. 249 00:29:41,369 --> 00:29:43,369 Y llegamos aquí 250 00:29:43,369 --> 00:29:44,690 Al cabo de un segundo 251 00:29:44,690 --> 00:29:48,539 Volvemos a leer 252 00:29:48,539 --> 00:29:52,519 Ahora ya estamos a 30 centímetros 253 00:29:52,519 --> 00:29:55,180 Seguimos a más de 10 254 00:29:55,180 --> 00:29:56,640 Pues ahora seguimos avanzando 255 00:29:56,640 --> 00:30:00,660 Otro segundo que me espero 256 00:30:00,660 --> 00:30:02,400 Mientras avanzan los motores 257 00:30:02,400 --> 00:30:03,640 Vale 258 00:30:03,640 --> 00:30:06,880 Volvemos a leer el sensor de distancia 259 00:30:06,880 --> 00:30:09,779 9 centímetros 260 00:30:09,779 --> 00:30:12,400 Al objeto más cercano 261 00:30:12,400 --> 00:30:20,400 ¿La distancia es mayor que 10? No. Por lo tanto, en vez de ir por aquí, por donde es el robot. 262 00:30:20,400 --> 00:30:28,900 ¿Qué hago? Para motor 1 y para motor 2. Con lo cual, ya he dado a tope, me paro. Ya no me estrella. 263 00:30:28,900 --> 00:30:34,900 Después, activa sólo el motor 2 hacia detrás al 50%. 264 00:30:34,900 --> 00:30:40,900 ¿Qué es lo que hace si yo cojo una rueda, la dejo parada y la otra la muevo? 265 00:30:40,900 --> 00:30:52,640 ¿Qué hace el robot? Gira. Con lo cual, el robot está aquí. Si la rueda 2, que es la de abajo, gira hacia atrás, lo que va a hacer es girar así. 266 00:30:53,380 --> 00:31:08,490 Y se nos va a colocar al cabo de un segundo en esta posición. ¿Vale? Es decir, activa el motor 2 hacia atrás, esperas un segundito y paras el motor. 267 00:31:08,490 --> 00:31:15,089 Con lo cual, se ha quedado, algo que lo ha parado, ha girado y se ha quedado parado. ¿Y después de esto qué hace? 268 00:31:15,990 --> 00:31:52,339 activa los motores 1 y 2 hacia delante al 100%, y espera un segundo, termina el programa, y ahora coge y dice, lee el sensor de distancia, ahora el sensor de distancia me vuelve a dar, yo que sé, 80 centímetros, ahora a este tubo de aquí, ¿no?, porque es la distancia que tiene, eso es a ver, lo que sea, ¿vale?, ¿es variable? Sí, avanza, lee, 40 centímetros, 269 00:31:54,440 --> 00:31:56,480 ¿Es mayor de 10? Sí, pues avanza. 270 00:32:00,859 --> 00:32:03,539 ¿Ley? 8 centímetros. 271 00:32:06,150 --> 00:32:08,650 Pues menos de 10 para los motores. 272 00:32:10,390 --> 00:32:12,930 Activo la rueda 2 para atrás durante un segundo. 273 00:32:14,190 --> 00:32:21,430 Se gira y se pone mirando para allá y activa los motores. 274 00:32:23,569 --> 00:32:24,549 ¿Y qué es lo que hemos construido? 275 00:32:26,130 --> 00:32:27,869 Pues un robot que evita los obstáculos. 276 00:32:34,569 --> 00:32:35,970 Esto a lo mejor de esperar un segundo, 277 00:32:37,170 --> 00:32:40,650 este de aquí vamos a esperar a lo mejor un cuarto de segundo, 278 00:32:40,650 --> 00:32:42,069 Porque si no, a lo mejor durante el tiempo 279 00:32:42,069 --> 00:32:47,269 Pues tengo que esperar 280 00:32:47,269 --> 00:32:50,430 50 milisegundos, 25 milisegundos 281 00:32:50,430 --> 00:32:51,670 100 milisegundos 282 00:32:51,670 --> 00:32:53,849 O sea, esos tiempos para un robot 283 00:32:53,849 --> 00:32:56,390 A lo mejor el robot está leyendo los sensores 284 00:32:56,390 --> 00:32:57,549 100 veces por segundo 285 00:32:57,549 --> 00:33:02,329 Y el tiempo que pasa entre una lectura y otro 286 00:33:02,329 --> 00:33:03,529 Es una décima de segundo 287 00:33:03,529 --> 00:33:05,490 Con lo cual de esa forma 288 00:33:05,490 --> 00:33:09,880 Que no se estrelle nunca, ¿vale? 289 00:33:09,880 --> 00:33:11,700 Vamos a leer muy frecuentemente