EMPEZAMOS A PROGRAMAR SERVOS PARA CREAR UNA GRÚA O GRAZO ROBÓTICO QUE FUNCIONE A VOLUNDAD.
Antes hemos visto cómo controlar un servomotor tanto en grados como en velocidad, recordais?
// Incluímos la librería para poder controlar el servo
#include <Servo.h> // Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
}
void loop() {
// Desplazamos a la posición 0º
servoMotor.write(0);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 90º
servoMotor.write(90);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 180º
servoMotor.write(180);
// Esperamos 1 segundo
delay(1000);
}
otra opción me permitía moverlo despacio o rápido:
// Incluímos la librería para poder controlar el servo
#include <Servo.h>
// Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
// Inicializamos al ángulo 0 el servomotor
servoMotor.write(0);
}
void loop() {
// Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
// Para el sentido positivo
for (int i = 0; i <= 180; i++)
{
// Desplazamos al ángulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}
// Para el sentido negativo
for (int i = 179; i > 0; i--)
{
// Desplazamos al ángulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}
}
Ahora vamos a hacerlo un paso más allá:
LO VAMOS A MOVER EN TIEMPO REAL
#include <Servo.h>
Servo Servo; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot = 0; //El pin análogo donde va conectado el Potenciómetro
int val; //El valor a leer por el puerto análogo
int val; //El valor a leer por el puerto análogo
void setup()
{
Servo.attach(9); //El pin al cual conectaremos nuestro Servo
}
{
Servo.attach(9); //El pin al cual conectaremos nuestro Servo
}
void loop()
{
val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
Servo.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}
{
val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
Servo.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}
No hay comentarios:
Publicar un comentario