/*
* Sketch que grava a posição de um servo e lembra-se dela depois
* 27/11/2024
* Luís Felipe de Macedo e Castro
*/
#include <Servo.h> //Importa a biblioteca do servo
#include <EEPROM.h> //importa a biblioteca da memória
#define Pot A0 //Define o potenciômetro
#define B1 2 //Define o botão 1
#define B2 3 //Define o botão 2
Servo servo; //Define o servo
int ultimaLeitura = 0; // Variável para armazenar a última leitura do botão
int counter = 0; // Variável que alterna entre 0 e 1
void setup() {
// put your setup code here, to run once:
servo.attach(8); //Liga o servo com o pino dele
pinMode(B1, INPUT_PULLUP); //seta o botao 1
pinMode(B2, INPUT_PULLUP); //seta o botao 2
}
void loop() {
// put your main code here, to run repeatedly:
int LidoPot = analogRead(Pot); //Cria a variável com o valor do potenciômetro
byte angulo = map(LidoPot, 0, 1023, 0, 180); //Cria a variável tratando o valor do potenciômetro
int estadoB1 = digitalRead(B1); // Cria a variável lendo o estado do Botão 1
int estadoB2 = digitalRead(B2); // Cria a variável lendo o estado do Botão 2
int valor = EEPROM.read(0); // Cria a variável que lê a posição "0" da memória EEPROM
if (estadoB1 == HIGH && ultimaLeitura == LOW) {
// Altera o valor da variável entre 0 e 1
counter = 1 - counter;
delay(150); // Debouonce
}
ultimaLeitura = estadoB1; // Atualiza a última leitura do Botão 1
if(estadoB2 == LOW){ //Se o Botão 2 for apertado
EEPROM.write(0, angulo);
}
if(counter == 0){ //Se o counter for 0
servo.write(valor);
}
else{ //Qualquer outra coisa
servo.write(angulo);
}
}