#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Pin definitions
#define ONE_WIRE_BUS 2
#define TRIG_PIN 9
#define ECHO_PIN 10
// Set up a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Start serial communication for debugging
Serial.begin(9600);
// Initialize the LCD
lcd.begin(16, 2); // Menambahkan argumen jumlah kolom dan baris
lcd.backlight();
// Initialize the temperature sensor
sensors.begin();
// Initialize the pins for the ultrasonic sensor
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
// Get the temperature
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
// Get the distance
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
// Display the results on the LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Level: ");
lcd.print(distance);
lcd.print(" cm");
// Print the results to the Serial Monitor (for debugging)
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
Serial.print("Water Level: ");
Serial.print(distance);
Serial.println(" cm");
// Wait a second before the next loop
delay(1000);
}