1 00:00:00,050 --> 00:00:09,050 Hola, en esta práctica os voy a enseñar cómo funciona un servo. Un servo es un tipo de motor. 2 00:00:09,050 --> 00:00:17,050 Lo veis aquí en la pantalla, está aquí arriba, es de color azul, y os explico cómo está conectado. 3 00:00:17,050 --> 00:00:22,050 Mira, tiene tres conectores, uno es el que se llama de señal, que es la señal de control, que viene desde el Arduino, 4 00:00:22,050 --> 00:00:27,750 Arduino, que lo conecta a la 10, por ejemplo, a quien a través del pin 10 el Arduino va 5 00:00:27,750 --> 00:00:32,289 a través de este pin, va a controlar el motor, tal como está conectado. Luego tiene una 6 00:00:32,289 --> 00:00:36,770 señal que se llama de potencia y otra de tierra, que serían los cables de alimentación. 7 00:00:37,490 --> 00:00:41,770 Fijaros que no los he conectado directamente al Arduino, sino que están conectados a una 8 00:00:41,770 --> 00:00:50,509 fuente de alimentación. Esta ya la conocemos de prácticas anteriores. Es como una pila, 9 00:00:50,509 --> 00:00:56,289 vas a poder regular el voltaje que tú le pones. En concreto, este ahora mismo estaría suministrando 5 voltios, ¿vale? 10 00:00:58,369 --> 00:01:06,430 ¿Por qué lo he conectado su potencia y su señal de tierra a una fuente de alimentación externa y no a la propia Arduino? 11 00:01:06,950 --> 00:01:15,430 Bueno, pues por una razón muy sencilla, porque la placa Arduino no es capaz de suministrar corrientes lo suficientemente altas para alimentar el motor, ¿vale? 12 00:01:15,430 --> 00:01:18,269 lo veremos en el curso 13 00:01:18,269 --> 00:01:20,569 o lo habremos visto ya en otros dispositivos 14 00:01:20,569 --> 00:01:22,629 como la parte de control no genera 15 00:01:22,629 --> 00:01:23,629 suficiente energía 16 00:01:23,629 --> 00:01:28,719 para la parte de acción, para mover un motor 17 00:01:28,719 --> 00:01:30,840 normalmente suele ser para mover un motor 18 00:01:30,840 --> 00:01:32,500 por eso utilizamos una fuente 19 00:01:32,500 --> 00:01:34,799 externa al Arduino 20 00:01:34,799 --> 00:01:36,379 el Arduino 21 00:01:36,379 --> 00:01:38,159 fijaros que tiene aquí la toma de tierra 22 00:01:38,159 --> 00:01:40,040 no solo la señal de control, la toma de tierra 23 00:01:40,040 --> 00:01:41,719 que coincide con la tierra 24 00:01:41,719 --> 00:01:44,099 de la fuente y la tierra del motor 25 00:01:44,099 --> 00:01:45,579 es muy importante que aunque 26 00:01:45,579 --> 00:01:49,439 que aunque el Arduino esté conectado a la tierra de otro dispositivo, 27 00:01:50,000 --> 00:01:53,439 el GND del Arduino esté conectado a ese mismo voltaje. 28 00:01:53,739 --> 00:01:56,819 Eso es para que tengan un punto de referencia común los voltajes 29 00:01:56,819 --> 00:02:00,439 y este pin 10 a través del cable verde, 30 00:02:00,920 --> 00:02:04,099 esas señales tengan sentido, 31 00:02:04,299 --> 00:02:08,340 que los tres dispositivos tengan el mismo punto de referencia en voltajes. 32 00:02:08,699 --> 00:02:13,460 Por eso aquí la tierra de la fuente coincide con la del mod servo y con la del Arduino. 33 00:02:14,020 --> 00:02:15,419 Así es como se conoce el servo. 34 00:02:15,580 --> 00:02:32,039 En la biblioteca, que no os lo he dicho, ¿dónde está? Pues está por aquí abajo, si no lo veis, acordaros, mira, está aquí, microservomotor, pero si no lo encontráis, acordaos que siempre podéis hacer una búsqueda escribiendo, por ejemplo, servo, y aquí me aparece microservomotor, ¿vale? 35 00:02:32,039 --> 00:02:35,300 En concreto hemos cogido este, el azul de la derecha. 36 00:02:36,219 --> 00:02:38,719 No tiene nada que... bueno, sí, posicionar. 37 00:02:39,020 --> 00:02:40,900 Nosotros vamos a usar el posicionar. 38 00:02:41,419 --> 00:02:42,979 ¿Qué significa esto de posicionar? 39 00:02:43,120 --> 00:02:46,780 Bueno, los servos lo que hacen no es un motor que gire continuamente, 40 00:02:46,919 --> 00:02:50,180 como los motores de corriente continua a los que estéis acostumbrados. 41 00:02:50,560 --> 00:02:52,699 Un servo funciona de la siguiente manera. 42 00:02:53,199 --> 00:02:55,099 Os voy a enseñar una instrucción que hay aquí. 43 00:02:55,939 --> 00:02:58,960 Utilizamos un bloque de la biblioteca azul, la de salidas, 44 00:02:58,960 --> 00:03:00,180 que se llama girar servo 45 00:03:00,180 --> 00:03:02,840 en el pasador, el pasador es el conector 46 00:03:02,840 --> 00:03:04,699 en el que en este caso está conectado al 10 47 00:03:04,699 --> 00:03:06,099 pues pondríamos al 10 48 00:03:06,099 --> 00:03:08,659 si estuviera al 11, al 11 y así 49 00:03:08,659 --> 00:03:10,939 y esta es la posición en la que 50 00:03:10,939 --> 00:03:12,860 queremos ponerlo, cada vez que yo mando 51 00:03:12,860 --> 00:03:14,759 una instrucción como esta, lo que hace el servo 52 00:03:14,759 --> 00:03:16,259 es colocarse en esa posición 53 00:03:16,259 --> 00:03:18,500 puede ser 0, puede ser 10, puede ser 30 54 00:03:18,500 --> 00:03:20,560 puede ser 45, puede ser 90, lo que sea 55 00:03:20,560 --> 00:03:22,800 entonces el servo llega y se mueve 56 00:03:22,800 --> 00:03:24,080 y se coloca en esa posición 57 00:03:24,080 --> 00:03:26,099 y no se mueve más mientras no haya 58 00:03:26,099 --> 00:03:28,639 ninguna instrucción que diga lo contrario 59 00:03:28,639 --> 00:03:33,759 y alguno pensará que eso no es muy útil, que un motor lo que interesa es que esté moviéndose continuamente 60 00:03:33,759 --> 00:03:36,719 y yo les diría, bueno pues depende de para qué quieres el motor 61 00:03:36,719 --> 00:03:42,840 si tú quieres el motor para controlar el brazo de un robot, el brazo de un robot no está siempre girando y girando 62 00:03:42,840 --> 00:03:48,840 lo que hace el brazo del robot es que se coloca en una posición y se queda en esa posición hasta que le demos otra orden 63 00:03:48,840 --> 00:03:53,319 y así sucesivamente, pues estos motores lo que hacen es colocarse en ciertas posiciones 64 00:03:53,319 --> 00:03:57,259 que se controlan con este bloque de la biblioteca de salida, el azul 65 00:03:57,259 --> 00:03:59,819 muy importante también, cada vez que utilicéis 66 00:03:59,819 --> 00:04:02,199 un bloque 67 00:04:02,199 --> 00:04:04,039 de estos, girar servo tal y montarlo 68 00:04:04,039 --> 00:04:05,520 en una posición, tiene que haber 69 00:04:05,520 --> 00:04:07,340 un bloque de espera detrás 70 00:04:07,340 --> 00:04:10,280 ¿por qué? porque el movimiento del servo 71 00:04:10,280 --> 00:04:11,780 no va a ser instantáneo 72 00:04:11,780 --> 00:04:13,020 tenéis que darle un tiempo 73 00:04:13,020 --> 00:04:15,719 entonces cada vez que le digáis, colócate 74 00:04:15,719 --> 00:04:17,839 necesitará un poquito de tiempo y necesitamos parar 75 00:04:17,839 --> 00:04:19,459 el programa con un bloque de espera 76 00:04:19,459 --> 00:04:21,420 un segundo, eso debe ser más que suficiente 77 00:04:21,420 --> 00:04:23,759 y por eso siempre hay 78 00:04:23,759 --> 00:04:26,000 detrás de un bloque de estos un bloque de espera 79 00:04:26,000 --> 00:04:29,060 entonces hoy nos voy a enseñar 80 00:04:29,060 --> 00:04:30,839 el código 81 00:04:30,839 --> 00:04:32,939 y nos voy a enseñar como se comporta el programa 82 00:04:32,939 --> 00:04:34,319 le damos a iniciar simulación 83 00:04:34,319 --> 00:04:36,860 lo primero que hace el motor es empezar aquí en 0 84 00:04:36,860 --> 00:04:38,939 en servo y veis que va 85 00:04:38,939 --> 00:04:41,319 girando a base de saltitos 86 00:04:41,319 --> 00:04:42,920 a la derecha, ya os digo que 87 00:04:42,920 --> 00:04:45,180 cada uno de estos saltitos son de 5 grados 88 00:04:45,180 --> 00:04:47,199 entonces va 0, 5, 10, 15 89 00:04:47,199 --> 00:04:48,540 20, 30, 35 90 00:04:48,540 --> 00:04:50,199 40, 45 91 00:04:50,199 --> 00:04:52,839 y así, ahora estaría llegando ya 92 00:04:52,839 --> 00:04:53,379 al 90 93 00:04:53,379 --> 00:04:55,540 y ahí se detiene 94 00:04:55,540 --> 00:04:57,100 y ahora va para atrás 95 00:04:57,100 --> 00:04:59,800 hacia abajo saltando de 5 en 5 96 00:04:59,800 --> 00:05:02,139 y así hasta el principio 97 00:05:02,139 --> 00:05:03,040 que ya se parará 98 00:05:03,040 --> 00:05:11,319 pues está a punto de pararse 99 00:05:11,319 --> 00:05:13,660 lo dejamos aquí para que veáis como no lo paro 100 00:05:13,660 --> 00:05:15,579 efectivamente ya se ha parado, ya no ejecuta más 101 00:05:15,579 --> 00:05:17,639 entonces, ¿cómo habría que hacer este programa? 102 00:05:17,879 --> 00:05:19,279 bueno, pues os voy a dar una pequeña pista 103 00:05:19,279 --> 00:05:21,660 el truco tiene tres partes 104 00:05:21,660 --> 00:05:23,560 una primera parte en la que hacemos es 105 00:05:23,560 --> 00:05:25,779 colocar el servo en cero y esperamos 106 00:05:25,779 --> 00:05:27,300 eso es muy importante porque aquí 107 00:05:27,300 --> 00:05:29,600 en nuestra simulación el motor ya estaba colocadito 108 00:05:29,600 --> 00:05:31,680 pero en la vida real, ese brazo no sabemos 109 00:05:31,680 --> 00:05:33,839 donde se ha podido quedar, entonces lo primero que hay que hacer 110 00:05:33,839 --> 00:05:35,480 es que se coloque, es decir, le empieza 111 00:05:35,480 --> 00:05:37,180 en el principio, en este caso en cero 112 00:05:37,180 --> 00:05:39,540 pone el motor a cero grados 113 00:05:39,540 --> 00:05:41,620 y esperamos, luego lo que 114 00:05:41,620 --> 00:05:43,120 hacemos para que el motor vaya pasando 115 00:05:43,120 --> 00:05:45,560 cero, cinco, diez, quince 116 00:05:45,560 --> 00:05:47,639 veinte, etcétera, es usar un bloque como 117 00:05:47,639 --> 00:05:49,360 este, que ya lo habéis visto en el zumbador 118 00:05:49,360 --> 00:05:52,000 esto es un bucle que va recorriendo 119 00:05:52,000 --> 00:05:53,579 en un sentido o en otro, arriba 120 00:05:53,579 --> 00:05:55,600 o hacia abajo, la primera parte del 121 00:05:55,600 --> 00:05:56,540 programa es hacia arriba 122 00:05:56,540 --> 00:06:00,560 vamos a ir dando saltitos de 5 grados 123 00:06:00,560 --> 00:06:03,120 para una variable que llamaremos ángulo 124 00:06:03,120 --> 00:06:06,399 en esa variable es donde estará la posición 125 00:06:06,399 --> 00:06:07,639 en la que tiene que colocarse el motor 126 00:06:07,639 --> 00:06:11,980 acordaros de cómo usasteis esto con el formador 127 00:06:11,980 --> 00:06:13,740 usábamos para distintos tonos 128 00:06:13,740 --> 00:06:15,279 aquí en medio de tonos son ángulos 129 00:06:15,279 --> 00:06:17,360 y vamos a ir desde 0 hasta 90 130 00:06:17,360 --> 00:06:19,800 entonces una primera parte del programa 131 00:06:19,800 --> 00:06:21,199 va a ir desde 0 hasta 90 132 00:06:21,199 --> 00:06:23,319 dando saltitos de 5 en 5 grados 133 00:06:23,319 --> 00:06:24,319 que es esto 134 00:06:24,319 --> 00:06:27,319 ¿Vale? ¿Os acordáis de la simulación que acabamos de ver? 135 00:06:27,319 --> 00:06:29,319 Luego habría una segunda parte que sería al revés. 136 00:06:29,319 --> 00:06:34,319 Iríamos hacia abajo, de 90 hasta cero, dando también saltitos de 5. 137 00:06:34,319 --> 00:06:38,319 De nuevo la variable sería ángulo, iría bajando a 90, 85, 80... 138 00:06:38,319 --> 00:06:40,319 Así hasta cero. 139 00:06:40,319 --> 00:06:46,420 Entonces, bueno, no os he dado el código, pero prácticamente lo tenemos.