mardi 18 mai 2021

Trying to figure out how to call temperature from DS18B20 to use in loop. Raspberry Pi

Hopefully someone can shed some insight for me on how to accomplish what I am trying to achieve. I set up a DS18B20 to take temperature readings, and I would like to use those reading in a while loop to control a servo. For now I would just like to be able to print the reading to screen and go from there. This is the code that works to print to screen:

import os
import glob
import time

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/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
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_f
    

while True:
    print(read_temp())
    time.sleep(1)

I can not seem to figure out how to use the information in if

import os
import glob
import time

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/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
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_f
    

while True:
    if read_temp > 80:
        print(read_temp())
        time.sleep(1)

I get TypeError: '>' not supported between instances of 'function' and 'int' I am really new to this and can not figure it out. I would like to use the readings from read_temp that is being monitored to perform an action if the temp gets above 80.

Any help would be greatly appreciated.

Aucun commentaire:

Enregistrer un commentaire