const int ntcPin = 15; // Pin ADC untuk NTC
#define ledGreenPin 2 // Pin LED hijau
#define ledRedPin 4 // Pin LED merah
#define buzzerPin 5 // Pin buzzer
void setup() {
Serial.begin(115200);
pinMode(ledGreenPin, OUTPUT);
pinMode(ledRedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
int ntcValue = analogRead(ntcPin); // Membaca nilai NTC
// float voltage = (ntcValue / 4095.0) * 3.3; // Konversi nilai ADC ke tegangan
float resistance = 10000.0 * (4095.0 / ntcValue - 1);
float temperatureC = 1.0 / (1.0 / 298.15 + 1.0 / 3950.0 * log(resistance / 10000.0)) - 273.15;
// float temperatureC = (voltage - 0.5) * 100.0;
Serial.print("Suhu (°C): ");
Serial.println(temperatureC);
if (temperatureC >= 10 && temperatureC <= 15) {
digitalWrite(ledGreenPin, HIGH);
delay(500);
digitalWrite(ledGreenPin, LOW);
delay(500);
noTone(buzzerPin); // Matikan buzzer
} else if (temperatureC > 15 && temperatureC <= 20) {
digitalWrite(ledRedPin, LOW);
delay(500);
digitalWrite(ledRedPin, HIGH);
delay(500);
noTone(buzzerPin); // Matikan buzzer
} else if (temperatureC > 20) {
digitalWrite(ledRedPin, LOW);
delay(500);
digitalWrite(ledRedPin, HIGH);
delay(500);
tone(buzzerPin, 500); // Hidupkan buzzer pada frekuensi 1000 Hz
} else {
digitalWrite(ledGreenPin, LOW);
digitalWrite(ledRedPin, LOW);
noTone(buzzerPin); // Matikan buzzer
}
// if (temperatureC > 20) {
// digitalWrite(ledGreenPin, HIGH);
// delay(500);
// digitalWrite(ledGreenPin, LOW);
// tone(buzzzerPin, 500);
// delay(500);
// } else if (temperatureC >= 16) {
// digitalWrite(ledRedPin, HIGH);
// delay(500);
// digitalWrite(ledGreenPin, LOW);
// noTone(buzzzerPin);
// delay(500);
// } else if (temperatureC >= 10) {
// digitalWrite(ledRedPin, HIGH);
// delay(500);
// digitalWrite(ledGreenPin, LOW);
// noTone(buzzzerPin);
// delay(500);
// } else {
// digitalWrite(ledGreenPin, LOW);
// digitalWrite(ledRedPin, LOW);
// noTone(buzzerPin);
// }
delay(1000); // Membaca dan mengendalikan suhu setiap detik
}