#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Connect DS18B29 to Arduino pin D12.
#define ONE_WIRE_BUS 12
// Setup a OneWire instance to communicate with any OneWire devices.
OneWire oneWire(ONE_WIRE_BUS);
// Pass our OneWire reference to Dallas Temperature sensor.
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte numDevices = 0;
// Initialization of sensor and serial communication.
void setup()
{
Serial.begin(115200);
sensors.begin();
lcd.init();
lcd.backlight();
byte address[8];
while (oneWire.search(address))
{
Serial.print("Bus index=");
Serial.print(numDevices);
Serial.print("; Device address=");
for (byte i = 0; i < 8; i++)
{
Serial.print(address[i], HEX);
Serial.print(" ");
}
Serial.println();
numDevices++;
}
}
void loop()
{
if (numDevices > 0)
{
sensors.requestTemperatures();
for (byte i = 0; i < numDevices; i++)
{
float temperatureCelsius = sensors.getTempCByIndex(i);
Serial.print("Bus index=");
Serial.print(i);
Serial.print("; Temperature=");
Serial.print(temperatureCelsius);
Serial.println("°C");
lcd.setCursor(0, 0);
lcd.print("Sensor: ");
lcd.print(i);
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(temperatureCelsius, 1);
lcd.print(char(223));
lcd.print('C');
delay(2000);
}
}
}