¡Saludos humanos! Hoy uno de nuestros lectores nos ha pedido por correo un tutorial muy sencillo: controlar un servomotor por Serial con Arduino. Pues bueno, vamos allá ¿no?
Material y componentes
El material que vamos a necesitar es:
- Arduino UNO/Duemilanove o sucedáneos
- Servo (¡oh, sorpresa!)
- Conectores y protoboard
- Cable USB de impresora
Procedimiento
Conectamos el servomotor al pin digital 3.
Vamos a crear un código que lea un número entero por Serial. En este caso no podemos usar la función Serial.read() ya que interpretará la entrada por Serial como una secuencia de carácteres y no como un número entero. Para ello utilizaremos la función Serial.parseInt() interpreta la entrada por serial como un número entero.
En cuánto al servo, utilizaremos la librería Servo.h para moverlo. Es importante recordar que los servos sólo pueden moverse de 0 a 180 grados (excepto los de giro continuo, pero en este caso aceptan velocidades de entre 0 i 180). Por tanto, sólo podremos aceptar valores entre 0 y 180 que lleguen por serial.
#include <Servo.h> int val = 0; //Variable de entrada del Serial Servo servo; //Creamos un objeto Servo de nombre... servo void setup() { Serial.begin(9600); //Iniciamos el serial servo.attach(3); //Conectamos el servo al pin digital 3 } void loop() { if(Serial.available() > 0) //Detecta si hay alguna entrada por serial { val = Serial.parseInt(); //Guardar la entrada como entero if(val >= 0 and val <= 180) { servo.write(val); //Mueve el servo a la posición entrada } } delay(500); }
Espero que este sencillo tutorial haya sido de utilidad. Si quieres sugerir otro tema, puedes proponerlo enviándonos un correo a contacto@robologs.net.
a esta misma programación necesito agregarle un mensaje de error cuando en el monitor serial le envio valores distintos entre 0 a 180… pueden ayudarme?
Saludos, felipe.
Puedes añadir un condicional que compruebe si el mensaje (después de convertirlo a entero) se sale del rango, y de ser así escribir un mensaje de error con Serial.println() en vez de mover el servo.
Final de línea.
controlar un servomotor a traves de internet; es decir, yo esoty en mi oficina y el servo esta en mi casa, y controlar su movimiento con una aplicacion en mi cel android
hola, necesito mover un servo 3 que muestre 3 posiciones en el serial monitor
Este tutorial explica como hacer lo mismo pero con dos servos:
http://robologs.net/2015/07/18/tutorial-de-arduino-controlar-dos-servos-por-serial/
hola, necesito mover dos servos vìa pc que respeten el siguiente texto “70.4,178.2” el orden de movimiento serìa el siguiente: “70.4” debe mover el servo A y posicionarlo en 70.4 grados, luego de la “,” viene el otro valor “178.2” que es la posiciòn angular del servo B. Se me complicò un poco trabajar con strings, no tengo suficiente conocimiento. Hasta el momento tengo un còdigo que lo fuì testeando y reconoce el caracter “,” siempre y cuando utilice el monitor serie… si uso el soft que necesito no funciona. Envìo el còdigo para saber si me pueden ayudar. //… Leer más »
Gracias!!!!!
donde conectos los pines
donde conecto el servo en el arduino
Hola! Se conecta al pin digital 3, lo pone en el tuto.
Hola, hasta cuantos mini servos puedo poner en el Arduino alimentado por el USB de la computadora sin riesgo para el Arduino o la propia computadora? se que por lo general los servos consumen alrededor de 500mA cada uno, y el USB no creo que entregue mas de de 200mA, ya usar directamente uno solo no seria riesgoso? gracias.
Hola, mariano! Dependerá mucho del tipo de servo, pero por lo general no hay ningún problema en usar uno sólo para hacer pruebas.
y el pin del servo amarillo a donde se conecta en la placa???
Lo pone en el tutorial: pin D3.
Rojo a 5V o VCC (dependiendo del modelo de servo), negro a GND y amarillo/blanco a D3.
buenos dias quisiera consultarles como muevo un servo a través de un xbee, les explico en control esta conectado por un shield usb a una arduino uno conectada a un xbee y el servo esta conectado a una mega junto el otro xbee entonces quisiera saber como hago para que mande de la arduino uno y reciba la arduino mega
Es lo mismo. Una Arduino escribe el número por Serial (y, por tanto, lo envía por XBee) y la otra lee el puerto Serial y mueve el servo como se ha hecho en este tutorial.
ese liusito
Hola, por favor quería consultarles, como puedo designar teclas para moverlo, y en el caso que hubiese dos o más servos en que orden tendría que escribir el código para hacerlos actuar de forma independiente.
Gracias de antemano y un saludo
¡Hola Salvador! Me temo que no es posible controlar un servo por teclado sólo con la consola Serial de Arduino… 🙁
Sobre cómo controlar dos servos a la vez… ¡Es una buena pregunta! Tan buena, que he decidido redactar un tutorial sobre éste tema. Aquí están todas las respuestas: http://bit.ly/1Vdur2q
Espero que te ayude 😉
[…] ¡Saludos humanos! Hoy en nuestro buzón de sugerencias nos han pedido un tutorial muy sencillo: controlar un servomotor por Serial con Arduino. Pues bueno, vamos allá ¿no? […]