Skip to content

Instantly share code, notes, and snippets.

@thinkier
Created September 16, 2024 09:38
Show Gist options
  • Save thinkier/9a282974c3a09da1e0380695f8c8f02f to your computer and use it in GitHub Desktop.
Save thinkier/9a282974c3a09da1e0380695f8c8f02f to your computer and use it in GitHub Desktop.
quick and dirty temperature logger
from picographics import PicoGraphics, DISPLAY_PICO_EXPLORER, PEN_RGB332
from pimoroni_i2c import PimoroniI2C
from breakout_bme68x import BreakoutBME68X
from pimoroni import Button
from time import ticks_ms
from math import floor
display = PicoGraphics(display=DISPLAY_PICO_EXPLORER, pen_type=PEN_RGB332)
black_pen = display.create_pen(0, 0, 0)
white_pen = display.create_pen(255, 255, 255)
temp_pen = display.create_pen(255, 255, 255)
red_pen = display.create_pen(255, 0, 0)
green_pen = display.create_pen(0, 255, 0)
blue_pen = display.create_pen(0, 0, 255)
PINS_PICO_EXPLORER = {"sda": 20, "scl": 21}
i2c = PimoroniI2C(**PINS_PICO_EXPLORER)
bme = BreakoutBME68X(i2c)
button_a = Button(12, invert=True)
button_b = Button(13, invert=True)
button_x = Button(14, invert=True)
button_y = Button(15, invert=True)
with open("temps.log", "a") as f:
logging = False
last_tick = 0
while True:
tick = floor(ticks_ms() / 1000)
temperature = bme.read()[0]
display.set_pen(black_pen)
display.clear()
display.set_pen(white_pen)
display.text("Logger", 8, 8)
display.text("T=%i" % (tick), 90, 8)
display.set_pen(temp_pen)
display.text("%.1fC" % (temperature), 190, 8)
display.set_pen(blue_pen)
display.rectangle(160, 40, 80, 40)
display.set_pen(black_pen)
display.text("Break", 172, 52)
display.set_pen(red_pen if logging else green_pen)
display.rectangle(160, 160, 80, 40)
display.set_pen(black_pen)
display.text("Stop" if logging else "Start", 172, 172)
display.update()
if button_x.read():
display.set_pen(blue_pen)
display.clear()
display.update()
break
if button_y.read():
logging = not logging
if logging:
f.write("--- NEW SESSION ---\n")
if logging and last_tick is not tick:
last_tick = tick
f.write("%i %.1f\n" % (tick, temperature))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment