Aprendendo a controlar um servo motor
Nesse projeto, falarei um pouco sobre os servos, e mostrar seu funcionando. Os servos motores são usados em várias aplicações quando se deseja movimentar algo de forma precisa e controlada. Para isso, deve-se seguir as recomendações de seu datasheet, para não danificá-lo e usá-lo de forma adequada.
Micro servo 9g
Fonte: CFB Cursos
Nessas imagens, está sendo apresentado o servo motor 9g e suas especificações, levando em conta esses dados, já podemos brincar um pouco com nossos servos. Para isso, siga as recomendações abaixo:
Material de apoio:
Componentes:
- 1 Arduino
- 1 Protoboard
- Servo motor 9g
- 1 Potenciômetro
- 1 suporte para pilhas AA
- 4 Pilhas AA
- Fios Jumpers
Esquemático:
Fonte: Própria Autora
Exemplo 1: Servo controlado com potenciômetro
O servo será controlado com um potenciômetro, de acordo com as posições do potenciômetro, o servo irá rotacionar de 0º à 180º.
Código:
#include <Servo.h>
#define pot A0 //Potenciômetro
Servo s1; //Servo
int angS1; //Ângulo do servo
int a;
void setup() {
s1.attach(2); //Porta de controle que o serve está ligado
angS1=0; //Inicializa em 0
s1.write(angS1); //0 a 180
Serial.begin(9600);
}
void loop() {
angS1=map(analogRead(pot),0,1023,0,180);
s1.write(angS1);
delay(100);
}
Exemplo 2: Servo Automático
O servo está funcionando de forma automática, sua rotação varia de 0º à 180º, apos isso, reinicia o processo.
Código:
#include <Servo.h>
#define pot A0 //Potenciômetro
Servo s1; //Servo
int angS1; //Ângulo do servo
void setup() {
s1.attach(2); //Porta de controle que o serve está ligado
angS1=0; //Inicializa em 0
s1.write(angS1); //0 a 180
Serial.begin(9600);
}
void loop() {
angS1=0;
s1.write(angS1);
delay(3000);
angS1=90;
s1.write(angS1);
delay(3000);
angS1=180;
s1.write(angS1);
delay(3000);
}
Exemplo 3: Servo com leitura de posição e monitor serial
O monitor serial, mostrará as posições de atuação do servo, há uma leitura de posição de de 0º , 90º e 180º a cada 3 segundos.
Código:
#include <Servo.h>
#define pot A0 //Potenciômetro
Servo s1; //Servo
int angS1; //Ângulo do servo
int a;
void setup() {
s1.attach(2); //Porta de controle que o serve está ligado
angS1=0; //Inicializa em 0
s1.write(angS1); //0 a 180
Serial.begin(9600);
}
void loop() {
angS1=0;
s1.write(angS1);
a = s1.read();
Serial.println(a);
delay(3000);
angS1=90;
s1.write(angS1);
a = s1.read();
Serial.println(a);
delay(3000);
angS1=180;
s1.write(angS1);
a = s1.read();
Serial.println(a);
delay(3000);
}