 Bienvenidos al recurso del mes con Codintev. Soy David Cuartiesco, fundador de Arduino y os voy a explicar cómo trabajar con servomotores y Arduino 1. Vamos a ver cómo utilizar un servomotor. Hay muchos tipos diferentes de motores. Hay motores de corriente continua, motores de corriente alterna, motores paso a paso que utilizan para, por ejemplo, máquinas como los 3D o fotocopiadoras. Y están los servomotores. Los servomotores son los motores que más utilizamos para protetipar y para usar en clase. Hay dos tipos de servomotores, los de giro continuo y los que se llama estándar. El servomotor se ha utilizado tradicionalmente para elementos de radio control que requieren quedarse fijos en una posición. Por ejemplo, un coche de radio control. Cuando quieres girar el volante, el servomotor gira a un ángulo determinado y mantiene el volante en esa posición mientras lo mantienes con tu controlador. En un momento dado nos dimos cuenta en la comunidad creativa, por así decirlo, que pueden ser utilizados para hacer todo tipo de pequeñas máquinas con las que trabajar en proyectos. También alguien se dio cuenta que hackeando los servomotores estándar y quitándoles un pequeño freno de plástico que tienen, podrían servir como motores de giro continuo que podrían servir para hacer, por ejemplo, las ruedas de un robot. La desventaja de los servomotores es que son un poquito lentos, sobre todo los de giro continuo. Su gran ventaja es que son extremadamente baratos al incluir todo lo que es los drivers de control dentro de la caja, de manera que sobre hay que conectar alimentación, tierra y un pin de señal. Es así de sencillo. Vamos a ver primero cómo solamente mover el motor y luego veremos cómo moverlo con un potenciómetro. Además, para este experimento vamos a utilizarles una librería de Arduino y vamos a ver cómo funcionan las librerías que no son la librería serie. La librería serie dentro de Arduino está siempre incluida dentro del software, con lo cual no hay que inicializarla de ninguna manera que no sea con serial.begin. Cuando trabajamos con, por ejemplo, la librería servo tenemos que incluir activamente la librería dentro de nuestro código. ¿Por qué la incluimos? Si la incluimos, os preguntaréis, pues la tenemos que incluir porque ocupa espacio. Entonces, si no la vamos a utilizar, es mejor no incluirla. La librería serie, como se utiliza prácticamente todo el tiempo, hay que tenerla siempre ahí a mano. Serón motor, como de hecho, tiene tres pines, tierra, alimentación y señal. El color de los cables depende del fabricante y nos podemos encontrar todo tipo de combinaciones mágicas. El rojo es alimentación, si está presente es alimentación. Si el rojo no está presente, es posible que la alimentación sea en naranja. En este caso, tenemos la increíble suerte que tenemos una especie de naranja, un rojo y un marrón. Pues bien, tengo la seguridad de que el rojo es alimentación, que además está en el centro. El marrón es tierra y el naranja, en este caso, es señal. Voy a conectarlos directamente a mi placa, tierra, cinco voltios. Y la siguiente pregunta es, ¿en qué pines puedo conectar mi motor? Voy a conectarlo, por ejemplo, al pin número seis. En la práctica, con la librería Arduino se puede conectar a casi cualquier pin. Pero si queréis estar seguros que va a funcionar bien, os recomiendo que empleéis los pines que llevan una señal de tilde, porque son los que están conectados a un temporizador interno, que son los que van a, seguro, seguro, funcionar con las librerías más básicas de Arduino. Si bien las librerías básicas, las librerías más avanzadas de Arduino, permiten trabajar conservos en casi cualquier pin. Pues bien, aquí tenemos nuestro servo motor. Voy a entrar a que se mantenga de pie sin tocarlo. Y ahora, cuando cambiamos el programa dentro del Arduino a mandar señales al pin número seis, el motor va a girar. Voy a ir dentro de los ejemplos, fichero, ejemplos. Como veis aquí, hay tú una colección de ejemplos que elegir. En concreto, hay una carpeta que se llama Servo. Y dentro de Servo hay dos ejemplos, No y Swip. No, está pensado para conectarle un potenciómetro y con eso controlar el ángulo de giro del servo. Y Swip está pensado para hacer que el giro del servo varíe en función a un bucle 4. Veamos este programa. Aquí al principio incluye la librería 0.h. Eso te permite crear variables del tipo Servo. Como veis aquí, myServo es el tipo Servo. Pues, lo vamos a emplear para determinar la posición del ángulo del motor y la función attach, lo que hace es determinar en qué pin vamos a conectar el servo. Y ahora voy a decir que va a ser el pin número seis. Veis, estoy cambiando el ejemplo porque físicamente lo conecto al pin número seis. Y en el loop, lo que hago es un form que lo que hace es enviar señales para que gire de 0 a 180 y de 180 a 0. Bien, lanzó esto. Hace mi servo. Bueno, hace mi placa. Veis como el servo motor va girando en una dirección y en la otra. Bien, os he dicho que gira de 0 a 180 grados. Como veis, no es exactamente correcto y eso tiene que ver con que el servo motor mecánicamente no es capaz de hacerlo. Entonces, cuando compres un servo motor, os hayis que asegurar que os de todo el recorrido que dicen que tiene que dar. En concreto, este fue bastante económico y no es capaz de dar el recorrido completo de 0 a 180. Como de 0, ahí está 0. Se pone a girar y ahora como 170, más o menos 160 y algo. Pero bueno, con eso se pueden hacer un montón de cosas. Se puede utilizar, por ejemplo, en maquetas para controlar objetos que tienen que moverse una dirección u otra. Se puede controlar para, por ejemplo, abrir y cerrar un candado de una puerta, etcétera, etcétera. Bien, voy a desconectarlo para que no agarre de fondo. Ahora sería interesante poder controlar ese servo con un sensor. Voy a hacer el otro ejemplo, el ejemplo no, que lo que hace es emplear un potenciómetro para controlar el ángulo de giro de el servo. Voy a controlar, se voy a conectar todos los cables dentro de mi placa a la protoboba para que sea más sencillo o que esté un poquito más limpio, lo que sea todo el control. Voy a poner naranja para 5 voltios. Voy a poner, en la medida de lo posible, negro y verde oscuro para 0 voltios. Insisto, hay que ser bastante sistemático con el tema de la coloración de los cables porque es el clásico caso que da problemas con alumnos. Yo, por ejemplo, me encontré una vez un alumno que cableó 100 y pico LEDs, todos con cables blancos. Fue divertidísimo y en el derecho a darle la mano al proyecto. Misión imposible. Si tenemos una convención de colores nos ayudará a poder trabajar con las cosas. Ahora tenemos un potenciómetro que está conectado al pin A0 y el servo motor que está conectado al pin 6. Mi objetivo es que el potenciómetro cambie el ángulo de giro del servo. Insisto, otro de los ejemplos que tenemos es la librería servo. Voy a ir aquí y voy a coger el ejemplo no. El ejemplo no, como veis, inicializa la librería servo, declara la variable myServo del tipo servo. Va a emplear un pin para definir en qué pin está conectado el potenciómetro. En los vídeos no estoy hablando prácticamente nada de la programación pero no introducí el tema de variables pero espero que tengáis donde buscar esta referencia. En setup voy a conectar el servo en el pin número 6 como comenté. Voy a leer el valor del potenciómetro lo almacenaré en esta variable y luego voy a mapear la función map es una función muy importante porque lo que haces es una regla de 3. Ella te dice que tienes este valor que has leído. Le dices en qué rango estaba este valor y lo que haces es automáticamente decirte cómo sería en un rango de salida. Entonces yo tengo mi sensor que va de 0 a 1023 como hemos visto anteriormente pero yo tengo que convertirlo para que vaya de 0 a 180 que es lo que tiene el motor como dato la función map lo que va a hacer es tomar mi valor sensor que sea por ejemplo por aquí y mapearlo al equivalente en el otro rango de valores. Este va a ser el objetivo de la función map. Y luego envío con servo punto write el modo valor modificado hacia el servo motor. Es bien lanzo este programa después de conectar la placa al ordenador si no me da error lanzo el programa y ahora cuando mueve el potenciómetro veréis cómo el servo se mueve de acuerdo al giro del potenciómetro y veis cómo es consistente la idea de cuando estoy al máximo no llega a 180 grados porque ese servo motor no es capaz de darme 180 grados mecánicamente sin igualdad haberme gastado 8€ en este servo motor, mirá gastado 25€ en este servo motor seguramente me daría el ángulo perfecto entonces es importante también según la aplicación con la que estoy trabajando que elijáis bien cuál es el motor que voy a utilizar Pues bien en el siguiente vídeo os mostraré cómo utilizar el ultrasonido y una pantalla de derecha