Descrición:

[tecnoloxia.org, CC BY-SA]
Montaxe:
Conexión: Aínda que depende de cada fabricante, en xeral o cable vermello vai a 5V, o negro/marrón a terra (GND) e o branco/amarelo/laranxa é o que recibe o sinal do pin arduino. Imos conectalo ao pin 9.
![]() |
![]() |
Control da posición:
A posición do servo contrólase a través do envío de pulsos en anchura (PWM). Segundo a duración do pulso obtemos diferentes posicións do eixe do servo. Porén, dependendo do servo que se utilice e do ciclo útil do mesmo podemos necesitar realizar cálculos para axustar a posición.
Programación:
| #include <Servo.h> | Inclúe a librería “servo” para poder utilizar as funcións que contén. Sketch -> Importar Libraría -> Servo |
| Servo meuservo; | Crea unha variable co nome do servo |
| meuservo.attach(Pin); | Indica en que pin está conectado o servo. |
| meuservo.write(ángulo); | Sitúa o eixe do servo na posición indicada. |
Programas:
1. Xirar un ángulo
1. Xirar un ángulo determinado: Podemos controlar exactamente a posición (ángulo) que queremos que teña o servo en cada momento
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Importamos a librería servo #include <Servo.h> // Declaración de variables: Servo meuservo; // poñémoslle nome ao servo: "meuservo" // Configuración: void setup(){ meuservo.attach(6); // Indicamos que está conectado no pin 6 } // Programa: void loop(){ meuservo.write(0); // Móvese ata a posición de 0º delay (2000); meuservo.write(180); // Móvese ata a posición de 180º delay (2000); meuservo.write(90); // Móvese ata a posición de 90º delay (2000); } |
Simulación: Neste programa engadimos o acendido dun LED para cada posición.
2. Golpes
2. Golpes: Imos facer que un servo xire lentamente ata unha posición e despois, cambie rapidamente á posición de partida.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <Servo.h> // Importamos a librería servo // Declaración de variables: Servo meuservo; // poñémoslle nome ao servo: "meuservo" // Configuración: void setup(){ meuservo.attach(6); // Indicamos que está conectado no pin 6 } // Programa: void loop(){ meuservo.write(0); // Parte da posición de 0º delay (2000); for(int i=1;i<=120;i++){ // Móvese pouco a pouco ata 120º meuservo.write(i); delay (50); } delay (1000); } |
3. Control con pulsadores
3. Control con pulsadores: imos facer que cada vez que prememos nun pulsador o servo se mova ata a posición correspondente a cada un deles.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <Servo.h> // Importamos a librería servo // Declaración de variables: int pulsador0 = 2; // Pin 2 asignado a un pulsador int pulsador180 = 3; // Pin 3 asignado a outro pulsador Servo meuservo; // Poñémoslle nome ao servo // Configuración: void setup() { meuservo.attach(6); // Servo conectado no pin 6 } // Programa: void loop() { if (digitalRead(pulsador0) == 1){ // Se o pulsador0 esta premido meuservo.write(0); // O servo xira ata a posición 0º delay (500); } if (digitalRead(pulsador180) == 1){ // Se o pulsador180 esta premido meuservo.write(180); // O servo xira ata a posición 180º delay (500); } } |
Propostas:
- Ao chou: Fai un programa de xeito que o servo xire a distintas posicións elixidas ao chou. Utiliza a función random. Por exemplo:
123chou=random(0,180); // dá un valor ao aleatorio entre 0 e 180. - Cal é a súa posición?: Engade o necesario aos programas anteriores para visualizar na consola a posición na que se atopa o servo.
- Pouco a pouco: Fai un programa que funcione de xeito que cando prememos nun pulsador o servo xira 10º nun sentido e cando prememos noutro pulsador xira 10º en sentido contrario. Introduce os límites de 0 e 180º.
- Orientación automática. Fai unha placa solar que se oriente automaticamente cara onde maior sexa a luminosidade. Utiliza dúas fotorresistencias para medir a luz nos laterais. Un servo fará xirar a placa no sentido axeitado ata que a luz incidente sexa a mesma nas dúas LDRs (ou nun rango próximo).


