#include "WiFi.h"
#include <HTTPClient.h>
#include <ArduinoJson.h>
static char *ssid = "Wokwi-GUEST";
static char *pass = "";
HTTPClient http;
String Firebase("https://project-5397856331035634927-default-rtdb.asia-southeast1.firebasedatabase.app/");
#define SW1_1 12
#define SW1_0 13
#define AnalogIN1 39
#define AnalogIN2 36
#define SPK 32
byte OUT,Turn = 0;
int JP1, JP2, JP3;
String Message, MessageTMP;
float Level_1_TMP = 0xff,
Level_2_TMP = 0xff;
void SW1_ON() {
OUT = 2; digitalWrite(LED_BUILTIN, 1);
}
void SW1_OFF() {
OUT = 1; digitalWrite(LED_BUILTIN, 0);
}
void Beep(int F,int L) {
for (int i = 0; i <= L; i++) {
digitalWrite(SPK, 1); delayMicroseconds(F);
digitalWrite(SPK, 0); delayMicroseconds(F);
}
}
void setup() {
Serial.begin(115200);
pinMode(SPK, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(SW1_1, INPUT_PULLUP);
pinMode(SW1_0, INPUT_PULLUP);
attachInterrupt(SW1_1, SW1_ON, FALLING);
attachInterrupt(SW1_0, SW1_OFF, FALLING);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
Serial.print("Connecting to WiFi .");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.'); delay(100);
}
Serial.println(WiFi.localIP());
}
void loop() {
byte Level_ = 0;
JsonDocument JP;
if (map(analogRead(AnalogIN1),0,4095,0,100) != Level_1_TMP) {
JP["o1"] = Level_1_TMP = map(analogRead(AnalogIN1),0,4095,0,100);
Level_++;
}
if (map(analogRead(AnalogIN2),0,4095,0,100) != Level_2_TMP) {
JP["o2"] = Level_2_TMP = map(analogRead(AnalogIN2),0,4095,0,100);
Level_++;
}
if (OUT == 1) {
JP["o3"] = 0;
Level_++;
} else if (OUT == 2) {
JP["o3"] = 1;
Level_++;
}
serializeJson(JP, Message);
OUT = 0;
http.begin(Firebase + ".json");
int httpCode;
if (Level_ > 0 && Turn == 0) {
httpCode = http.PATCH(Message);
Level_ = 0;
Turn = 1;
} else {
httpCode = http.GET();
Turn = 0;
}
if (httpCode == 200) {
String Message = http.getString();
if (!MessageTMP.equals(Message)){
MessageTMP = Message;
deserializeJson(JP, Message);
if (JP["o1"] != nullptr) JP1 = JP["o1"];
if (JP["o2"] != nullptr) JP2 = JP["o2"];
if (JP["o3"] != nullptr) JP3 = JP["o3"];
if (JP3 >= 1) {
digitalWrite(LED_BUILTIN, 1);
} else {
digitalWrite(LED_BUILTIN, 0);
}
Beep(1000, 4);
Serial.println(Message);
}
} else {
Serial.println("HTTP ERROR " + String(httpCode));
Beep(2000, 10); Beep(300, 50);
}
}ON
OFF
Level.1
Level.2