Upload files to "Kode Program Arduino IDE"

This commit is contained in:
Reza_Anggara_Januarta 2024-07-30 09:55:13 +07:00
commit 42d4015460
1 changed files with 117 additions and 0 deletions

View File

@ -0,0 +1,117 @@
#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "RAJPBS"; // Nama jaringan WiFi Anda
const char* password = "20012003"; // Kata sandi WiFi Anda
const int trigPin = D1; // Pin Trig sensor ultrasonik
const int echoPin = D2; // Pin Echo sensor ultrasonik
const int buzzerPin = D3;
const int rainSensorPin = A0; // Pin sensor hujan analog
long duration;
int distance;
int height;
// Informasi ThingSpeak
const char *thingSpeakAddress = "api.thingspeak.com";
const unsigned long channelID = 2610710; // Masukkan ID saluran ThingSpeak Anda
const char *writeAPIKey = "S7E9ATGV103DCUZO"; // Masukkan Write API Key Anda
WiFiClient client;
void setup() {
Serial.begin(9600); // Memulai komunikasi serial dengan baudrate 9600
pinMode(trigPin, OUTPUT); // Menetapkan trigPin sebagai OUTPUT
pinMode(echoPin, INPUT); // Menetapkan echoPin sebagai INPUT
pinMode(buzzerPin, OUTPUT);
// Menghubungkan ke jaringan WiFi
Serial.print("Menghubungkan ke ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi terhubung");
Serial.println("Alamat IP: ");
Serial.println(WiFi.localIP());
ThingSpeak.begin(client); // Inisialisasi ThingSpeak
}
void loop() {
// Menetapkan trigPin HIGH selama 10 mikrodetik untuk mengirimkan pulsa ultrasonik
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca durasi pulsa dari echoPin
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak dalam cm
distance = duration * 0.034 / 2;
// Mengonversi jarak menjadi ketinggian permukaan air (12 terdekat dan 1 terjauh)
if (distance >= 1 && distance <= 12) {
height = 13 - distance;
Serial.print("Ketinggian permukaan air: ");
Serial.print(height);
Serial.println(" cm");
// Cek kondisi ketinggian air dan tampilkan status
if (height >= 8 && height <= 12) {
digitalWrite(buzzerPin, HIGH);
Serial.println("Status: Bahaya!");
delay(5000);
digitalWrite(buzzerPin, LOW);
} else if (height > 4 && height <= 8) {
Serial.println("Status: Waspada");
digitalWrite(buzzerPin, LOW);
} else if (height > 1 && height <= 4) {
Serial.println("Status: Aman");
digitalWrite(buzzerPin, LOW);
} else {
digitalWrite(buzzerPin, LOW);
Serial.println("Status: Ketinggian air aman");
}
} else {
Serial.println("Jarak di luar rentang yang diharapkan");
digitalWrite(buzzerPin, LOW);
}
int sensorValue = analogRead(rainSensorPin); // Baca nilai analog dari sensor hujan
Serial.print("Nilai Sensor Hujan: ");
Serial.println(sensorValue); // Cetak nilai sensor ke serial monitor
// Logika untuk mendeteksi intensitas hujan
String rainStatus;
if (sensorValue > 900) {
rainStatus = "Tidak ada hujan";
} else if (sensorValue <= 900 && sensorValue > 700) {
rainStatus = "Hujan ringan";
} else if (sensorValue <= 700 && sensorValue > 300) {
rainStatus = "Hujan deras";
} else {
rainStatus = "Hujan sangat deras";
}
Serial.println("Status Hujan: " + rainStatus);
// Kirim data ke ThingSpeak
ThingSpeak.setField(1, height); // Field 1 untuk ketinggian air
ThingSpeak.setField(2, sensorValue); // Field 2 untuk nilai sensor hujan
int httpCode = ThingSpeak.writeFields(channelID, writeAPIKey);
if (httpCode == 200) {
Serial.println("Data berhasil dikirim ke ThingSpeak");
} else {
Serial.print("Masalah saat mengirim data ke ThingSpeak. Kode error HTTP: ");
Serial.println(httpCode);
}
// Menunggu 15 detik sebelum mengirim data lagi
delay(15000);
}