¿Cómo controlar un Servo usando Arduino?
La idea es que conectamos un potenciómetro a la tarjeta y un Servo. El trabajo del potenciómetro es controlar la posición del Servo a medida que lo rotamos.
El potenciómetro está conectado al pin análogo 0 (A0) en la tarjeta, éste leerá el valor (valor el cual va de 0 a 1023) y lo traducirá en grados para controlar el Servo.
Ahora, ¿cómo funciona una lectura análoga?
El Servo necesita +5V para funcionar, el potenciómetro tiene tres pines el de la izquierda esta conectado a +5V el derecho a tierra y por último el central va al pin análogo 0 (A0). La manera que en traducimos el voltaje en posición es de esta manera. Ya sabiendo que el valor de cualquier sensor análogo va de 0 a 1023 y que el voltaje de salida es +5V lo que se hace es que dividimos esos 5 voltios en 1023 partes iguales, de manera que el pin análogo lee los valores de 0 a 1023, el código que cargamos en la tarjeta traduce esos valores de 0 a 1023 en grados (0° a 180°), ésta señal es luego enviada al pin 9 el cual tiene capacidad de PWM y envía esa señal regulada al microcontrolador del Servo la cual hace mover el Servo de derecha a izquierda.
Necesitaremos:
- Arduino.
- Protoboard.
- Un potenciómetro de 100k Ohm.
- Un Servo standard de 180° 0 incluso de rotación continua (360°) y jugar con los valores del código para mover el Servo cuántos grados queramos y en la dirección que queramos.
- Cables.
/* CODIGO SERVO 002 */
#include <Servo.h>
Servo miServo; // create servo object to control a servo
int angulo=90;
void setup()
{
miServo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
}
void loop()
{
unsigned char comando=0;
if(Serial.available())
{
comando=Serial.read();
if(comando=='a') angulo+=10;
else if(comando=='z') angulo-=10;
angulo=constrain(angulo,0,180);
}
miServo.write(angulo);
Serial.print("Angulo: ");
Serial.println(angulo);
delay(100);
}
No hay comentarios:
Publicar un comentario