image1.jpg

Cómo controlar su servo con el Arduino

Al usar un potenciómetro (o cualquier sensor analógico), es posible controlar directamente su servo con el Arduino de la misma manera que controlaría una garra mecánica en las arcadas.

El boceto de la perilla

Este ejemplo le muestra cómo puede usar fácilmente un potenciómetro para mover su servo a un grado específico.

Necesitas:

  • Un Arduino Uno

  • Una placa de pruebas

  • Un servo

  • Una resistencia variable de 10k ohmios

  • Saltar cables

El servo está cableado exactamente como en el ejemplo de barrido, pero esta vez necesita conexiones adicionales a 5V y GND para el potenciómetro, por lo que debe usar una placa de pruebas para proporcionar los pines adicionales. Conecte los pines 5V y GND en el Arduino a las filas positivas (+) y negativas (-) en la placa de pruebas.

Conecte el servo a la placa de pruebas utilizando una fila de tres pines de cabecera o tres cables de salto. Conecte el enchufe rojo a la fila de 5V, el enchufe negro / marrón a la fila GND y el enchufe blanco / amarillo al pin 9 del Arduino.

image0.jpg

Encuentra un espacio en la placa para el potenciómetro. Conecte el pin central al pin A0 en el Arduino y los pines restantes a 5V en un lado y GND en el otro.

image1.jpg

Después de haber construido el circuito, abra el boceto eligiendo Archivo → Ejemplos → Servo → Perilla. El código del boceto es el siguiente:

// Control de la posición de un servo mediante un potenciómetro (resistencia variable)
// por Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
#include < Servo .h>
 Servo myservo; // crea un objeto servo para controlar un servo
 int potpin = 0; // pin analógico utilizado para conectar el potenciómetro
 int val; // variable para leer el valor del pin analógico
configuración vacía ()
{
 myservo. adjuntar (9); // conecta el servo en el pin 9 al objeto servo
}
bucle vacío ()
{
 val = analogRead (potpin); // lee el valor del
          // potenciómetro (valor entre
          // 0 y 1023)
 val = mapa (val, 0, 1023, 0, 179); // escalarlo para usarlo con
          // el servo (valor entre 0 y
          // 180)
 myservo. escribir (val); // establece la posición del servo de acuerdo
          // al valor escalado
 retraso (15); // espera a que llegue el servo
}

Puede notar que hay algunas discrepancias entre los comentarios y el código. Cuando se hace referencia al rango de grados para mover el servo, el boceto menciona tanto de 0 a 179 como de 0 a 180. Con todos los tutoriales de Arduino, es mejor asumir que están en progreso y no siempre son precisos.

LEER  Diez enlaces a recursos de aprendizaje de Arduino en línea

El rango correcto es de 0 a 179, lo que le da 180 valores. El conteo desde cero se conoce como indexación cero y es una ocurrencia común en Arduino, como puede haber notado en este punto.

Una vez que haya encontrado el boceto, presione el botón Compilar para verificar el código. El compilador debe resaltar cualquier error de sintaxis en el cuadro de mensaje, que se ilumina en rojo cuando se descubren.

Si el boceto se compila correctamente, haga clic en Cargar para cargar el boceto en su tablero. Cuando termine de cargar, su servo debería girar mientras gira su potenciómetro.

Si eso no es lo que sucede, debe verificar su cableado:

  • Asegúrese de que está usando el pin 9 para conectar la línea de datos (blanca / amarilla) al servo.

  • Verifique sus conexiones al potenciómetro y asegúrese de que el pin central esté conectado al pin analógico 0.

  • Verifique las conexiones en la placa de pruebas. Si los cables de salto o los componentes no están conectados usando las filas correctas en el tablero, no funcionarán.

El desglose del boceto de Knob

En las declaraciones, se nombran la biblioteca de servos, Servo.h y un nuevo objeto de servo. El pin de entrada analógica se declara con un valor de 0, lo que muestra que está utilizando Analog 0.

Es posible que haya notado que el pin está numerado como 0, no como A0 como en otros ejemplos. Cualquiera de los dos está bien, porque A0 es solo un alias de 0, ya que A1 es de 1, y así sucesivamente. El uso de A0 es bueno para mayor claridad, pero es opcional.

LEER  Lo que debe saber sobre los sensores Arduino: uso de sensores capacitivos

Hay una última variable para almacenar el valor de la lectura, que se convertirá en la salida.

#include < Servo .h>
 Servo myservo; // crea un objeto servo para controlar un servo
 int potpin = 0; // pin analógico utilizado para conectar el potenciómetro
 int val; // variable para leer el valor del pin analógico

En la configuración, el único elemento para definir es myservo, que usa el pin 9.

configuración vacía ()
{
 myservo. adjuntar (9); // conecta el servo en el pin 9 al objeto servo
}

En lugar de utilizar dos variables independientes para la entrada y la salida, este esquema simplemente utiliza una. Primero, val se usa para almacenar los datos brutos del sensor, un valor de 0 a 1023. Este valor luego se procesa usando la función de mapa para escalar su rango al del servo: 0 a 179.

Este valor se escribe luego en el servo usando myservo.write . También hay un retraso de 15 milisegundos para llegar a esa ubicación. Luego, el bucle se repite y actualiza su posición según sea necesario.

bucle vacío ()
{
 val = analogRead (potpin); // lee el valor del potenciómetro
          // (valor entre 0 y 1023)
 val = mapa (val, 0, 1023, 0, 179); // escalarlo para usarlo con el servo
          // (valor entre 0 y 180)
 myservo. escribir (val); // establece la posición del servo de acuerdo con
          // el valor escalado
 retraso (15); // espera a que llegue el servo
}

Con esta simple adición al circuito, es posible controlar un servo con cualquier tipo de entrada. En este ejemplo, el código usa una entrada analógica, pero con algunos cambios podría usar fácilmente una entrada digital.

LEER  Bocetos en serie para Arduino

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *