1 ene. 2015

CONTROL DE SERVOMOTOR CON ARDUINO

Con esta práctica vamos a aprender a controlar un servomotor con ARDUINO. Desde el minitutorial "SERVOMOTORES" podéis profundizar en el funcionamiento y tipos de estos motores, así como de la librería estándar "Servo.h" que utilizaremos en los ejemplos que vamos a estudiar a continuación:

Vamos a hacer varios ejemplos para familiarizarnos con los servos y con la librería "Servo.h".

En este primer ejemplo vamos a hacer un sketch para que un servo de 180º gire a intervalos de 30º pausados por un segundo.

Como existen diversos colores en los cables de los motores, os adjunto la siguiente figura para descifrar el significado de cada color según el fabricante:


MATERIAL NECESARIO

1 -  Tarjeta ARDUINO UNO
1 - Cable USB ARDUINO
1 - Placa protoboard.
1 - Microservo DGServo 9g

#include <Servo.h> //Importamos la biblioteca Servo.h

Servo miServo; //Declaramos un servo y se llama miServo

void setup()
{
 //Asociamos el servomotor al pin 9 del Arduino 
 miServo.attach(9);
 }

void loop()
{
//Le mandamos un angulo de 0 grados a nuestro servo
miServo.write(0);
//Hacemos un delay de 1 segundo antes de mandarle la siguiente posicion
delay (1000);
//Escribimos mas posiciones esperando 1 segundo entre una
//posicion y otra
miServo.write(30);
delay (1000);
miServo.write(60);
delay (1000);
miServo.write(90);
delay (1000);
miServo.write(120);
delay (1000);
miServo.write(150);
delay (1000);
miServo.write(180);
delay (1000);
}



En este segundo ejemplo vamos a utilizar un servo de rotación continua y controlaremos su velocidad de giro mediante un potenciómetro.
MATERIAL NECESARIO

1 -  Tarjeta ARDUINO UNO
1 - Cable USB ARDUINO
1 - Placa protoboard.
1 - Potenciómetro de 10K.
1 - Servo DGServo S04NF STD (de rotación continua)


#include <Servo.h> 
int t=10;
Servo SR04;  // servo de rotación continua
int PinLectura=0;
int potentiometro=0;
void setup() 
{
SR04.attach(9);// servo connectado al pin 9
pinMode(A0,INPUT);
}

void loop() 
{
  PinLectura=analogRead(A0);
  delay(t);
  potentiometro=map(PinLectura,0,1023,0,180);
  potentiometro=constrain(potentiometro,0,180);
  SR04.write(potentiometro);
  delay(50);  
}







No hay comentarios:

Publicar un comentario