from machine import Pin, SoftI2C, Timer
from ssd1306 import SSD1306_I2C
import time, onewire, ds18x20
# Définir une variable de seuil de température
temp_threshold = 25.0 # Remplacez par la valeur de votre choix
# Configuration de l'écran OLED
i2c = SoftI2C(scl=Pin(12), sda=Pin(14))
oled = SSD1306_I2C(128, 64, i2c, addr = 0x3c)
# Configuration du capteur de température DS18B20
ow = onewire.OneWire(Pin(4))
ds = ds18x20.DS18X20(ow)
rom = ds.scan() # Scan pour trouver les capteurs connectés
# Configuration des LEDs
led_r = Pin(21, Pin.OUT)
led_g = Pin(22, Pin.OUT)
led_b = Pin(23, Pin.OUT)
def temp_get(tim):
ds.convert_temp() # Démarrer une conversion de température
temp = ds.read_temp(rom[0]) # Lire la température du premier capteur
oled.fill(0) # Effacer l'écran OLED
oled.text(str('%.2f' % temp), 40, 20) # Afficher la température
oled.text(str('%.2f' % temp), 40, 0)
oled.show() # Mettre à jour l'écran
# Comparer la température avec le seuil défini
if temp > temp_threshold:
led_r.value(1) # Allumer la LED rouge
led_g.value(0) # Éteindre la LED verte
led_b.value(0) # Éteindre la LED bleue
else:
led_r.value(0) # Éteindre la LED rouge
led_g.value(0) # Allumer la LED verte
led_b.value(1) # Allumer la LED bleue
# Configuration du timer pour lire la température périodiquement
tim = Timer(1)
tim.init(period=300, mode=Timer.PERIODIC, callback=temp_get)