# ex_3_2_03_ds18b20.py (จำลอง: https://wokwi.com/projects/469815321877127169)
from machine import Pin
import onewire
import ds18x20
import time
ow = onewire.OneWire(Pin(26)) # สาย DATA ของบัส 1-Wire ที่ GPIO26
ds = ds18x20.DS18X20(ow)
roms = ds.scan() # ค้นหาอุปกรณ์บนบัส (แต่ละตัวมีรหัส ROM 64 บิตไม่ซ้ำกัน)
print("พบ DS18B20 จำนวน", len(roms), "ตัว:", roms)
while True:
ds.convert_temp() # สั่งทุกตัวบนบัสเริ่มแปลงอุณหภูมิ
time.sleep_ms(750) # ที่ความละเอียด 12 บิต ต้องรออย่างน้อย 750 ms
for rom in roms:
temp = ds.read_temp(rom)
print("อุณหภูมิดิน/น้ำ: {:.1f} °C".format(temp))
time.sleep(2)