#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat default untuk LCD I2C
const int LM35_pin = A0; // Pin untuk sensor LM35
const int button1_pin = 2; // Pin untuk tombol 1
const int button2_pin = 3; // Pin untuk tombol 2
const int button3_pin = 4; // Pin untuk tombol 3
const int buzzer_pin = 5; // Pin untuk buzzer
int temperature = 0;
bool isCelsius = true;
bool programActive = false;
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight
pinMode(button1_pin, INPUT);
pinMode(button2_pin, INPUT);
pinMode(button3_pin, INPUT);
pinMode(buzzer_pin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (programActive) {
int button1State = digitalRead(button1_pin);
int button2State = digitalRead(button2_pin);
int button3State = digitalRead(button3_pin);
if (button1State == HIGH && temperature < 60) {
temperature += 10;
delay(200); // Debouncing
}
if (button2State == HIGH && temperature > 0) {
temperature -= 10;
delay(200); // Debouncing
}
if (button3State == HIGH) {
isCelsius = !isCelsius;
delay(200); // Debouncing
}
if (temperature < 10) {
digitalWrite(6, HIGH); // LED 1 menyala
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
} else if (temperature > 50) {
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH); // LED 5 menyala
// Bunyikan buzzer saat suhu > 45 derajat
if (temperature > 50) {
// Bagian lain dari kode
if (temperature >= 45) { // Mengubah kondisi menjadi ">=" agar sesuai dengan kasus >45 derajat
tone(buzzer_pin, 1000); // Mengaktifkan buzzer saat suhu >=45 derajat
} else {
noTone(buzzer_pin); // Mematikan buzzer jika suhu <45 derajat
}
}
} else {
int ledNum = (temperature - 10) / 10; // Hitung nomor LED berdasarkan suhu
for (int i = 6; i <= 10; i++) {
if (i == (ledNum + 6)) {
digitalWrite(i, HIGH); // LED sesuai dengan rentang suhu menyala
} else {
digitalWrite(i, LOW); // Matikan LED lainnya
}
}
noTone(buzzer_pin); // Matikan buzzer jika suhu dalam rentang aman
}
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
if (isCelsius) {
lcd.print(temperature);
lcd.print(" C");
} else {
int tempF = celsiusToFahrenheit(temperature);
lcd.print(tempF);
lcd.print(" F");
}
delay(1000); // Update setiap detik
} else {
// Matikan semua LED dan tampilkan pesan
for (int i = 6; i <= 10; i++) {
digitalWrite(i, LOW);
}
}
// Aktifkan atau nonaktifkan program dengan tombol 3
if (digitalRead(button3_pin) == HIGH) {
programActive = !programActive;
delay(200); // Debouncing
}
if (programActive) {
Serial.print("Suhu: ");
if (isCelsius) {
Serial.print(temperature);
Serial.println(" C");
} else {
int tempF = celsiusToFahrenheit(temperature);
Serial.print(tempF);
Serial.println(" F");
}
}
}
int celsiusToFahrenheit(int celsius) {
return celsius * 9 / 5 + 32;
}