Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 20, 4); // Kalau gagal ganti 0x3F ke 0x27 for a 16 chars and 2 line display
- // sensor diletakkan di pin 2
- #define ONE_WIRE_BUS 2
- // setup sensor
- OneWire oneWire(ONE_WIRE_BUS);
- // berikan nama variabel,masukkan ke pustaka Dallas
- DallasTemperature sensorSuhu(&oneWire);
- float suhuSekarang;
- const int pinBuzzer = 5;
- long millisSuhu;
- int timerVal = 10;
- int timerState = 1;
- //variable pintu
- int sensorInput = 3;
- int S = 10; // count seconds
- long millisPintu;
- int pintuState = 1;
- void setup(void)
- {
- lcd.init(); // initialize the lcd
- lcd.backlight();
- pinMode(pinBuzzer, OUTPUT);
- Serial.begin(9600);
- sensorSuhu.begin();
- pinMode(sensorInput, INPUT_PULLUP); //input sensor pintu
- }
- void loop(void)
- {
- suhuSekarang = ambilSuhu();
- int sensorState = digitalRead(sensorInput);
- Serial.println(suhuSekarang);
- Serial.println(sensorState);
- //delay(1000);
- /*Blok Kulkas*/
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Suhu:");
- lcd.setCursor(6, 0);
- lcd.print(suhuSekarang);
- if(suhuSekarang < 0)
- {
- digitalWrite(pinBuzzer, HIGH);
- lcd.setCursor(0, 1);
- lcd.print("Suhu terlalu rendah");
- }
- else if(suhuSekarang >= 0 && suhuSekarang <= 10)
- {
- lcd.setCursor(0, 1);
- lcd.print("Suhu normal");
- }
- else if(suhuSekarang > 10.00) //jika suhu lebih dari 10 derajat dan lebih dari 10 detik
- {
- if(millis() > millisSuhu + 1000)
- {
- millisSuhu = millis();
- if(timerState == 1)
- {
- timerVal--;
- lcd.setCursor(0, 1);
- lcd.print("Awas Suhu Tinggi.!");
- if(timerVal == 0)
- {
- // digitalWrite(pinBuzzer, HIGH);
- lcd.setCursor(0, 1);
- lcd.print("Suhu tinggi > 30 M");
- delay(100);
- timerState = 0;
- }
- else if(timerVal > 0 && timerVal < 10 && suhuSekarang <= 10.00)
- {
- lcd.setCursor(0, 1);
- lcd.print("Suhu normal");
- timerState = 0;
- timerVal = 10;
- }
- }
- }
- }
- /*Blok pintu*/
- if(sensorState == 0) //jika pintu terbuka dan lebih dari 10 detik
- {
- if(millis() > millisPintu + 1000)
- {
- millisPintu = millis();
- if(pintuState == 1)
- {
- S--;
- lcd.setCursor(0,2);
- lcd.print(S);
- lcd.setCursor(0,3);
- lcd.print("Awas Pintu Terbuka.!");
- if(S == 0)
- {
- lcd.setCursor(0,2);
- lcd.print(S);
- lcd.setCursor(0,3);
- lcd.print("Segera Tutup Pintu.!");
- // alarmConstant();
- pintuState = 0;
- }
- }
- }
- }
- else if(sensorState == 1) //jika pintu tertutup
- {
- lcd.setCursor(0,3);
- lcd.print("Pintu Tertutup.!");
- pintuState = 1;
- S = 10;
- }
- }
- /* Ambil value sensor suhu */
- float ambilSuhu()
- {
- sensorSuhu.requestTemperatures();
- float suhu = sensorSuhu.getTempCByIndex(0);
- return suhu;
- }
- void alarmConstant()
- {
- digitalWrite(pinBuzzer, HIGH);
- }
- void alarmOff()
- {
- digitalWrite(pinBuzzer, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement