Servo controlado con entrada

Vamos a intentar utilizar una entrada para controlar el servo. En este ejemplo vamos a utilizar un potenciómetro.

Conecta el Pin central del potenciómetro a la entrada analógica A0. Conecta uno de los otros Pins a 5V y el último Pin a tierra. Conecta un servo estándar al pin D9.

Carga el siguiente código a tu placa Arduino:

#include <Servo.h>

Servo myservo;

int potPin = A0;
int val;

void setup() {
myservo.attach(9);
}

void loop() {
val = analogRead(potPin);
val = map(val, 0, 1023, 0, 179);
myservo.write(val);
delay(15);
}

A este ejemplo le hemos añadido:

  • Dos variables: potpin es el número del pin utilizado para el potenciómetro y val para el valor de lectura desde el potenciómetro.
  • En loop() comenzamos leyendo el valor del potenciómetro.
  • Los valores que leemos del potenciómetro son 0 a 1023 pero necesitamos valores de 0 a 180 para controlar el servo. Para ello, utilizamos la siguiente función:
    map(value, fromLow, fromHigh, toLow, toHigh)

para ajustar los valores al rango que podemos utilizar con el servo. Esto significa que si leemos 1023 del potenciómetro obtendremos 180, si leemos 511 obtendremos 90, etc.

  • Utilizamos una variable (val) para establecer la posición del servo.
  • Utilizamos un pequeño delay para darle tiempo a girar al servo.

¡Sigue experimentando!

  • Cambia el servo estándar con uno de giro continuo. Utiliza el mismo código pero suprime la función delay, cárgalo y vuelve a intentarlo. ¿Cómo actúan los diferentes servos y por qué? Piensa por qué la función de delay es necesaria cuando se controla el servo estándar pero no lo es con el continuo.
  • ¿Qué más puedes utilizar para controlar los servos y qué puedes añadirles para que sean más útiles?