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 Knob
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
Un 10k ohm resistencia variable
Cables Jump
El servo está conectado exactamente como en el ejemplo de barrido, pero esta vez lo que necesita 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 para el tablero utilizando una fila de tres pines de cabecera o tres hilos de salto. Conecte la toma roja 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.
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.
Después de haber construido el circuito, abra el boceto eligiendo File-ejemplos-Servo-Knob. El código para el dibujo es la siguiente:
// El control de la posición del servo usando un potenciómetro (resistencia variable) // por Michal Rinott #include lt;Servo.h>Servo myservo- // crear servo objeto de controlar un servoint potpin = 0- // pin analógico utilizado para conectar el potenciómetroint va- // variable para leer el valor de la configuración pinvoid analógico () {myservo.adjuntar(9) - // concede 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 según // para el valor escaladoretraso(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 a 179 y 0 a 180. Con 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. A contar desde cero se conoce como cero indexación y es una ocurrencia común en Arduino, como te habrás dado cuenta a estas alturas.
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 compila correctamente, haga clic en Cargar para cargar el boceto para su tablero. Cuando se hace la posibilidad de subir, el 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á usando el pin 9 para conectar los datos (verde /) 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 mediante 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á 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. Usando A0 es bueno para la claridad, pero opcional.
Hay una última variable para almacenar el valor de la lectura, que se convertirá en la salida.
#include lt;Servo.h>Servo myservo- // crear servo objeto de controlar un servoint potpin = 0- // pin analógico utilizado para conectar el potenciómetroint va- // 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 entrada y 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 es luego procesada usando el mapa función escalar su gama a la de la servo: 0 a 179.
Este valor se escribe en el servo usando myservo.write. También hay un retardo 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 1.023) 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 según // el valor escaladoretraso(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.