import os import glob import time # Inicjalizacja sterowników 1-Wire (na wypadek gdyby nie wstały z systemem) os.system('modprobe w1-gpio') os.system('modprobe w1-therm') # Znajdowanie pliku urządzenia # Szukamy folderu zaczynającego się od '28' w katalogu urządzeń 1-Wire base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): """Odczytuje surowe linie z pliku urządzenia""" f = open(device_file, 'r') lines = f.readlines() f.close() return lines def read_temp(): """Przetwarza surowe dane na stopnie Celsjusza""" lines = read_temp_raw() # Czekaj, jeśli odczyt się nie udał (komunikat NO) while lines[0].()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() # Znajdź pozycję 't=' w drugiej linii equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 # Dzielimy przez 1000 return temp_c print("Odczyt temperatury z DS18B20. Naciśnij CTRL+C aby przerwać.") try: while True: temperatura = read_temp() print(f"Temperatura: {temperatura:.2f} °C") time.sleep(1) except KeyboardInterrupt: print("\nZakończono.") except IndexError: print("Nie wykryto czujnika! Sprawdź podłączenie i rezystor.")