このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

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 待機してください。