ds18x20 — драйвер датчика температури DS18x20¶
Модуль ds18x20 надає драйвер для цифрових датчиків температури Maxim/Dallas DS18B20, DS18S20 та DS1822 з інтерфейсом 1-Wire. Він побудований на основі модуля onewire і підтримує кілька датчиків на одній шині.
Приклад:
import time
from machine import Pin
from onewire import OneWire
from ds18x20 import DS18X20
ds = DS18X20(OneWire(Pin("P7")))
roms = ds.scan()
ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(rom, ds.read_temp(rom))
Класи¶
- class ds18x20.DS18X20(onewire: OneWire)¶
Створює драйвер DS18x20, прив’язаний до вказаної шини
onewire.OneWire. Кілька датчиків DS18x20 можуть спільно використовувати одну шину.- scan() list[bytearray]¶
Виконує пошук на базовій шині 1-Wire та повертає список ROM-кодів, що відповідають пристроям сімейства DS18x20. Повертаються лише ROM-коди з кодом сімейства
0x10(DS18S20),0x22(DS1822) або0x28(DS18B20); інші пристрої 1-Wire на тій самій шині фільтруються.
- convert_temp() None¶
Надсилає команду перетворення температури всім датчикам DS18x20 на шині одночасно (з використанням SKIP ROM). Після виклику цього методу необхідно дочекатися завершення перетворення (до 750 мс при роздільній здатності 12 біт за замовчуванням) перед викликом
read_temp().
- read_scratch(rom: bytes | bytearray) bytearray¶
Зчитує 9-байтний скретчпад пристрою, адресованого rom, і повертає його як
bytearray. Перевіряється CRC скретчпаду; при невідповідності CRC виникаєExceptionз повідомленням"CRC error".Примітка
Повернутий буфер є внутрішнім буфером драйвера і перезаписується наступними викликами.
- write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None¶
Записує 3 байти у скретчпад пристрою, адресованого rom. buf повинен містити значення верхнього порогу тривоги (TH), нижнього порогу тривоги (TL) та регістра конфігурації.
- read_temp(rom: bytes | bytearray) float¶
Зчитує останню перетворену температуру з пристрою, адресованого rom, і повертає її у градусах Цельсія як
float. Підтримує кодування DS18S20 (код сімейства0x10) та DS18B20 / DS1822 (коди сімейства0x28/0x22), включаючи від’ємні температури.Викличте
convert_temp()та дочекайтесь завершення перетворення перед викликом цього методу.