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 และคืนค่าเป็น
bytearrayCRC ของ 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()และรอให้การแปลงเสร็จสิ้นก่อนเรียกเมธอดนี้