Afficher la température d'un DS18B20 sur LCD i2C¶
Description¶
Affichage sur un afficheur LCD I2C de la température mesurée à l'aide d'un capteur DS18B20, capteur 1-wire ayant un précision de 0.0625°C.
Le montage¶
Les libs¶
Ce code nécessite les librairies suivantes sur la carte Flash :
Pour le DS18B20
- Librairie onewire
- Librairie DS18x20
Pour l'afficheur LCD i2C
- Librairie I2C
- Librairie
Code¶
Ce code assure la lecture simple du capteur à intervalle régulier via un Timer :
from machine import Pin, Timer
import onewire
import ds18x20
led=Pin(25,Pin.OUT) # la broche GP25 dispose d'une LED onboard
bus1wire=onewire.OneWire(Pin(18)) # declare bus1wire sur broche
adr=bus1wire.scan() # recupère coordonnees capteurs presents
#print(adr)
ds=ds18x20.DS18X20(bus1wire) # declare capteur
timer=Timer()
def loop(timer):
#global led
#led.toggle()
roms=ds.scan() # lit le contenu du capteur
ds.convert_temp()
for rom in roms:
print(ds.read_temp(rom))
# fin loop
timer.init(freq=1, callback=loop)
# d'apres http://www.esp32learning.com/micropython/esp32-and-ds18b20-sensor-and-micropython-example.php
Une variante du code précédent avec cette fois la mesure de délai de la lecture du capteur (on trouve 34ms pour la lecture de la température) :
from machine import Pin, Timer
import utime
import onewire
import ds18x20
led=Pin(25,Pin.OUT) # la broche GP25 dispose d'une LED onboard
bus1wire=onewire.OneWire(Pin(18)) # declare bus1wire sur broche
adr=bus1wire.scan() # recupère coordonnees capteurs presents
#print(adr)
ds=ds18x20.DS18X20(bus1wire) # declare capteur
timer=Timer()
def loop(timer):
#global led
#led.toggle()
start=utime.ticks_us() # pour comptage delai mesure
roms=ds.scan() # lit le contenu du capteur
ds.convert_temp()
for rom in roms:
print(ds.read_temp(rom))
print(utime.ticks_diff(utime.ticks_us(),start)/1e3) # delai mesure en ms
# fin loop
timer.init(freq=1, callback=loop)