from machine import Pin, I2C
from time import sleep
from ssd1306 import SSD1306_I2C
from bh1750 import BH1750
# Configuration des broches
RELAY_PIN = 23 # Broche pour activer le buzzer
BUZZER = Pin(RELAY_PIN, Pin.OUT)
# Seuils de luminosité
LUX_THRESHOLD_LOW = 50.0
LUX_THRESHOLD_HIGH = 1000.0
# Initialisation du bus I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Initialisation de l'écran OLED
WIDTH = 128
HEIGHT = 64
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
# Initialisation du capteur BH1750
sensor = BH1750(i2c)
def afficher_message(message):
"""Affiche un message sur l'écran OLED."""
oled.fill(0)
oled.text(message, 0, 0)
oled.show()
# Programme principal
while True:
try:
# Lecture de la luminosité
lux = sensor.luminance(BH1750.ONCE_HIRES_1)
# Affichage de la luminosité sur l'OLED
oled.fill(0)
oled.text("Luminosite:", 0, 0)
oled.text(f"{lux:.2f} lux", 0, 10)
if lux > LUX_THRESHOLD_HIGH:
# Luminosité trop élevée -> Buzzer activé
BUZZER.on()
oled.text("Alerte: Luminosite", 0, 30)
oled.text("trop elevee!", 0, 40)
elif lux < LUX_THRESHOLD_LOW:
# Luminosité trop basse -> Message OLED
BUZZER.off()
oled.text("Alerte: Luminosite", 0, 30)
oled.text("trop basse!", 0, 40)
else:
# Luminosité normale -> Désactiver le buzzer
BUZZER.off()
oled.text("Luminosite OK", 0, 30)
# Affichage sur l'OLED
oled.show()
sleep(2)
except Exception as e:
# Affiche les erreurs sur l'écran OLED
afficher_message("Erreur capteur!")
print("Erreur :", e)
sleep(2)