#include <ESP32Servo.h>
#define RAIN 16
#define EMERGENCY_BTN 12
#define SERVO 18
#define BUZZER 15
int stateEmergency = 0;
int rainState = 0;
Servo serv;
namespace JEMURAN {
void init() {
Serial.begin(9600);
pinMode(RAIN, INPUT);
pinMode(EMERGENCY_BTN, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT);
serv.attach(SERVO);
}
void setBuzzer(int hertz, int isTone) {
if (isTone) {
tone(BUZZER, hertz);
} else {
noTone(BUZZER);
}
}
void touchEmergency() {
const int emergencyButton = digitalRead(EMERGENCY_BTN);
if (!emergencyButton) {
stateEmergency = !stateEmergency;
rainState = 1;
}
}
void detectRain() {
const int rainSens = digitalRead(RAIN);
if (!rainSens || stateEmergency) {
rainState = 1;
} else {
rainState = 0;
}
}
void main() {
touchEmergency();
detectRain();
if(rainState) {
Serial.println("Rain detected!");
serv.write(90);
setBuzzer(250, 1);
} else {
Serial.println("Rain not detected!");
serv.write(0);
setBuzzer(0, 0);
}
Serial.println(serv.read());
}
}
void setup() {
JEMURAN::init();
}
void loop() {
JEMURAN::main();
delay(100);
// serv.write(90);
// delay(1000);
// serv.write(0);
// delay(1000);
}