############################
# E018_DS18B20.PY: Lee datos de temperatura con un DS18B20
# ENTRADAS: Pin de datos en GPIO25
# SALIDAS: Dirección Hex y tempeperatura (ºC y Fahrenheit)
############################
import onewire # Gestión del bus 1-Wire
import ds18x20 # Gestión del sensor DS18B20
from machine import Pin # Control del GPIO
import time # Control de tiempo
# Configuración del pin del sensor
sensor_pin = Pin(25) # Cambiar el GPIO si es necesario
# Configuración del bus y del dispositivo
bus = onewire.OneWire(sensor_pin)
dis = ds18x20.DS18X20(bus)
def busca():
global dire # Dirección del DS18B20©
print('Buscando sensor...')
dire = dis.scan() # Obtiene la dirección Hex del DS18B20©
if dire: # Mira si detecta un DS18B20
# Formatea la dirección en hexadecimal
dire_hex = ':'.join(['{:02X}'.format(b) for b in dire[0]])
print('Sensor DS18B20© encontrado en...')
print("Dirección Hexadecimal:", dire_hex)
else:
print("No se detectó ningún sensor DS18B20©")
def lee_temperatura():
dis.convert_temp() # Ejecuta la conversión de temperatura
# Espera hasta que la conversión esté realizada
while dis.read_temp(dire[0]) == 85.0:
pass
# Lee la temperatura y la convierte a grados Celsius y Fahrenheit
temp_celsius = dis.read_temp(dire[0])
temp_fahrenheit = (temp_celsius * 9.0 / 5.0) + 32.0
# Muestra la temperatura
print("Temperatura: {:.2f}°C ó {:.2f}°F".format(temp_celsius, temp_fahrenheit))
# Ciclo de lectura cada x segundos
intervalo = 2 # Cambiar si es necesario
print('SENSOR DE TEMPERATURA DS18B20©')
# Bucle infinito se detiene con <CTR>+<C>
busca() # Función de búsqueda en 1-Wire
try:
while True: # Bucle de lectura
lee_temperatura()
time.sleep(intervalo)
except KeyboardInterrupt:
print('Lectura del DS18B20 finalizada')
except:
print('Error en sensor')
Loading
ds18b20
ds18b20