import machine
import ssd1306
import time
# Configuration de l'afficheur SSD1306
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21)) # Changez les broches si nécessaire
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Configuration du capteur LM336
adc = machine.ADC(machine.Pin(34)) # Utilisez une broche analogique appropriée
adc.width(machine.ADC.WIDTH_12BIT) # Résolution de 12 bits
adc.atten(machine.ADC.ATTN_11DB) # Atténuation pour mesurer jusqu'à 3.6V
# Configuration du capteur ultrasonique
trigger = machine.Pin(26, machine.Pin.OUT) # Changez le numéro de broche si nécessaire
echo = machine.Pin(25, machine.Pin.IN) # Changez le numéro de broche si nécessaire
# Configuration de la LED et du buzzer
led = machine.Pin(32, machine.Pin.OUT) # Changez le numéro de broche si nécessaire
buzzer = machine.Pin(13, machine.Pin.OUT) # Changez le numéro de broche si nécessaire
# Fonction pour lire la distance avec le capteur ultrasonique
def read_distance():
trigger.value(0)
time.sleep_us(2)
trigger.value(1)
time.sleep_us(10)
trigger.value(0)
while echo.value() == 0:
pass
start = time.ticks_us()
while echo.value() == 1:
pass
end = time.ticks_us()
distance = (time.ticks_diff(end, start) * 0.0343) / 2
return distance
# Fonction pour lire la température avec le capteur LM336
def read_temperature():
# Lire la valeur analogique
value = adc.read()
# Convertir la lecture analogique en tension (en volts)
voltage = value * 3.6 / 4095
# Convertir la tension en température (ajustez la formule selon les spécifications du LM336)
temperature = (voltage - 0.5) * 100 # Exemple de formule (en °C)
return temperature
# Boucle principale
while True:
# Lire la température
temp = read_temperature()
# Lire la distance
distance = read_distance()
# Efface l'afficheur
oled.fill(0)
# Affichage sur l'écran OLED
oled.text('Temp: {:.2f} C'.format(temp), 0, 0)
oled.text('Dist: {:.2f} cm'.format(distance), 0, 10)
oled.show()
# Activation du buzzer et de la LED si la distance est inférieure à un seuil ou si la température dépasse 55°C
if (distance < 100 or temp > 55): # Seuil de 100 cm pour la distance et 55°C pour la température
led.value(1) # Allumer la LED
buzzer.value(1) # Activer le buzzer
else:
led.value(0) # Éteindre la LED
buzzer.value(0) # Désactiver le buzzer
time.sleep(5) # Délai avant la prochaine lecture