#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD I2C
const int trigPin = 9; // Pin trigger sensor ultrasonik
const int echoPin = 10; // Pin echo sensor ultrasonik
const int ntcPin = A0; // Pin analog untuk sensor NTC
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
}
void loop() {
float temperature_K;
float distance_cm;
// Baca nilai suhu dari sensor NTC
int sensorValue = analogRead(ntcPin);
temperature_K = convertToKelvin(sensorValue); // Konversi nilai sensor ke Kelvin
// Baca nilai jarak dari sensor ultrasonik
distance_cm = measureDistance();
// Tampilkan nilai suhu dan jarak di LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature_K);
lcd.print(" K");
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(distance_cm);
lcd.print(" cm");
delay(1000); // Tunda satu detik sebelum membaca ulang
}
// Fungsi untuk mengukur jarak dengan sensor ultrasonik
float measureDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.0343) / 2; // Hitung jarak dalam cm
return distance;
}
// Fungsi untuk mengonversi nilai sensor NTC menjadi suhu dalam Kelvin
float convertToKelvin(int sensorValue) {
// Sesuaikan dengan karakteristik termistor dan sirkuit pengatur suhu Anda
float resistance = 10000 / ((1023.0 / sensorValue) - 1); // Hitung resistansi
float temperature_K = 273.15 + (1.0 / (log(resistance / 10000) / 3950 + 1 / 298.15)); // Konversi ke Kelvin
return temperature_K;
}