import machine
import onewire
import ds18x20
from tm1637 import TM1637
import utime
# Initialize DS18B20 sensor
pin_data = machine.Pin(18) # Data pin connected to GP7
ow = onewire.OneWire(pin_data)
temp_sensor = ds18x20.DS18X20(ow)
sensors = temp_sensor.scan()
# Initialize TM1637 display
tm = TM1637(clk=machine.Pin(16), dio=machine.Pin(17))
# DS18B20
tm.scroll("Starting", delay=200)
utime.sleep_ms(1)
tm.show(' ')
def read_temperature():
# Start temperature conversion
temp_sensor.convert_temp()
# Wait for conversion to complete
utime.sleep_ms(750)
print(temp_sensor.read_temp(sensors[0]))
# Read temperature
return temp_sensor.read_temp(sensors[0])
def display_temperature(temp_celsius):
try:
# Convert temperature to integer (remove decimal point)
temp_int = int(temp_celsius)
# Convert temperature to string and add " C"
temp_str = "{}".format(temp_int)
# Display temperature on TM1637
tm.write([0, 0, 0, 0]) # Clear previous display
tm.temperature(temp_int)
# tm.show(temp_str) # Scroll temperature value
except Exception as e:
print("Error displaying temperature:", e)
try:
while True:
# Read temperature from DS18B20
temperature_celsius = read_temperature()
# Display temperature on TM1637
display_temperature(temperature_celsius)
except KeyboardInterrupt:
print("\nMeasurement stopped.")