Sensor DS18B20 adalah sensor suhu digital yang sangat populer dan banyak digunakan di berbagai proyek elektronik dan IoT.Berikut adalah cara memprogramnya :
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus_DS18B20 = A0;
OneWire oneWire_DS18B20(oneWireBus_DS18B20);
DallasTemperature DS18B20(&oneWire_DS18B20);
float baca_DS18B20() {
DS18B20.requestTemperatures();
delay(100);
float temperatureC = DS18B20.getTempCByIndex(0);
return temperatureC;
}
void setup()
{
Serial.begin(9600);
DS18B20.begin();
}
void loop(){
float nilai_DS18B20 = baca_DS18B20();
if ( nilai_DS18B20 != DEVICE_DISCONNECTED_C) {
Serial.print("Temperature: ");
Serial.print( nilai_DS18B20);
Serial.println(" °C");
} else {
Serial.println("Error: Could not read temperature data");
}
}
Berikut ini adalah penjelasan dari kode di atas :
Penjelasan Kode
1. Import Library
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
Arduino.h
: Library dasar Arduino.OneWire.h
: Library untuk komunikasi dengan perangkat 1-Wire seperti DS18B20.DallasTemperature.h
: Library yang memudahkan interaksi dengan sensor suhu DS18B20.
2. Definisi Pin dan Objek Sensor
const int oneWireBus_DS18B20 = A0;
OneWire oneWire_DS18B20(oneWireBus_DS18B20);
DallasTemperature DS18B20(&oneWire_DS18B20);
oneWireBus_DS18B20
adalah pin analog A0 yang digunakan sebagai jalur komunikasi 1-Wire ke sensor DS18B20.- Membuat objek
oneWire_DS18B20
dari kelasOneWire
yang mengelola komunikasi 1-Wire pada pin A0. - Membuat objek
DS18B20
dari kelasDallasTemperature
yang menggunakanoneWire_DS18B20
untuk berinteraksi dengan sensor.
3. Fungsi Membaca Suhu
float baca_DS18B20() {
DS18B20.requestTemperatures(); // Meminta sensor untuk mengukur suhu sekarang
delay(100); // Beri waktu 100 ms untuk pengukuran
float temperatureC = DS18B20.getTempCByIndex(0); // Ambil suhu dari sensor pertama (index 0)
return temperatureC; // Kembalikan nilai suhu (°C)
}
- Fungsi ini meminta sensor melakukan pembacaan suhu.
- Menunggu 100 ms agar sensor selesai mengukur.
- Mengambil suhu dari sensor dengan indeks 0 (bila ada lebih dari satu sensor di jalur 1-Wire).
- Mengembalikan nilai suhu dalam Celsius.
4. Fungsi Setup
void setup()
{
Serial.begin(9600); // Mulai komunikasi serial dengan baud rate 9600
DS18B20.begin(); // Inisialisasi sensor DS18B20
}
- Setup komunikasi serial.
- Inisialisasi sensor DS18B20 agar siap membaca data.
5. Loop Utama
void loop(){
float nilai_DS18B20 = baca_DS18B20(); // Membaca suhu sensor
if ( nilai_DS18B20 != DEVICE_DISCONNECTED_C) { // Cek apakah sensor terhubung
Serial.print("Temperature: ");
Serial.print(nilai_DS18B20);
Serial.println(" °C");
} else {
Serial.println("Error: Could not read temperature data"); // Jika sensor tidak terbaca
}
}
- Memanggil fungsi pembacaan suhu.
- Memeriksa apakah pembacaan berhasil (nilai tidak sama dengan
DEVICE_DISCONNECTED_C
, yaitu nilai error default saat sensor tidak terhubung). - Jika berhasil, menampilkan suhu ke Serial Monitor.
- Jika gagal, menampilkan pesan error.
Ringkasan
Kode ini:
- Menghubungkan Arduino ke sensor suhu DS18B20 lewat jalur 1-Wire di pin A0.
- Meminta sensor mengukur suhu, menunggu hasilnya, lalu membaca suhu dalam derajat Celsius.
- Menampilkan suhu tersebut ke Serial Monitor secara berulang-ulang.
- Menangani kasus kegagalan pembacaan sensor dengan menampilkan pesan error.
untuk diskusi bisa kontak dibawah ini :

Sosial media :