74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
import time
|
|
import machine
|
|
from gfx_pack import GfxPack
|
|
from breakout_bme68x import BreakoutBME68X, STATUS_HEATER_STABLE
|
|
|
|
"""
|
|
GFX temp DEMO
|
|
|
|
This demo uses a BME680 or BME688 attached to the QWST connector to
|
|
measure temperature, pressure, and humidity and display it on the GFX display,
|
|
or the internal temperature sensor can be used in place of the
|
|
BME68x breakout. Just change use_bme68x_breakout to False
|
|
"""
|
|
|
|
# Settings
|
|
lower_temp_bound = 15
|
|
upper_temp_bound = 30
|
|
use_bme68x_breakout = True
|
|
|
|
sensor_temp = machine.ADC(4)
|
|
conversion_factor = 3.3 / (65535) # used for calculating a temperature from the raw sensor reading
|
|
|
|
gp = GfxPack()
|
|
gp.set_backlight(0, 0, 0) # turn the RGB backlight off
|
|
display = gp.display
|
|
display.set_backlight(0.4) # set the white to a low value
|
|
|
|
bmp = BreakoutBME68X(gp.i2c)
|
|
# If this gives an error, try the alternative address
|
|
# bmp = BreakoutBME68X(gp.i2c, 0x77)
|
|
|
|
display.set_pen(0)
|
|
display.clear()
|
|
display.set_font("bitmap14_outline")
|
|
|
|
while True:
|
|
# Clear display
|
|
display.set_pen(0)
|
|
display.clear()
|
|
|
|
display.set_pen(15)
|
|
display.text("GFXPack Temp demo", 0, 0, scale=0.1)
|
|
|
|
if use_bme68x_breakout:
|
|
temperature, pressure, humidity, gas, status, _, _ = bmp.read()
|
|
display.text("Temp: {:0.2f}c".format(temperature), 0, 20, scale=0.2)
|
|
display.text("Press: {:0.2f}Pa".format(pressure), 0, 35, scale=0.2)
|
|
display.text("Humid: {:0.2f}%".format(humidity), 0, 50, scale=0.2)
|
|
|
|
heater = "Stable" if status & STATUS_HEATER_STABLE else "Unstable"
|
|
print("{:0.2f}c, {:0.2f}Pa, {:0.2f}%, {:0.2f} Ohms, Heater: {}".format(
|
|
temperature, pressure, humidity, gas, heater))
|
|
|
|
else:
|
|
reading = sensor_temp.read_u16() * conversion_factor
|
|
temperature = 27 - (reading - 0.706) / 0.001721
|
|
display.text("Temperature", 25, 15, scale=0.2)
|
|
display.text("{:0.2f}c".format(temperature), 25, 30, scale=2)
|
|
|
|
if temperature < lower_temp_bound:
|
|
r = 0
|
|
b = 255
|
|
elif temperature > upper_temp_bound:
|
|
r = 255
|
|
b = 0
|
|
else:
|
|
r = (temperature - lower_temp_bound) / (upper_temp_bound - lower_temp_bound) * 255
|
|
b = 255 - ((temperature - lower_temp_bound) / (upper_temp_bound - lower_temp_bound) * 255)
|
|
|
|
gp.set_backlight(r, 0, b)
|
|
display.update()
|
|
|
|
time.sleep(0.2)
|