#define BLYNK_TEMPLATE_ID "TMPL6-o0k-KpA"
#define BLYNK_TEMPLATE_NAME "Monitoring Tanaman Hidroponik IoT"
#define BLYNK_AUTH_TOKEN "ZsjRF5HiLfI8FtYnw72r7HehSLWaNx55"
#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 20,4);
#define PIN_TRIG 26
#define PIN_ECHO 25
#define LOWLED 2
#define MIDLED 4
#define HIGHLED 5
#define MOTOR 27
int value1;
int value2;
const int potPin1 =35; // Pin analog potensiometer pertama
const int potPin2 =34; // Pin analog potensiometer kedua
char auth[] = "ZsjRF5HiLfI8FtYnw72r7HehSLWaNx55"; //diisi token blynk
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
unsigned int level = 0;
BlynkTimer timer;
float jarak = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Sistem Monitoring dan Kontroling Kualitas Air pada ikan Mas");
lcd.init ();
lcd.backlight ();
lcd.setCursor (0,0);
lcd.print ("Kelompok 6");
lcd.setCursor (2,1);
lcd.print ("IBNU ABDUL GANI ");
lcd.setCursor (2,2);
lcd.print ("ANDI LESMANA ");
lcd.setCursor (2,3);
lcd.print ("VIDI KURNIA NS ");
pinMode(LOWLED,OUTPUT);
pinMode(MIDLED,OUTPUT);
pinMode(HIGHLED,OUTPUT);
pinMode(MOTOR,OUTPUT);
digitalWrite(LOWLED,HIGH);
digitalWrite(MIDLED,HIGH);
digitalWrite(HIGHLED,HIGH);
digitalWrite(MOTOR,LOW);
Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
Blynk.begin(auth, ssid, pass);
}
void loop() {
value1 = analogRead(potPin1); //Read and save analog value from potentiometer
value1 = map(value1, 0, 4095, 0, 100); //Map value 0-1023 to 0-255 (PWM)
value2 = analogRead(potPin2); //Read and save analog value from potentiometer
value2 = map(value2, 0, 4095, 0, 10); //Map value 0-1023 to 0-255 (PWM)
Serial.print("KEPEKATAN AIR: ");
Serial.print(value1);
Serial.print(" -PH AIR: ");
Serial.print(value2);
lcd.clear();
lcd.setCursor (5,0);
lcd.print ("Kualitas Air");
lcd.setCursor (0,1);
lcd.print ("Kepekatan Air: ");
lcd.setCursor (15,1);
lcd.print (value1 );
lcd.setCursor (0,2);
lcd.print ("PH Air: ");
lcd.setCursor (8,2);
lcd.print (value2 );
lcd.setCursor (0,3);
lcd.print ("Tinggi Air: ");
lcd.setCursor (11,3);
lcd.print (jarak );
lcd.setCursor (17,3);
lcd.print ("cm ");
delay(500);
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
//Menghitung jarak berdasarkan waktu yang diterima
jarak = duration * 0.034 / 2;
Serial.print("Tinggi Air: ");
Serial.print(jarak);
Serial.println(" cm");
level = duration / 58;
if(level < 100)
{
digitalWrite(LOWLED, LOW); // Mematikan LED yang terhubung dengan pin LOWLED
digitalWrite(MOTOR, HIGH); // Menyalakan motor yang terhubung dengan pin MOTOR
digitalWrite(HIGHLED, HIGH); // Menyalakan LED yang terhubung dengan pin HIGHLED
digitalWrite(MIDLED, HIGH); // Menyalakan LED yang terhubung dengan pin MIDLED
}
else if ((level > 200) && (level < 400))
{
digitalWrite(LOWLED, HIGH); // Menyalakan LED yang terhubung dengan pin LOWLED
digitalWrite(HIGHLED, HIGH); // Menyalakan LED yang terhubung dengan pin HIGHLED
digitalWrite(MIDLED, LOW); // Mematikan LED yang terhubung dengan pin MIDLED
}
else if (level >= 400)
{
digitalWrite(HIGHLED, LOW); // Mematikan LED yang terhubung dengan pin HIGHLED
digitalWrite(MIDLED, HIGH); // Menyalakan LED yang terhubung dengan pin MIDLED
digitalWrite(LOWLED, HIGH); // Menyalakan LED yang terhubung dengan pin LOWLED
digitalWrite(MOTOR, LOW); // Mematikan motor yang terhubung dengan pin MOTOR
}
delay(1000);
Blynk.virtualWrite(V0, value1); //mengirim data ke blynk
Blynk.virtualWrite(V1, value2);
Blynk.virtualWrite(V2, jarak);
}