10. 控制 1-wire 设备¶
1-wire 总线是一种串行总线,它只使用单线进行通信(除了接地线和电源线)。DS18B20 温度传感器是一种非常流行的 1-wire 设备,这里我们将展示如何使用 onewire 模块从此类设备中读取数据。
要使以下代码工作,您需要至少有一个 DS18S20 或 DS18B20 温度传感器,其数据线连接到 GPIO12。您还必须为传感器供电并在数据引脚和电源引脚之间连接一个 4.7k 欧姆的电阻器。
import time
import machine
import onewire, ds18x20
# the device is on GPIO12
dat = machine.Pin(12)
# create the onewire object
ds = ds18x20.DS18X20(onewire.OneWire(dat))
# scan for devices on the bus
roms = ds.scan()
print('found devices:', roms)
# loop 10 times and print all temperatures
for i in range(10):
print('temperatures:', end=' ')
ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(ds.read_temp(rom), end=' ')
print()
请注意,您必须执行该convert_temp()
函数以启动温度读数,然后在读取该值之前至少等待 750 毫秒。