l código para girar el motor de 0º a 180º
Esta acción ya nos ha hecho un include en nuestro código que nos permite controlar el servo. Os dejo a continuación un código
básico para posicionar el servo en los ángulos 0º, 90º y 180º.
1 /*
2 Creado: Luis del Valle (ldelvalleh@[Link])
3 [Link]
4 */
6 // Incluímos la librería para poder controlar el servo
7 #include <Servo.h>
9 // Declaramos la variable para controlar el servo
10 Servo servoMotor;
11
12 void setup() {
13 // Iniciamos el monitor serie para mostrar el resultado
14 [Link](9600);
15
16 // Iniciamos el servo para que empiece a trabajar con el pin 9
17 [Link](9);
18 }
19
20 void loop() {
21
22 // Desplazamos a la posición 0º
23 [Link](0);
24 // Esperamos 1 segundo
25 delay(1000);
26
27 // Desplazamos a la posición 90º
28 [Link](90);
29 // Esperamos 1 segundo
30 delay(1000);
31
32 // Desplazamos a la posición 180º
33 [Link](180);
34 // Esperamos 1 segundo
35 delay(1000);
36 }
De la librería Servo.h hemos declarado un objeto o variable servoMotor y hacemos uso de dos métodos. Por un lado el attach, que
nos permite indicar en que pin tenemos conectado nuestro servo, y por otro lado el write, donde indicamos en qué ángulo
queremos posicionar nuestro servomotor.
Girando grado a grado el servomotor
Vamos a realizar otro ejemplo un poco más complicado, en este caso queremos que el servo haga un barrido desde el 0 al 180º y
luego en sentido contrario. Vamos a utilizar los mismos métodos pero incorporamos dos bucles for, uno para cada sentido.
1 /*
2 Creado: Luis del Valle (ldelvalleh@[Link])
3 [Link]
4 */
6 // Incluímos la librería para poder controlar el servo
7 #include <Servo.h>
9 // Declaramos la variable para controlar el servo
10 Servo servoMotor;
11
12 void setup() {
13 // Iniciamos el monitor serie para mostrar el resultado
14 [Link](9600);
15
16 // Iniciamos el servo para que empiece a trabajar con el pin 9
17 [Link](9);
18
19 // Inicializamos al ángulo 0 el servomotor
20 [Link](0);
21 }
22
23 void loop() {
24
25 // Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
26 // Para el sentido positivo
for (int i = 0; i <= 180; i++)
// Desplazamos al ángulo correspondiente
[Link](i);
// Hacemos una pausa de 25ms
delay(25);
// Para el sentido negativo
27 for (int i = 179; i > 0; i--)
28 {
29 // Desplazamos al ángulo correspondiente
30 [Link](i);
31 // Hacemos una pausa de 25ms
32 delay(25);
33 }
34 }
35
36
37
38
39
40
41
42
43
CONTROL DE UN SERVOMOTOR POR ÁNGULO:
PARA ESTO REALIZAREMOS LAS SIGUIENTES CONEXIONES:
*La alimentación del motor puede ser la misma que el Arduino
siempre y cuando la fuente soporte la potencia del servo y sea de 5V.
Los 5V del USB solo soporta un servo SG90, más servos o de otro tipo
se necesita usar una fuente externa.
Luego de realizar las conexiones procederemos a cargar("subir") el
siguiente programa:
//LIBRARIES:
#include <Servo.h>
Servo myservo; //creamos un objeto servo
int angulo;
void setup(){
[Link](3); // asignamos el pin 3 al servo.
[Link](9600); // iniciamos el puerto serial
}
void loop() {
angulo= 0;
[Link](angulo);
[Link]("ángulo: ");
[Link](angulo);
delay(2000);
angulo= 90;
[Link](angulo);
[Link]("ángulo: ");
[Link](angulo);
delay(2000);
angulo= 180;
[Link](angulo);
[Link]("ángulo: ");
[Link](angulo);
delay(2000);
angulo= 90;
[Link](angulo);
[Link]("ángulo: ");
[Link](angulo);
delay(2000);
}
2. Control de un servomotor a través de un potenciómetro:
En este ejemplo controlaremos la posición del servo por medio de un
potenciómetro, donde el servo se posicionará en función de la
posición del potenciómetro.
#include <Servo.h>
Servo myservo; //creamos un objeto servo
void setup() {
[Link](3); // asignamos el pin 3 al servo.
[Link](9600);
}
void loop() {
int adc = analogRead(A0); // realizamos la lectura del
potenciometro
int angulo = map(adc, 0, 1023, 0, 180); // escalamos la
lectura a un valor entre 0 y 180
[Link](angulo); // enviamos el valor escalado al servo
[Link]("ángulo: ");
[Link](angulo);
delay(10);
}
Como se observa en el código, básicamente se hace la lectura del
potenciómetro y se lo escala entre valores de 0° y 180° para después
enviarlo al servomotor.
Una vez cargado el programa el servo debe moverse cada vez que
movemos le potenciómetro, y si abrimos el Monitor Serie de
Arduino IDE debería mostrar el ángulo del servomotor.
GIRANDO GRADO A GRADO NUESTRO SERVOMOTOR
SI LO QUE PRETENDEMOS ES QUE NUESTRO SERVO HAGA UN BARRIDO DESDE 0 A
180º Y VICEVERSA, PODEMOS CONSEGUIRLO UTILIZANDO DOS BUCLES FOR:
#include "Servo.h" // librería para poder controlar el servo
Servo servoMotor; // Crea un objeto servo llamado servoMotor
void setup(){
[Link](9600);
// Asociamos el servo a la patilla 2 del Arduino
[Link](2);
[Link](0); // Inicializamos al ángulo 0 el
servomotor
void loop(){
// giro de 0 a 180º
for (int i = 0; i <= 180; i++){
[Link](i);
[Link]("Angulo: ");
[Link](i);
delay(30);
// giro de 180 a 0º
for (int i = 179; i > 0; i--){
[Link](i);
[Link]("Angulo: ");
[Link](i);
delay(30);