//Aluna: Nicolle Victoria Guedes Alves
//Turma: IPI 3
//Codigo: adicionando o abrir e fechar mais suave
// aqui eu estou utilizando dois led um vermelho e outro verde, o objetivo é que inicialmente o led vermelho esteja ligado, mas ao passar uns segundo a cancela se mova lentamente e mude a cor do led para verde.
#include <Servo.h> //importando a biblioteca
Servo myServo;
#define buttonPin 2 // Pino do botão
#define servoPin 3 // Pino do servo
#define redLedPin 4 // led vermelho
#define greenLedPin 5 // led verde
void setup() {
//Configuração dos pinos
pinMode(buttonPin, INPUT_PULLUP); //Define o pino do botão como entrada com pull-up interno
pinMode(redLedPin, OUTPUT); //Define o pino do LED vermelho como saída
pinMode(greenLedPin, OUTPUT); //Define o pino do LED verde como saída
// Aqui vai meio que associar o myservo ao pino de controle
myServo.attach(servoPin);
// o servo na posição inicial 180°
myServo.write(180);
//Aqui Acende o LED vermelho
digitalWrite(redLedPin, HIGH);
//Aqui Apaga o LED verde
digitalWrite(greenLedPin, LOW);
}
void openGate() {
//Aqui vamos implementar um Laço for para movimentar o servo de 180° até 90°, podemos alterar as posições oes de acordo com a nossa vontade
for (int pos = 180; pos >= 90; pos -= 1) {
//a posição no servo
myServo.write(pos);
//Aqui é onde vamos colocar Atraso para suavizar o movimento
delay(30);
}
}
void closeGate() {
//Aqui novamente um Laço para movimentar o servo de 90° até 180°
for (int pos = 90; pos <= 180; pos += 1) {
// a posição no servo
myServo.write(pos);
// O Atraso para suavizar o movimento que vamos definir
delay(30);
}
}
void loop() {
//Aqui vai ocorrer a Confirmação se o botão foi pressionado
if (digitalRead(buttonPin) == LOW) {
//Apaga LED vermelho
digitalWrite(redLedPin, LOW);
//Acende LED verde
digitalWrite(greenLedPin, HIGH);
//Aqui vai Chamar função para abrir portão
openGate();
//Aqui vai implementar o Atraso pra manter portão aberto
delay(2000);
//Aqui Chama função para fechar portão
closeGate();
//Apaga LED verde
digitalWrite(greenLedPin, LOW);
//Acende LED vermelho
digitalWrite(redLedPin, HIGH);
}
//O atraso implementado Atraso para não sobrecarregar o loop
delay(100);
}