¿Cómo controlar el servo con el arduino

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

El boceto Perilla

Este ejemplo muestra cómo se puede utilizar fácilmente un potenciómetro para mover el servo a un grado específico.

Necesitas:

  • Un Arduino Uno

  • Un tablero

  • Un servo

  • A 10k resistencia variable ohm

  • cables de salto

El servo está conectado exactamente como en el ejemplo de barrido, pero esta vez se necesitan conexiones adicionales a 5V y GND para el potenciómetro, por lo que debe utilizar un tablero para proporcionar los pines extra. Conectar los pines de 5V y GND en el Arduino al terminal positivo (+) y negativo (-) filas en el tablero.

Conectar el servo al tablero utilizando una fila de tres pasadores de encabezado o tres hilos de salto. Conecte la toma roja a la fila de 5V, el socket negro / marrón a la fila GND, y el enchufe blanco / amarillo al pin 9 en el Arduino.

Encontrar un espacio en el tablero para el potenciómetro. Conectar el pasador central a la patilla A0 en el Arduino y los pines restantes a 5V en un lado y en el otro GND.

Después de haber construido el circuito, abra el dibujo seleccionando Archivo → Ejemplos → → servo mando. El código para el boceto es el siguiente:

// controlar una posición servo usando un potenciómetro (resistencia variable) // por Michal Rinott #include lt;servo.HGT;servo myservo- // crear objeto servo para controlar un servoint potpin = 0- // pin analógico utilizado para conectar el potenciómetroint Val- // variable para leer el valor de la configuración pinvoid analógico () {myservo.adjuntar(9) - // une el servo en el pin 9 al objeto servo} void loop () {val = analogRead(Potpin) - // lee el valor del potenciómetro // (valor entre // 0 y 1023) val = mapa(Val, 0, 1023, 0, 179) - // escala para utilizarlo con // el servo (valor entre 0 y 180 //) myservo.escribir(Val) - // establece la posición del servo de acuerdo // para el valor escaladoretrasar(15) - // espera a que el servo llegar}

Usted puede notar que hay algunas discrepancias entre los comentarios y el código. Cuando se refiere a la gama de grados para mover el servo, el boceto menciona ambos 0 a 179 y 0 a 180. En todos los tutoriales de Arduino, lo mejor es asumir que son obras en curso y no siempre es exacta.

El rango correcto es de 0 a 179, lo que le da 180 valores. Contando desde cero se conoce como cero de indexación y es una ocurrencia común en Arduino, como se habrán dado cuenta por este punto.

Después de haber encontrado el boceto, pulse el botón Compile para comprobar el código. El compilador debe poner de relieve los errores de sintaxis en el cuadro de mensaje, que se ilumina en rojo cuando son descubiertos.

Si el boceto se compila correctamente, haga clic en Cargar para cargar el boceto de su tablero. Cuando se hace subir, el servo debe girar a medida que gira el potenciómetro.

Si eso no es lo que ocurre, debe revisar el cableado:

  • Asegúrese de que está utilizando el pin 9 para conectar los datos de línea (blanco / amarillo) al servo.

  • Compruebe las conexiones al potenciómetro y asegúrese de que el pasador central está conectado al pin analógico 0.

    Video: Arduino : Controlando Dos Servos

  • Compruebe las conexiones de la placa. Si los cables o componentes salto no se conectan utilizando las filas correctas en la placa, que no funcionarán.

El desglose boceto Perilla

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

Usted puede haber notado que el pasador está numerada como 0, no A0 como en otros ejemplos. O bien está bien, porque A0 es sólo un alias de 0, como A1 es de 1, y así sucesivamente. El uso de A0 es bueno para mayor claridad, pero es opcional.

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

Video: Arduino : Controlando Un Servo

#incluir lt;servo.HGT;servo myservo- // crear objeto servo para controlar un servoint potpin = 0- // pin analógico utilizado para conectar el potenciómetroint Val- // variable para leer el valor del pin analógico

En la configuración, el único elemento a definir es myservo, que está utilizando el pin 9.

void setup () {myservo.adjuntar(9) - // une el servo en el pin 9 al objeto servo}

En lugar de utilizar dos variables separadas para la entrada y la salida, este bosquejo simplemente utiliza uno. Primero, val se utiliza para almacenar los datos del sensor en bruto, un valor de 0 a 1023. Este valor se procesa entonces mediante el mapa función escalar su gama a la del servo: 0 a 179.

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

void loop () {val = analogRead(Potpin) - // lee el valor del potenciómetro // (valor entre 0 y 1023) val = mapa(Val, 0, 1023, 0, 179) - // escala para utilizarlo con el servo // (valor entre 0 y 180) myservo.escribir(Val) - // establece la posición del servo de acuerdo con // el valor escaladoretrasar(15) - // espera a que el servo llegar}

Con esta simple adición al circuito, es posible controlar un servo con cualquier tipo de entrada. En este ejemplo, el código utiliza una entrada analógica, pero con algunos cambios que sólo podía utilizar la misma facilidad con una entrada digital.

Artículos Relacionados