10. 1-wire デバイスの制御¶
1-ware バスは(グランドと電源用の線に加えて)通信用に単線を使用するシリアルバスです。DS18B20 温度センサは非常に一般的な 1-wire デバイスです。ここでは onewire モジュールを使って、そのようなデバイスから読み取る方法を示します。
以下のコードを動作させるには、少なくとも1つの DS18S20 または DS18B20 温度センサーを用意し、そのデータラインを GPIO12 に接続する必要があります。センサーに電力を供給し、データピンと電源ピンの間に 4.7kΩ の抵抗を接続する必要もあります:
import time
import machine
import onewire, ds18x20
# デバイスは GPIO12 に接続
dat = machine.Pin(12)
# onewire オブジェクトを作成
ds = ds18x20.DS18X20(onewire.OneWire(dat))
# バス上のデバイスをスキャン
roms = ds.scan()
print('found devices:', roms)
# 10回ループして、計測した温度すべてを表示
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()
関数で温度の読み取りをするには、この関数を実行してから値を読み取る前に少なくとも 750ms 待機してください。