prucommercialre.com


Cómo controlar el servo con el Arduino

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

El boceto Knob

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

Usted necesita:

  • Un Arduino Uno
  • Un tablero
  • Un servo
  • Un 10k ohm resistencia variable
  • Cables Jump

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 de proporcionar los pines extra. Conecte las clavijas de 5V y GND en el Arduino al positivo (+) y negativo (-) filas en el tablero.

Conecte el servo a la protoboard utilizando una fila de tres pines de cabecera o tres hilos de salto. Conecte el enchufe rojo a la fila de 5V, el zócalo negro / marrón a la fila GND, y el blanco toma / amarillo al pin 9 en el Arduino.

Cómo controlar el servo con el Arduino

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

Cómo controlar el servo con el Arduino

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

// El control de la posición del servo mediante un potenciómetro (resistencia variable)
// Por Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
#include <Servo .h>
Myservo Servo; // Crear el 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
void setup ()
{
. myservo adjuntar (9); // Concede el servo en el pin 9 al objeto servo
}
void loop ()
{
val = analogRead (potpin); // Lee el valor de la
// Potenciómetro (valor entre
// 0 y 1023)
val = mapa (val, 0, 1023, 0, 179); // Escala para usarlo con
// El servo (valor entre 0 y
// 180)
. myservo escribir (val); // Establece la posición del servo según
// Para el valor escalado
de retardo (15); // Espera a que el servo llegar
}

Usted puede notar que hay algunas discrepancias entre los comentarios y el código. Cuando se hace referencia a la gama de grados para mover el servo, el boceto menciona tanto 0-179 y de 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 indexación y es una ocurrencia común en Arduino, como te habrás 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 para su tablero. Cuando se hace subir, su servo debe girar a medida que gira el potenciómetro.

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

  • Asegúrese de que está utilizando el pin 9 para conectar los datos (blanco amarillo /) línea al servo.
  • Compruebe las conexiones al potenciómetro y asegúrese de que el pasador central está conectado al pin analógico 0.
  • Compruebe las conexiones de la placa. Si los cables de salto o componentes no están conectados con las filas correctas en el tablero, no van a trabajar.

El desglose boceto Knob

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, lo que demuestra que está utilizando analógica 0.

Usted puede haber notado que el pasador está numerado 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. Utilizando A0 es bueno para la claridad, pero es opcional.

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

#include <Servo .h>
Myservo Servo; // Crear el 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 instalación, el único elemento a definir es myservo, que está utilizando el pin 9.

void setup ()
{
. myservo adjuntar (9); // Concede 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. En primer lugar, val se utiliza para almacenar los datos del sensor en bruto, un valor de 0 a 1023. Este valor se procesa a continuación, utilizando la función de mapa para escalar su gama a la de la servo: 0-179.

Este valor se escribe en el servo usando myservo.write. También hay un retraso de 15 milisegundos para llegar a ese lugar. A continuación, 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 usarlo con el servo
// (Valor entre 0 y 180)
. myservo escribir (val); // Establece la posición del servo según
// El valor escalado
de retardo (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 unos pocos cambios que sólo podría utilizar fácilmente como una entrada digital.