You are on page 1of 9

LAPORAN PRAKTIKUM

KELISTRIKAN DAN ELEKTRONIKA


ARDUINO SENSOR LM35 dan DS18B20 dengan Button

Disusun Oleh :
1. Vincentius Alexander Christian (19718)
2. Muhammad Alfath Rizky (19796)

Kelas : CRM 2

Tanggal Praktikum : 10 Mei 2022

DEPARTEMEN TEKNIK MESIN


SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2021
Arduino Temperature Sensor Menggunakan LM35 & DS18B20 Dengan Kendali
Remote PC + LCD dan Push Button

A. Deskripsi Kasus :
Menggunakan program arduino untuk melakukan sesnsor temperatur menggunakan
LM35 dan DS18B20 dengan kendali remote PC + LCD dan Push Button. Sensor suhu
LM35 belum dikalibrasikan sehingga output suhu yang akan terbaca akan kurang
akurat sedangkan sensor suhu DS18B20 sudah dikalibrasikan sehingga output suhu
yang akan terbaca akan lebih akurat.

B. Kode Program :

// Include the required Arduino libraries:


#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Define to which pin of the Arduino the 1-Wire bus is connected:


#define ONE_WIRE_BUS 2
#define vIn A0 // the pin that the input sensor is attached to
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// Create a new instance of the oneWire class to communicate with any OneWire
device:
OneWire oneWire(ONE_WIRE_BUS);

// Pass the oneWire reference to DallasTemperature library:


DallasTemperature sensors(&oneWire);

const int btnLM = 3;


const int btnDS = 5;

float t_celcius = 0.0;


byte kode,kode1=0;
void DS18B20(){
// Send the command for all devices on the bus to perform a temperature conversion:
sensors.requestTemperatures();

// Fetch the temperature in degrees Celsius for device index:


float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device
// Fetch the temperature in degrees Fahrenheit for device index:
float tempF = sensors.getTempFByIndex(0);
// Print the temperature in Celsius in the Serial Monitor:
//Serial.println("Temperature: ");

Serial.print(tempC);
//Serial.print(" \xC2\xB0"); // shows degree symbol
//Serial.print("C | ");
Serial.print(",");
lcd.setCursor(0,1);
lcd.print(tempC+String(" C |")+String(tempF)+String(" F"));

// Print the temperature in Fahrenheit


Serial.println(tempF);
//Serial.print(" \xC2\xB0"); // shows degree symbol
//Serial.println("F");

// tunggu 1 detik:
delay(1000);
}
void LM35(){
int analog_value = analogRead(vIn);
t_celcius = (analog_value /1024.0)*500;
lcd.setCursor(0, 1);
lcd.print("Temp. = ");
lcd.print(t_celcius);
lcd.print(" C");
Serial.print("Temp. = ");
Serial.print(t_celcius);
Serial.println(" C");
delay(500);
}
void setup() {
pinMode(vIn, INPUT);
pinMode(btnLM, INPUT_PULLUP);
pinMode(btnDS, INPUT_PULLUP);
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight

// ------- Quick 3 blinks of kacingkacing -------------


for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on

//-------- Salam Pembuka Say ------------------


// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(2,0); //Start at character 4 on line 0
lcd.print("Halo, Sayang");
delay(1000);
lcd.setCursor(1,1);
lcd.print("Cek Suhu Ya :*");
delay(4000);

// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();

// Start up the library:


sensors.begin();
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
lcd.setCursor(0,0);
lcd.print(" MENU :");
lcd.setCursor(0,1);
lcd.print("1.LM35/2.DS18B20");
Serial.println(" Pembacaan Sensor Suhu : ");
Serial.println(" Tekan '1' utk Sensor Suhu LM35 ");
Serial.println(" Tekan '2' utk Sensor Suhu DS18B20 ");
}

void loop(){
{
if (Serial.available()) {
// read the most recent byte
kode = Serial.read();
if(kode=='1')
{
Serial.println("Sensor Suhu LM35");
kode1=1;
}
if(kode=='2')
{
Serial.println("Sensor Suhu DS18B20");
kode1=2;
}
}
}
{
if(digitalRead(btnLM)==LOW)
{
Serial.println("Sensor Suhu LM35");
kode1=1;
}
if(digitalRead(btnDS)==LOW)
{
Serial.println("Sensor Suhu DS18B20");
kode1=2;
}
}
if(kode1==1)
LM35();
if(kode1==2)
DS18B20();
}

C. Penjelasan :

Membuka sketch → include library → manage libraries untuk mengunduh library


yang dibutuhkan, yaitu :
- LiquidCrystal_I2C
- OneWire
- DallasTemperature
Memasukkan library yang telah diunduh sebelumnya ke dalam kode program
arduino

Kode program diatas merupakan sebuah inialisasi atau deklarasi program pada
nomor kaki arduino yang akan dihubungkan input sensor LM35, DS18B20, dan
push button.
Kode program diatas digunakan untuk menjalankan sensor menggunakan
DS18B20 yang akan menghasilkan output temperatur yang akan ditampilkan pada
lcd dan serial monitor

Kode program diatas digunakan untuk menjalankan sensor menggunakan LM35


yang akan menghasilkan output temperatur yang akan ditampilkan pada lcd dan
serial monitor
Program diatas merupakan sebuah setup untuk menjalankan perintah sesuai dengan
program arduino yang dijalankan yang dapat dilakukan kendali dengan
menggunakan serial computer dan push button.

Program diatas merupakan sebuah setup untuk mengatur tampilan LCD pada saat
pertama kali dijalankan.

Memulai fungsi library – library yang digunakan serta mengatur tampilan menu
pada lcd dan serial monitor.
Program void loop merupakan program utama yang dibuat untuk mengeluarkan sebuah
output yang berupa sensor temperatur dari perintah void setup yang telah dibuat
sebelumnya yang dapat dikendalikan melalui serial monitor dan push button.
Tampilan pada serial monitor, jika diinput angka 1 maka akan menampilkan hasil sensor
temperatur menggunakan LM35 sedangkan jika diinput angka 2 maka akan menampilkan
sensor temperatur menggunakan DS18B20
Tampilan pada lcd, jika push button ditekan 1 maka akan menampilkan hasil sensor
temperatur menggunakan LM35 sedangkan jika push button 2 ditekan maka akan
menampilkan sensor temperatur menggunakan DS18B20.

You might also like