import machine
import ssd1306
import time
import dht
# Configuration de l'I2C pour l'écran OLED
i2c = machine.I2C(0, scl=machine.Pin(22), sda=machine.Pin(21))
# Initialisation de l'écran OLED SSD1306
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# Slide switch pour activer/désactiver le système
system_switch = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP)
# Boutons poussoirs (entrées) pour contrôler la lampe et le laser
push_laser = machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_UP) # Bouton pour laser
push_lampe = machine.Pin(33, machine.Pin.IN, machine.Pin.PULL_UP) # Bouton pour lampe
# Configuration de la lampe et du laser
lampe = machine.Pin(32, machine.Pin.OUT)
laser = machine.Pin(25, machine.Pin.OUT)
# Capteur de température DHT22
dht_1 = dht.DHT22(machine.Pin(18))
# Fonction pour afficher du texte sur l'écran OLED
def afficher_texte(txt_1=".", txt_2=".", txt_3=".", txt_4="."):
oled.fill(0) # Efface l'écran
oled.text(txt_1, 0, 0) # Texte à la ligne 1
oled.text(txt_2, 0, 16) # Texte à la ligne 2
oled.text(txt_3, 0, 32) # Texte à la ligne 3
oled.text(txt_4, 0, 48) # Texte à la ligne 4
oled.show() # Affiche le texte
pause_global = 0.2 # Variable pour gérer le temps de pause
# Boucle principale
while True:
try:
# Vérification de l'état du slide switch pour activer/désactiver le système
if system_switch.value() == 0:
text_1 = "System: Actif"
# Lecture du capteur de température et d'humidité
dht_1.measure()
temp = dht_1.temperature()
humidity = dht_1.humidity()
text_2 = "Temp. : {} C".format(temp)
text_3 = "Humid. : {} %".format(humidity)
# Contrôle de la lampe avec le bouton poussoir
print("Lampe:", push_lampe.value())
if push_lampe.value() == 0:
lampe.value(0)
text_4_1 = "Lampe:X"
else:
lampe.value(1)
text_4_1 = "Lampe:O"
# Contrôle du laser avec le bouton poussoir
print("Lampe:", push_laser.value())
if push_laser.value() == 0:
laser.value(1)
text_4_2 = "Laser:O"
else:
laser.value(0)
text_4_2 = "Laser:X"
text_4 = text_4_1 + " " + text_4_2
else:
text_1 = "System: Inactif"
text_2, text_3, text_4 = "", "", ""
lampe.value(0)
laser.value(0)
# Affichage sur l'écran OLED
afficher_texte(text_1, text_2, text_3, text_4)
except OSError as e:
print("Erreur de lecture du capteur :", e)
afficher_texte("Erreur capteur", "Lecture DHT22")
# Pause d'une seconde entre les mesures
time.sleep(pause_global)