ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

โมดูล ds18x20 ให้ไดรเวอร์สำหรับเซนเซอร์อุณหภูมิดิจิทัล 1-Wire ของ Maxim/Dallas รุ่น DS18B20, DS18S20 และ DS1822 สร้างขึ้นบน โมดูล 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 ms ที่ความละเอียด 12 บิตเริ่มต้น) ก่อนเรียก read_temp()

read_scratch(rom: bytes | bytearray) bytearray

อ่าน scratchpad 9 ไบต์จากอุปกรณ์ที่ระบุด้วย rom และคืนค่าเป็น bytearray CRC ของ scratchpad จะถูกตรวจสอบ; ถ้า CRC ไม่ตรงกัน จะเกิด Exception พร้อมข้อความ "CRC error"

Note

บัฟเฟอร์ที่คืนค่าคือบัฟเฟอร์ภายในของไดรเวอร์ และจะถูกเขียนทับโดยการเรียกครั้งถัดไป

write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None

เขียน 3 ไบต์ลงใน scratchpad ของอุปกรณ์ที่ระบุด้วย rom โดย buf ต้องมีค่า high alarm trigger (TH), low alarm trigger (TL) และค่า configuration register

read_temp(rom: bytes | bytearray) float

อ่านอุณหภูมิที่แปลงล่าสุดจากอุปกรณ์ที่ระบุด้วย rom และคืนค่าเป็นองศาเซลเซียสเป็น float รองรับทั้งการเข้ารหัส DS18S20 (รหัสตระกูล 0x10) และ DS18B20 / DS1822 (รหัสตระกูล 0x28 / 0x22) รวมถึงอุณหภูมิติดลบ

เรียก convert_temp() และรอให้การแปลงเสร็จสิ้นก่อนเรียกเมธอดนี้