#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Definisikan pin data untuk masing-masing sensor DS18B20
#define ONE_WIRE_BUS_1 4 // Pin untuk sensor DS18B20 pertama
#define ONE_WIRE_BUS_2 5 // Pin untuk sensor DS18B20 kedua
// Inisialisasi objek OneWire dan DallasTemperature untuk setiap sensor
OneWire oneWire1(ONE_WIRE_BUS_1);
DallasTemperature sensors1(&oneWire1);
OneWire oneWire2(ONE_WIRE_BUS_2);
DallasTemperature sensors2(&oneWire2);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dari modul LCD 2x16
// Variabel untuk menyimpan nilai suhu dan potensio sebelumnya
float lastTemperatureC1 = -1000;
float lastTemperatureC2 = -1000;
int lastPotValue = -1000;
int lastPotBValue = -1000;
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
delay(500);
lcd.setCursor(0, 1);
lcd.print("LOADING ");
for(int x = 6; x < 15; x++) {
lcd.setCursor(x + 1, 1);
lcd.print(".");
delay(1000);
}
delay(1000);
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print(" NX 14000 PRO ");
lcd.setCursor(0, 1);
lcd.print(" PRO AUDIO ");
delay(3000);
lcd.clear();
sensors1.begin(); // Inisialisasi sensor pertama
sensors2.begin(); // Inisialisasi sensor kedua
}
void loop() {
// Minta data suhu dari kedua sensor
sensors1.requestTemperatures();
sensors2.requestTemperatures();
// Baca suhu dari sensor pertama (pin 4)
float temperatureC1 = sensors1.getTempCByIndex(0);
// Baca suhu dari sensor kedua (pin 5)
float temperatureC2 = sensors2.getTempCByIndex(0);
// Hanya tampilkan jika suhu berubah
if (temperatureC1 != lastTemperatureC1) {
lcd.setCursor(8, 0);
lcd.print("TA:");
lcd.setCursor(11, 0);
lcd.print(temperatureC1, 1); // Tampilkan suhu dengan 1 angka desimal
lcd.print("C");
lastTemperatureC1 = temperatureC1;
}
if (temperatureC2 != lastTemperatureC2) {
lcd.setCursor(8, 1);
lcd.print("TB:");
lcd.setCursor(11, 1);
lcd.print(temperatureC2, 1); // Tampilkan suhu dengan 1 angka desimal
lcd.print("C");
lastTemperatureC2 = temperatureC2;
}
// Baca dan tampilkan nilai potensio untuk CH A, hanya jika berubah
int potValue = analogRead(A1);
potValue = map(potValue, 0, 1023, -20, 20);
if (potValue != lastPotValue) {
lcd.setCursor(4, 0);
lcd.print(potValue);
lcd.print("%");
lcd.setCursor(0, 0);
lcd.print("ChA:");
lastPotValue = potValue;
}
// Baca dan tampilkan nilai potensio untuk CH B, hanya jika berubah
int potBValue = analogRead(A2);
potBValue = map(potBValue, 0, 1023, -20, 20);
if (potBValue != lastPotBValue) {
lcd.setCursor(4, 1);
lcd.print(potBValue);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("ChB:");
lastPotBValue = potBValue;
}
delay(500); // Kurangi delay untuk respons yang lebih cepat
}