2 Ch Arduino Sensor Suhu DS1820 LM35

Bismillah, jadi ini postingan perdana sy tentang arduino dengan menggunakan 2 sensor suhu yaitu DS1820 dan LM35. Sebenernya hanya sebagai bahan latihan pribadi. Saya posting supaya lebih bermanfaat dan sbg memorizing klo suatu saat butuh tinggal search di blog kan 😀

Semoga bermanfaat 🙂

  • Buka program arduino
Capture
  • Ketikkan script pada pada form yg tersedia
#include<OneWire.h>
#include<Wire.h>
#include<LiquidCrystal.h>

LiquidCrystal lcd(2,3,4,5,6,7);
OneWire ds(10); //on pin 10--DS1820

unsigned int adc,tempDS,tempLM,celcius,fahrenheit;

void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.print("2Ch Sensor Suhu");
lcd.setCursor(0,1);
delay(1000);
}

void loop() {
// put your main code here, to run repeatedly:
byte i;
byte present=0;
byte type_s;
byte data[12];
byte addr[8];
float celsius,fahrenheit;

//===============================

if(!ds.search(addr)){
ds.reset_search();
delay(250);
return;
}
//the first ROM byte indicates which chip switch (addr[0])
switch(addr[0])
{
case 0x10: //chip=DS18s20 or old DS1820
type_s=1;
break;
case 0x28: //chip=DS18B20
type_s=0;
break;
case 0x22: //chip=DS1822
type_s=0;
break;
default: //device is not a DS18x20 family device
return;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); //start conversion,with parasite power on at the end
delay(1000); //maybe 750ms is enough, maybe not
//we might do a ds.power() here, but the reset will take care of it

present=ds.reset();
ds.select(addr);
ds.write(0xBE); //read scratchpad

for(i=0;i<9;i++)
{
data[i]=ds.read();
}

int16_t raw=(data[1]<<8)|data[0];
if(type_s)
{
raw=raw<<3; //9bit resolution default
if(data[7]==0x10)
{
raw=(raw&0xFFF0)+12-data[6];
}
}
else
{
byte cfg=(data[4]&0x60);
if(cfg==0x00)raw=raw&~7; //9 bit resolution, 93.75 ms
else if(cfg==0x20)raw=raw&~3; //10 bit resolution, 187.5 ms
else if(cfg==0x40)raw=raw&~1; //11 bit resolution, 375 ms
}
celsius=(float)raw/16.0;
fahrenheit=celcius*1.8+32.0;
tempDS=celsius;

//============================

adc=analogRead(0);
tempLM=(adc*5)/10;
lcd.setCursor(0,1);
lcd.print("T1:");
lcd.print(tempDS);
lcd.write(0xDF);
lcd.print("C, T2:");
lcd.print(tempLM);
lcd.write(0xDF);
lcd.print("C");
}
  • Lakukan compile dengan cara menekan ctrl+R atau pilih menu Sketch>>verify/compile atau klik tanda centang pada bawah menu file.
  • Jika terjadi error seperti gambar di bawah ini, maka :
    • Download library OneWire
    • Copy dan paste pada C:\Program Files (x86)\Arduino\libraries\OneWire
    • Compile Ulang
WhatsApp Image 2018-06-02 at 10.10.48
  • Jika masih belum bisa di compile dan masih error seperti pada gambar di bawah, maka :
    • Download library wire
    • Copy dan paste pada C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire
    • Cek ulang pada deklarasi ‘print’ (kemaren ada yg salah harusnya titik tapi ketiknya koma)
    • lakukan compile ulang
e0a73433-62bb-4662-b4a9-b686924a8de5
  • Taraaaaa compiling was done
e0a73433-62bb-4662-b4a9-b686924a8de51
  • Setelah selesai proses compile, perhatikan pada log arduino ( Posisinya ada di bagian bawah aplikasi Arduino IDE). Cari lokasi file .hex yang ada di log status file yang kita compile. lihat gambar berikut ini :
e0a73433-62bb-4662-b4a9-b686924a8de52.jpg
  • Copy lokasi file .hex tersebut kemudian paste pada program file yang dibuat di proteus.Oh ya sebelumnya buat rangkaiannya dulu ya geng. Selesai 🙂
e0a73433-62bb-4662-b4a9-b686924a8de53

Terimakasih


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.