55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#include <OneWire.h>
|
|
#include <DallasTemperature.h>
|
|
#include <LiquidCrystal_I2C.h>
|
|
|
|
const int oneWireBus = 2; // Pin D4 pada NodeMCU untuk sensor suhu DS18B20
|
|
const int turbidityPin = A0; // Pin analog untuk sensor turbidity
|
|
|
|
OneWire oneWire(oneWireBus);
|
|
DallasTemperature sensors(&oneWire);
|
|
|
|
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD 16x2
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
sensors.begin();
|
|
lcd.init();
|
|
lcd.backlight();
|
|
}
|
|
|
|
void loop() {
|
|
// Membaca suhu dalam derajat Celsius
|
|
sensors.requestTemperatures();
|
|
float temperatureC = sensors.getTempCByIndex(0);
|
|
|
|
// Membaca nilai kekeruhan dari sensor turbidity
|
|
int turbidityValue = analogRead(turbidityPin);
|
|
|
|
// Menampilkan hasil ke LCD
|
|
lcd.clear();
|
|
lcd.setCursor(0, 0);
|
|
lcd.print("Suhu: ");
|
|
lcd.print(temperatureC);
|
|
lcd.print(" C");
|
|
|
|
lcd.setCursor(0, 1);
|
|
if (turbidityValue >= 100) {
|
|
lcd.print("Tingkat: Jernih");
|
|
Serial.println("Tingkat kekeruhan: Jernih");
|
|
} else if (turbidityValue >= 100 && turbidityValue < 800) {
|
|
lcd.print("Tingkat: Sedang");
|
|
Serial.println("Tingkat kekeruhan: Sedang");
|
|
} else {
|
|
lcd.print("Tingkat: Kotor");
|
|
Serial.println("Tingkat kekeruhan: Kotor");
|
|
}
|
|
|
|
// Menampilkan nilai kekeruhan dan suhu ke Serial Monitor
|
|
Serial.print("Suhu: ");
|
|
Serial.print(temperatureC);
|
|
Serial.print(" C, Kekeruhan: ");
|
|
Serial.println(turbidityValue);
|
|
|
|
delay(1000); // Delay 1 detik
|
|
}
|