#include <LiquidCrystal.h>
#define LED 1
#define RED_PIN 2
#define GREEN_PIN 3
#define BLUE_PIN 4
#define BUZZER_PIN1 6
#define BUZZER_PIN2 5
#define NTC_PIN 7 // Sesuaikan dengan pin yang digunakan untuk sensor NTC
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
bool isLedOn = false; // Menyimpan status LED
// Konfigurasi sensor NTC
const int NTC_REFERENCE_RESISTANCE = 10000; // Resistansi NTC pada suhu referensi (misalnya 25°C)
const int NTC_REFERENCE_TEMPERATURE = 25; // Suhu referensi dalam Celsius
const int NTC_SERIES_RESISTOR = 10000; // Resistansi resistor seri yang digunakan
void setup() {
lcd.begin(16, 2);
lcd.print("HELLO!");
pinMode(LED, OUTPUT);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUZZER_PIN1, OUTPUT);
pinMode(BUZZER_PIN2, OUTPUT);
}
void playTone(int frequency, int duration) {
tone(BUZZER_PIN1, frequency, duration);
tone(BUZZER_PIN2, frequency, duration);
delay(duration);
}
// Fungsi untuk mengukur suhu dari sensor NTC
float readTemperature() {
int rawADC = analogRead(NTC_PIN);
float voltage = (float)rawADC / 1023.0 * 5.0; // Konversi ke tegangan
float resistance = (NTC_REFERENCE_RESISTANCE * voltage) / (5.0 - voltage); // Menghitung resistansi NTC
float steinhart;
steinhart = resistance / NTC_SERIES_RESISTOR; // Hitung nilai R/Ro
steinhart = log(steinhart); // Menghitung ln(R/Ro)
steinhart /= 3950.0; // Divide by the Beta value
steinhart += 1.0 / (NTC_REFERENCE_TEMPERATURE + 273.15); // Add 1/T0
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // Konversi ke Celsius
return steinhart;
}
void loop() {
// Membaca suhu dari sensor NTC
float temperature = readTemperature();
if (temperature > 30.0) {
if (!isLedOn) {
// Menyalakan LED dan sensor RGB LED menjadi hijau
digitalWrite(LED, HIGH); // Menyalakan LED
digitalWrite(RED_PIN, LOW); // Merah OFF
digitalWrite(GREEN_PIN, HIGH); // Hijau ON
digitalWrite(BLUE_PIN, LOW); // Biru OFF
playTone(500, 1000); // Frekuensi 500 Hz, durasi 1000 ms
playTone(1000, 1000); // Frekuensi 1000 Hz, durasi 1000 ms
lcd.setCursor(0, 0);
lcd.print("Green ");
lcd.setCursor(0, 1);
lcd.print("LED ON ");
isLedOn = true;
}
} else {
// Mematikan LED dan sensor RGB LED
digitalWrite(LED, LOW); // Mematikan LED
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
noTone(BUZZER_PIN1); // Mematikan suara pada BUZZER_PIN1
noTone(BUZZER_PIN2); // Mematikan suara pada BUZZER_PIN2
lcd.setCursor(0, 0);
lcd.print(" "); // Menghapus pesan di baris pertama
lcd.setCursor(0, 1);
lcd.print("LED OFF");
isLedOn = false;
}
delay(5000); // Tunggu selama 5 detik sebelum beralih kondisi
}