// Este programa controla a rotação do eixo de um servo-motor em função da rotação do cursor de um potenciómetro
// Inclusão da biblioteca do servo-motor
// A inclusão desta biblioteca é essencial, pois contém as funções necessárias para utilizar o servo-motor
#include <Servo.h>
#define Button_Plus 4
#define Button_Minus 7
// Variável para registar o ângulo da posição do eixo do servo-motor
int angle = 0;
// Variáveis criadas para guardar o estado do LED (1 para ON ou 0 para OFF)
int currentButtonPlusState;
int currentButtonMinusState;
// Declaração do objeto do servo-motor
// É necessário para cada servo-motor que estiver no circuito
// Neste caso, o nome do objeto é "myservo"
Servo myservo;
void setup() {
// Colocar o código de setup aqui, para correr uma vez:
// Indica que o pino onde está ligado o botão está configurado como pino de entrada ('INPUT')
pinMode(Button_Plus, INPUT);
pinMode(Button_Minus, INPUT);
// Indicação de que o servo-motor está conectado no pino digital 3
// Importante referir que este pino tem PWM, funcionalidade necessária para utilizar o servo-motor
myservo.attach(3);
Serial.begin(9600);
// Termina a função 'setup'
}
void loop() {
// Colocar o código principal aqui, para correr repetidamente (num 'loop'):
// Ler o pino digital onde está ligado o botão e guardar a valor do estado na variável 'currentButtonState'
currentButtonState = digitalRead(Button);
// Se o botão+ for pressionado (if) ...
if(currentButtonState == HIGH && angle < 180){
// ... Incrementar o valor da variável 'angle'
angle++;
}
// Caso contrário (else) ...
else{
// ... Simplesmente mantém o valor
}
// Se o botão- for pressionado (if) ...
if(currentButtonState == HIGH && angle > 0){
// ... Decrementar o valor da variável 'angle'
angle--;
}
// Caso contrário (else) ...
else{
// ... Simplesmente mantém o valor
}
// Escrita no servo-motor da posição do eixo do servo-motor para a qual se pretende que ele rode
// Valor entre 0 e 180º
myservo.write(angle);
Serial.print("Ângulo do servo-motor: ");
Serial.println(angle);
delay(15);
// Termina a função 'loop'
}