#include <Ultrasonic.h>
#include "NOTES.h"
#define PIN_BUZZER 8
#define PIN_PIR 10
#define PIN_ECHO 11
#define PIN_TRIG 12
#define PIN_LED_RED 3
#define PIN_LED_GREEN 4
#define PIN_BOTAO 6
#define PIN_MOSFET 9
bool estadoBotao = false; // Estado do botão (pressionado ou não)
bool estadoAmbiente = false; // Estado do ambiente (ocupado ou desocupado)
bool PIR, BOT, BOT_ESTADO;
float distancia;
Ultrasonic ultrasonic(PIN_TRIG, PIN_ECHO);
void setup() {
Serial.begin(9600);
pinMode(PIN_LED_GREEN, OUTPUT);
pinMode(PIN_LED_RED, OUTPUT);
pinMode(PIN_BOTAO, INPUT);
pinMode(PIN_PIR, INPUT);
pinMode(PIN_BUZZER, INPUT);
pinMode(PIN_MOSFET, OUTPUT);
digitalWrite(PIN_MOSFET, LOW);
}
void loop() {
PIR = digitalRead(PIN_PIR);
BOT = digitalRead(PIN_BOTAO);
BOT_ESTADO = digitalRead(PIN_BOTAO) == HIGH;
distancia = ultrasonic.read();
if(PIR){
MOTOR();
}
if(distancia > 100){
MOTOR();
}
BOTAO1();
}
void REGISTRO() {
Serial.print("CM = ");
Serial.println(distancia);
}
void BOTAO1(){
if (BOT_ESTADO != estadoBotao){
estadoBotao = BOT_ESTADO;
if (estadoBotao){
estadoAmbiente = !estadoAmbiente;
delay(200);
}
}
if (estadoAmbiente){
digitalWrite(PIN_LED_RED, HIGH);
digitalWrite(PIN_LED_GREEN, LOW);
}else{
digitalWrite(PIN_LED_RED, LOW);
digitalWrite(PIN_LED_GREEN, HIGH);
}
}
void BOTAO2(){
if(BOT){
digitalWrite(PIN_LED_GREEN , LOW);
digitalWrite(PIN_LED_RED , HIGH);
}else{
digitalWrite(PIN_LED_RED , LOW);
digitalWrite(PIN_LED_GREEN , HIGH);
}
}
void MOTOR(){
digitalWrite(PIN_MOSFET, HIGH);
delay(500);
digitalWrite(PIN_MOSFET, LOW);
}