from machine import Pin, Timer
import onewire, ds18x20, time
# 初始化DS18B20
ow = onewire.OneWire(Pin(14))
ds = ds18x20.DS18X20(ow)
def read_temperature(tim):
try:
# 扫描传感器
sensor_list = ds.scan()
# 新增:打印扫描到的传感器地址
print("扫描到的传感器地址:", sensor_list)
# 检查传感器数量
if len(sensor_list) == 0:
print("⚠️ 未检测到传感器,请检查接线!")
return
elif len(sensor_list) == 1:
print("⚠️ 只检测到1个传感器,请检查另一个!")
return
# 触发温度转换并等待
ds.convert_temp()
time.sleep_ms(800) # 等待转换完成
# 读取温度
temp1 = ds.read_temp(sensor_list[0])
temp2 = ds.read_temp(sensor_list[1])
print(f"传感器1:{temp1:.1f}℃ | 传感器2:{temp2:.1f}℃")
except Exception as e:
print(f"⚠️ 读取失败:{e},请检查硬件或重试!")
# 定时器周期改为2000ms(2秒),避免和sleep冲突
tim = Timer(1)
tim.init(period=2000, mode=Timer.PERIODIC, callback=read_temperature)