#include <OneWire.h> //Memanggil library OneWire yang diperlukan sebagai dependensi library Dallas Temperature
#include <DallasTemperature.h> // Memanggil library Dallas Temperature
#include <LiquidCrystal_I2C.h> // memanggil library LCD_I2C
#define ONE_WIRE_BUS A0 // Menempatkan PIN hasil pembacaan sensor DS18B20 pada PIN A0.
#define led A1 // deklarasi pin led pada PIN A1
OneWire oneWire(ONE_WIRE_BUS); //Membuat variabel oneWire berdasarkan PIN yang telah didefinisikan
DallasTemperature sensor(&oneWire); //Membuat variabel untuk menyimpan hasil pengukuran
float suhuDS18B20; //deklarasi variable suhu DS18B20 dengan jenis data float
// set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27,20,4);
void setup(void)
{
Serial.begin(9600); //Menginisiasikan setup kecepatan komunikasi
sensor.begin(); //Menginisiasikan sensor One-Wire DS18B20
pinMode(led, OUTPUT); //Menginisialisasi LED sebagai Output
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0); // mengatur letak tulisan
lcd.print("Papan Informasi");
lcd.setCursor(3,1);
lcd.print("Suhu Fermentasi");
lcd.setCursor(8,2);
lcd.print("CACAO");
lcd.setCursor(2,3);
lcd.print("Oleh : Hardianto");
delay(3000);
lcd.clear();
}
void loop(void)
{
sensor.setResolution(9); // Sebelum melakukan pengukuran, atur resolusinya
//sensor.setResolution(10);
//sensor.setResolution(11);
//sensor.setResolution(12);
sensor.requestTemperatures(); // Perintah konversi suhu
suhuDS18B20 = sensor.getTempCByIndex(0); //Membaca data suhu dari sensor #0 dan mengkonversikannya ke nilai Celsius
// suhuDS18B20 = (suhuDS18B20*9/5) + 32;
// suhuDS18B20 = suhuDS18B20 = 273.15;
Serial.println(suhuDS18B20, 1); //Presisi 1 digit (satu angka dibelakang koma)
//Serial.println(suhuDS18B20, 2); //Presisi 2 digit (dua angka dibelakang koma)
//Serial.println(suhuDS18B20, 3); //Presisi 3 digit (tiga angka dibelakang koma)
//Serial.println(suhuDS18B20, 4); //Presisi 4 digit (empat angka dibelakang koma)
Serial.print("Suhu: ");
Serial.print(suhuDS18B20, 2);
Serial.println("C");
//delay(1000); //delay 1 detik (1000 miliseconds)
lcd.init();
lcd.backlight();
if (suhuDS18B20 > 42.0) { //instruksi untuk menyaakan LED saat suhu lebih dari 32 derajat
digitalWrite(led, HIGH);
lcd.setCursor(3,0);
lcd.print("LED ON");
delay(100);
}
else { //instruksi untuk mematikan LED saat suhu kurang dari 42 derajat
digitalWrite(led, LOW);
lcd.setCursor(3,0);
lcd.print("LED OFF");
delay(100);
}
// Menampilkan suhu via LCD
lcd.setCursor(0, 1);
lcd.print("Suhu : ");
lcd.setCursor(0, 2);
lcd.print(suhuDS18B20, 2);
lcd.print((char)223);
lcd.print("C");
}