#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define DQ 7 // 定义电路连接引脚
// 实例化温度对象及显示对象
OneWire oneWire(DQ); // 初始单总线上的单总线设备
DallasTemperature sensors(&oneWire); // 创建温度传感器对象
Adafruit_SSD1306 oled(128, 64, &Wire); // 创建OLED对象
// 准备辅助变量
int count; // 设备总数
DeviceAddress myDS18B20; // 存储设备地址
void setup() {
// 初始化OLED显示屏
oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
// 开显示屏显示
oled.setTextColor(WHITE);
// 温度传感器初始化
sensors.begin();
// 获取温度传感器数量
count = sensors.getDeviceCount();
}
void loop() {
// 清楚显示缓冲区数据
oled.clearDisplay();
oled.setTextSize(2); // 设置字体大小
oled.setCursor(0, 5); // 设置显示位置
sensors.requestTemperatures(); // 向所有设备发送温度读取请求
// 逐个显示
for (int i = 0; i < count; i++) {
if (sensors.getAddress(myDS18B20, i)) {
oled.print(i);
oled.print(":");
// 显示温度
oled.println(sensors.getTempCByIndex(i));
}
}
oled.display(); // 送显示
delay(1000); // 延时1秒
}