//kita akan membuat sketch untuk membaca beberapa sensor suhu digital DS18B20
// sensor ini bisa digunakan dengan Arduino maupun ESP32
// karena keterbatasan wokwi maka simulasi ini dilakukan di Arduino Uno
//dikarenakan multiple sensor 1 pin error maka kita coba dengan beberapa pin
#include <OneWire.h>
#include <DallasTemperature.h> //https://github.com/milesburton/Arduino-Temperature-Control-Library/tree/master
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire1(6);
OneWire oneWire2(7);
OneWire oneWire3(8);
OneWire oneWire4(9);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
DallasTemperature sensors3(&oneWire3);
DallasTemperature sensors4(&oneWire4);
// arrays to hold device address
DeviceAddress sensor1, sensor2, sensor3, sensor4;
float suhu1, suhu2, suhu3, suhu4;
void setup() {
Serial.begin(9600);
Serial.println("Multipler Dallas Temperature IC Control Library Demo");
delay(1000);
// locate devices on the bus
Serial.print("Mencari sensor DS18B20...");
sensors1.begin();
sensors2.begin();
sensors3.begin();
sensors4.begin();
byte jumlah = sensors1.getDeviceCount() + sensors2.getDeviceCount() + sensors3.getDeviceCount() + sensors4.getDeviceCount();
Serial.print("Ditemukan ");
Serial.print(jumlah);
Serial.println(" perangkat.");
delay(1000);
if (!sensors1.getAddress(sensor1, 0)) Serial.println("Tidak dapat menemukan sensor DS18B20 1");
if (!sensors2.getAddress(sensor2, 0)) Serial.println("Tidak dapat menemukan sensor DS18B20 2");
if (!sensors3.getAddress(sensor3, 0)) Serial.println("Tidak dapat menemukan sensor DS18B20 3");
if (!sensors4.getAddress(sensor4, 0)) Serial.println("Tidak dapat menemukan sensor DS18B20 4");
//atur resolusi suhu DS18B20 dengan resolusi 9-12 bit
sensors1.setResolution(sensor1, 12); //kita gunakan 12 bit untuk mendapatkan presisi yang paling baik
sensors2.setResolution(sensor2, 12);
sensors3.setResolution(sensor3, 12);
sensors4.setResolution(sensor4, 12);
Serial.println("Suhu 1, Suhu 2, Suhu 3, Suhu 4");
}
void loop() {
//Ambil data suhu
sensors1.requestTemperatures(); // ambil data sensor1
sensors2.requestTemperatures(); // ambil data sensor2
sensors3.requestTemperatures(); // ambil data sensor2
sensors4.requestTemperatures(); // ambil data sensor2
suhu1 = sensors1.getTempC(sensor1);
suhu2 = sensors2.getTempC(sensor2);
suhu3 = sensors3.getTempC(sensor3);
suhu4 = sensors4.getTempC(sensor4);
Serial.print(suhu1, 4); // 4 angka di belakang koma
Serial.print(" , ");
Serial.print(suhu2, 4); // 4 angka di belakang koma
Serial.print(" , ");
Serial.print(suhu3, 4); // 4 angka di belakang koma
Serial.print(" , ");
Serial.println(suhu4, 4); // 4 angka di belakang koma
delay(1000);
}