8_servos_mini

Si has visto el videotutorial sobre Servomotores, quizá te has preguntado cómo se programa el bailecito que hacen los miniservos al final del vídeo. En esta entrada aprenderás a programar los movimientos usando los bloques de bitbloq

Creando una función para mover servos:

Para empezar vamos a crear una función con este bloque que renombraremos como MePasoElDiaBailando:

8servos_funcion_0

Le añadimos un parámetro de entrada tipo entero (int) que será el dato con la posición que queremos que alcancen los miniservos. Este dato se lo pasaremos desde el bucle principal:

8servos_funcion_1

Para mover un miniservo conectado en el pin digital 3, el bloque bitbloq quedaría de la siguiente forma:

8servos_funcion_2

Como ves, le hemos puesto una pausa de 150 milisegundos para que el programa espere un poco sin hacer otra cosa mientras este servo se mueve.

¡Vamos a conectar 8 miniservos! Sí, sí y ¡SÍ! en la placa ZUM BT-328 puedes conectar 8 servomotores sin problemas:

8_servos

AVISO: Alimenta la placa controladora con una fuente externa o portapilas si ves que la corriente del USB del ordenador no es suficiente para mover tanto servo.

La función de bailoteo para los ocho servos quedaría así de larguirucha:

8servos_funcion_larga

Bucle principal:

En el bucle principal vamos a declarar una variable local llamada “pos” que será el ángulo que irán tomando los miniservos. Para empezar les vamos a decir que tomen un ángulo de 20 grados, pasándole este dato a la función creada MePasoElDiaBailando():

8servos_pos_A

Tras una espera de 500 milisegundos, programamos un movimiento en la otra dirección, por ejemplo al ángulo 160 grados:

8servos_pos_B

De esta forma los miniservos irán moviéndose uno a uno sincronizados cada 150 ms entre uno y el siguiente. Primero hasta el ángulo 20, espera de 500ms, después hasta el ángulo 160 y otra espera de medio segundo. Así queda el programa al completo:

8servos_completa

Ahora que tienes claro el baile simple, prueba a modificar las esperas, tiempos de sincronía y ángulos para hacer tu baile personalizado. Por ejemplo, ¿sabrías modificar estos parámetros usando un potenciómetro?

6 comentarios

  1. Hi Prado,Sorry ask for help again.I try to use two joysticks to control four servo motor in my projects.But I find when drag two joysticks icon into Bitbloq ,then compile them in Bitbloq.I got error messages.Is there another way to solve this problem?Hoping it will not waste you too much time.Thanks in advances.

    1. Anita de Prado

      You’re right! We have already fixed this little bug. You will see the change in the next release (the coming week). Thanks for the report.

  2. Buenas, tenemos un problema a la hora de programarlo hacia la placa, nos sale que esta copilado con éxito, pero cuando lo comprobamos con la placa no funciona, ¿¿tendría alguna solución para este problema??

  3. Como puedes hacer funcionar tantos servos si solo tiene 6 salidas pwm?

    1. Anita de Prado

      La librería Servo.h que es la que utiliza el bloque de bitbloq de los servos, puede soportar hasta 12 servomotores ya que no usa directamente la “modulación por ancho de pulso” (PWM). Por tanto, las 6 salidas PWM a las que te refieres (de las placas con chip Atmega328 equivalentes a ArduinoUNO), están reservadas para generar directamente esa modulación PWM. Al usar por ejemplo la función analogWrite() (el bloque bitbloq “Escribir en pin digital el valor analógico..”) sí que debes tener en cuenta esos pines.

      Aquí te dejo la referencia a la librería Servo.h
      http://arduino.cc/en/Reference/Servo

Los comentarios están cerrados.