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 yval
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 dedelay
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?