#include <U8g2lib.h>
//#include <OneWire.h>
#include <DallasTemperature.h>
// Connect DS18B20 to D4
#define ONE_WIRE_BUS 4
// 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);
// Initialize the display
U8G2_SSD1306_128X64_NONAME_F_SW_I2C
u8g2(U8G2_R0,/*clock=*/21,/*data*/22,U8X8_PIN_NONE);
byte numDevices = 0;
// Initialization of sensor and serial communication.
void setup()
{
Serial.begin(115200);
sensors.begin();
u8g2.begin();
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 temperatureC = sensors.getTempCByIndex(i);
char temperatureString[20]; // Adjust size if needed
dtostrf(temperatureC, 6, 2, temperatureString);
String displayString = "Temp: ";
displayString += temperatureString;
displayString += " C";
// Clear the display and set font
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
// Draw the string on the display
u8g2.drawStr(0, 24, displayString.c_str());
u8g2.sendBuffer();
// Serial output
Serial.print("Bus index=");
Serial.print(i);
Serial.print("; Temperature=");
Serial.print(temperatureC);
Serial.println("°C");
}
}
delay(4000);
}
//u8g2.clearBuffer();
//u8g2.setFont(u8g2_font_7x14B_tr);
//u8g2.drawStr(0,0,"");
//u8g2.sendBuffer();