#include <OneWire.h>
#include <DallasTemperature.h>
// Pin koneksi DS18B20
#define ONE_WIRE_BUS 2
// Buat instance untuk komunikasi OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Buat instance untuk DallasTemperature
DallasTemperature sensors(&oneWire);
// Pin untuk LED Bar
int ledPins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
// Batasan suhu
float minTemp = 20.0; // Suhu minimum
float maxTemp = 40.0; // Suhu maksimum
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(9600);
// Inisialisasi sensor suhu
sensors.begin();
// Atur semua pin LED sebagai output
for (int i = 0; i < 10; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Meminta sensor untuk melakukan pembacaan suhu
sensors.requestTemperatures();
// Ambil suhu dari sensor DS18B20
float temperatureC = sensors.getTempCByIndex(0);
// Tampilkan suhu di Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
// Update LED bar sesuai dengan suhu
updateLedBar(temperatureC);
// Tunggu 1 detik sebelum pembacaan berikutnya
delay(1000);
}
// Fungsi untuk update LED bar sesuai suhu
void updateLedBar(float temperature) {
// Hitung jumlah LED yang harus menyala
int numLedsOn = map(temperature, minTemp, maxTemp, 0, 10);
// Pastikan jumlah LED yang menyala berada dalam rentang 0-10
numLedsOn = constrain(numLedsOn, 0, 10);
// Nyalakan LED sesuai suhu
for (int i = 0; i < 10; i++) {
if (i < numLedsOn) {
digitalWrite(ledPins[i], HIGH); // Nyalakan LED
} else {
digitalWrite(ledPins[i], LOW); // Matikan LED
}
}
}
Loading
ds18b20
ds18b20