#include <LiquidCrystal_I2C.h>
#define ADC_VREF_mV 5000.0 // in millivolt
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A0
// Library untuk LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin sensor suhu LM35
const int lm35Pin = A0;
// Pin-button
const int buttonPins[] = {2, 3, 4, 5, 6, 7, 8};
const int numButtons = 7;
// Pin LED
const int ledPins[] = {9, 10, 11, 12};
const int numLEDs = 4;
// Pin Buzzer
const int buzzerPins[] = {13, A1};
const int numBuzzers = 2;
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(9600);
// Inisialisasi LCD
lcd.begin(16, 2);
// Setup pin-button sebagai input
for (int i = 0; i < numButtons; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
// Setup pin-LED sebagai output
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Setup pin-Buzzer sebagai output
for (int i = 0; i < numBuzzers; i++) {
pinMode(buzzerPins[i], OUTPUT);
}
}
void loop() {
// Baca nilai suhu dari sensor LM35
// get the ADC value from the temperature sensor
int adcVal = analogRead(PIN_LM35);
// convert the ADC value to voltage in millivolt
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
// convert the voltage to the temperature in Celsius
float tempC = milliVolt / 10;
// convert the Celsius to Fahrenheit
float tempF = tempC * 9 / 5 + 32;
// Serial.print("Temperature: ");
// Serial.print(tempC);
// Serial.println(" °C");
// Tampilkan nilai suhu di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(tempC);
lcd.print(" C");
delay(200);
if(tempC > 50){
tone(13,200);
delay(200);
noTone(13);
} else{
noTone(13);
noTone(A1);
}
if(tempC > 100){
tone(A1,200);
} else{
noTone(13);
noTone(A1);
}
if(digitalRead(8)==LOW){
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(300);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(7)==LOW){
digitalWrite(9, HIGH);
delay(300);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(300);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(12, LOW);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(6)==LOW){
digitalWrite(9, HIGH);
delay(300);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(10, LOW);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(5)==LOW){
digitalWrite(11, HIGH);
delay(300);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(12, LOW);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(4)==LOW){
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
delay(300);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(3)==LOW){
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(300);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(digitalRead(2)==LOW){
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
delay(300);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(300);
} else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
Serial.println(digitalRead(8));
// Baca status button dan kontrol LED dan Buzzer
}