欢迎来到SFWR的博客

在树莓派上使用DS18B02,并将数据打印在oled上

DQ连接树莓派的物理引脚7

 

打开总线后,在sys bus w1 devices 中有以28-开头的文件

第二行末尾除以1000为当前温度

 

 


 

 

 

 

import  OS

device_file ='/sys/bus/w1/devices/28-012029929465/w1_slave'

def read_temp_raw():
    f = open(device_file,'r')
    lines = f.readlines()
    f.close()
    return lines

def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string)/1000.0
    return temp_c

返回温度值的函数


打开i2c,载入luma库

$ sudo apt-get update
$ sudo apt-get install python3 python3-pip python3-pil libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libopenjp2-7 libtiff5 -y
$ sudo -H pip3 install luma.oled

在屏幕上打印字符串

from luma.core.interface.serial import i2c, spi
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
 
serial = i2c(port=1, address=0x3C)
device = sh1106(serial)

while True:
    with canvas(device) as dr:
        #print('temp C = %f'%read_temp())
        dr.text((30, 40), str(read_temp()), fill="white")

最终程序

#!/usr/bin/python3
import os,time
from luma.core.interface.serial import i2c, spi
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
 
serial = i2c(port=1, address=0x3C)
device = sh1106(serial)
 

device_file ='/sys/bus/w1/devices/28-012029929465/w1_slave'

def read_temp_raw():
    f = open(device_file,'r')
    lines = f.readlines()
    f.close()
    return lines

def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string)/1000.0
    return temp_c
while True:
    with canvas(device) as dr:
        #print('temp C = %f'%read_temp())
        dr.text((30, 40), str(read_temp()), fill="white")
    

 

posted @ 2021-03-04 23:35  SFWR  Views(223)  Comments(0Edit  收藏  举报