#include <WiFi.h>
#include <HTTPClient.h>
#include <NewPing.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* googleScript = "https://script.google.com/macros/s/AKfycbx0ei0OJ8aRcmg8P1FncSbForDZswxB4fTDPn_faS6o0Xu3Schotkh-hVKNgcq3TTT_aQ/exec";
const int trigPin = 5;
const int echoPin = 18;
const int buzzerPin = 19;
const int maxDistance = 200; // Jarak maksimum dalam cm
NewPing sonar(trigPin, echoPin, maxDistance);
float distance = 0;
void setup() {
Serial.begin(115200);
pinMode(buzzerPin, OUTPUT);
WiFi.begin(ssid, password);
int wifiAttempts = 0;
while (WiFi.status() != WL_CONNECTED && wifiAttempts < 20) {
delay(1000);
Serial.println("Menghubungkan ke WiFi...");
wifiAttempts++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Terhubung ke WiFi");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("Gagal terhubung ke WiFi. Melanjutkan tanpa koneksi internet.");
}
}
void loop() {
distance = sonar.ping_cm();
String level;
if (distance >= 1 && distance <= 29) {
level = "Bahaya";
digitalWrite(buzzerPin, HIGH); // Aktifkan buzzer
} else if (distance >= 30 && distance <= 59) {
level = "Siaga";
digitalWrite(buzzerPin, LOW); // Matikan buzzer
} else if (distance >= 60 && distance <= 80) {
level = "Waspada";
digitalWrite(buzzerPin, LOW); // Matikan buzzer
} else {
level = "Aman";
digitalWrite(buzzerPin, LOW); // Matikan buzzer
}
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(googleScript) + "?distance=" + String(distance) + "&level=" + level;
Serial.println("Mengirim data ke: " + url);
http.begin(url);
http.setTimeout(10000); // Atur timeout ke 10 detik
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.println("HTTP Response code: " + String(httpCode));
Serial.println("Response: " + payload);
} else {
Serial.println("Error on HTTP request. Error code: " + String(httpCode));
}
http.end();
} else {
Serial.println("Tidak terhubung ke WiFi. Tidak dapat mengirim data.");
}
Serial.print("Jarak: ");
Serial.print(distance);
Serial.print(" cm, Level: ");
Serial.println(level);
delay(5000); // Tunggu 5 detik sebelum pengukuran berikutnya
}