#include <WiFi.h>
#include "ThingSpeak.h"
// Konfigurasi WiFi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2776013; //nomor id channel
const char* myApiKey = "V4MI6WX8F0AESTW2"; //write Api Key
// Konfigurasi Pin Sensor
#define TRIG1 18
#define ECHO1 19
#define TRIG2 21
#define ECHO2 22
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
// Menunggu koneksi WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Wifi belum terhubung");
}
Serial.println("WiFi Tersambung!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
// Konfigurasi Pin
pinMode(TRIG1, OUTPUT);
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT);
pinMode(ECHO2, INPUT);
}
void loop() {
//membaca ketinggian air dari sensor 1
float tinggi1 = bacaKetinggian(TRIG1, ECHO1);
//membaca ketinggian air dari sensor 2
float tinggi2 = bacaKetinggian(TRIG2, ECHO2);
//mengirim data ke thinkspeak
ThingSpeak.setField(1, tinggi1);
ThingSpeak.setField(2, tinggi2);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
Serial.println("Tinggi Air Titik 1: " + String(tinggi1)+ "cm");
Serial.println("Tinggi Air Titik 2: " + String(tinggi2)+ "cm");
if (x == 200) {
Serial.println("Data Terkirim");
} else {
Serial.println("Gagal Mengirim Data, kode error: " + String(x));
}
Serial.println("---");
delay(15000); // Kirim data setiap 15 detik
}
// Fungsi untuk membaca jarak dari sensor ultrasonik
float bacaKetinggian(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration *0.034 / 2; // Mengonversi waktu ke jarak dalam cm
return distance;
}