const int BOTAO_START = 2;
const int BOTAO_STOP = 3;
const int BOTAO_SONECA = 4;
const int BUZZER_PIN = 5;
const int LED_PIN = 6;
volatile bool botao_start_pressionado = false;
volatile bool botao_stop_pressionado = false;
bool alarme_ativado = false;
bool soneca_ativada = false;
unsigned long tempo_inicio_alarme;
//Botão Amarelo = Liga alarme
//Botão Preto = Desliga alarme
//Botão Azul = Aciona Função soneca
void setup() {
pinMode(BOTAO_START, INPUT);
pinMode(BOTAO_STOP, INPUT);
pinMode(BOTAO_SONECA, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(BOTAO_START), pressionarBotaoStart, FALLING);
attachInterrupt(digitalPinToInterrupt(BOTAO_STOP), pressionarBotaoStop, FALLING);
}
void loop() {
if (botao_start_pressionado) {
ativarAlarme();
botao_start_pressionado = false;
}
if (botao_stop_pressionado) {
desativarAlarme();
botao_stop_pressionado = false;
}
if (alarme_ativado && !soneca_ativada && millis() - tempo_inicio_alarme > 30000) {
desativarAlarme(); // Desliga o alarme após 30 segundos se não for desligado manualmente
}
// Verifica se o botão de soneca foi pressionado
if (digitalRead(BOTAO_SONECA) == HIGH && alarme_ativado && !soneca_ativada) {
soneca_ativada = true;
desativarAlarme(); // Desativa o alarme
delay(30000); // Espera 30 segundos antes de reativar o alarme
ativarAlarme(); // Reativa o alarme após a soneca
}
}
void ativarAlarme() {
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 1000); // Emitir som no buzzer
alarme_ativado = true;
tempo_inicio_alarme = millis(); // Marca o tempo de início do alarme
}
void desativarAlarme() {
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN); // Parar de emitir som no buzzer
alarme_ativado = false;
soneca_ativada = false; // Desativa a função soneca
}
void pressionarBotaoStart() {
if (!alarme_ativado) {
botao_start_pressionado = true;
}
}
void pressionarBotaoStop() {
if (alarme_ativado) {
botao_stop_pressionado = true;
}
}