Anda di halaman 1dari 4

//**************************************

//Program ini dibuat Oleh Dani Ardianto

//Untuk www.belajarduino.com

//Bagi siapapun yang menggunakanya harap tidak menghapus marking ini

//sebagai bentuk apresiasi atas penggunaan kode ini secara cuma cuma

//didukung oleh www.tokopedia.com/rajacell

//***************************************

#include <OneWire.h>

#include <DallasTemperature.h>

#include <Wire.h> // i2C Conection Library

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16,2); //Ganti 0x3F dengan i2c address LCD anda

//Gunakan i2C Scanner untuk melihat alamat i2C LCD jika anda belum mengetahuinya

uint8_t testChar[8] = {0x4,0xa,0x4,0x0,0x0,0x0,0x0,0x0}; // Custom char degress

// Kabel Signal (data) sensor dihubungkan ke pin D10 Arduino

#define ONE_WIRE_BUS 10

// Setup a oneWire Lib ke Sensor Dallas/Maxim

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

int numberOfDevices; // Var. untuk menyimpan Jumlah Sensor yg ditemukan

DeviceAddress tempDeviceAddress; // Var. untuk menyimpan Sensor Address sementara

void setup(void)

Serial.begin(9600);
lcd.init ();

lcd.backlight();

lcd.createChar(0, testChar); // Sends the custom char to lcd

lcd.setCursor(2,0);

lcd.print(F("Multi Sensor"));

lcd.setCursor(2,1);

lcd.print(F("Temperature"));

delay(2000);

// Start up the library

sensors.begin();

// Menghitung jumlah sensor dalam wire

numberOfDevices = sensors.getDeviceCount();

lcd.setCursor(0,0);

lcd.print(F("Mencari Sensor.."));

delay(100); lcd.setCursor(0,1); lcd.print(F(" "));

for (int i=0; i<=100; i++){

lcd.setCursor(0,1); lcd.print(i); lcd.print('%');delay(50);

delay(1000);

lcd.setCursor(0,0);

lcd.print(F("Menemukan Sensor "));

lcd.setCursor(0,1);

lcd.print(numberOfDevices, DEC);

lcd.print(F(" Sensor "));

delay(2000);

lcd.clear();

for(int i=0;i<numberOfDevices; i++)

// Menngambil alamat masing2 Sensor

if(sensors.getAddress(tempDeviceAddress, i))
lcd.setCursor(0,0);

lcd.print(F("Alamat Sensor "));

lcd.print(i+1); // +1 -> mempermudah hitungan sensor dari 1

delay(1000);

lcd.setCursor(0,1);

for (uint8_t i = 0; i < 8; i++)

if (tempDeviceAddress[i] < 16) lcd.print("0");

lcd.print(tempDeviceAddress[i], HEX); delay (100);

delay(500);

lcd.setCursor(0,1); lcd.print(F(" "));

delay(500);

delay (1000); lcd.clear();

// Fungsi untuk menampilkan suhu pada tiap sensor

void printTemperature(DeviceAddress deviceAddress)

float tempC = sensors.getTempC(deviceAddress);

lcd.setCursor(0,1);

lcd.print(tempC); lcd.print((char)0); lcd.print("C");

lcd.print(" ");

lcd.print(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit

lcd.print((char)0); lcd.print("F");

Serial.print(tempC);

}
void loop(void)

lcd.setCursor(0,0);

// Mengambil data pada setiap sensor secara bergantian

lcd.print(F("Mengambil data..")); delay (100);

sensors.requestTemperatures(); //Mengirim perintah pengambilan data sensor

lcd.setCursor(0,0);

lcd.print(F("Selesai.... ")); delay (500);

for(int i=0; i<numberOfDevices; i++)

if(sensors.getAddress(tempDeviceAddress, i))

lcd.setCursor(0,0);

lcd.print("Temp. Sensor: ");

lcd.print(i+1,DEC); // +1 -> mempermudah hitungan sensor dari 1

printTemperature(tempDeviceAddress);

delay (1500);

lcd.clear();

Anda mungkin juga menyukai