Adafruit_Learning_System_Gu.../CLUE/CLUE_Milk_Checker/code.py
Anne Barela dc43693f17 Copy CLUE projects to new CLUE subdirectory
To "clean up" the Learn System repo, we need to move groups of guides into subdirectories. This PR duplicates the CLUE guides into the CLUE subdirectory so guides may be changed prior to deleting redundant project repos to make more space.
2025-02-24 11:21:29 -06:00

84 lines
2.3 KiB
Python

# SPDX-FileCopyrightText: 2021 Carter Nelson for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import displayio
import adafruit_sgp30
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label
import adafruit_imageload
from adafruit_clue import clue
# --| User Config |-------------------------
TVOC_LEVELS = (80, 120) # set two TVOC levels
MESSAGES = ("GOOD", "SUS?", "BAD!") # set three messages (4 char max)
# ------------------------------------------
# setup UI
cow_bmp, cow_pal = adafruit_imageload.load("bmps/milk_bg.bmp")
background = displayio.TileGrid(cow_bmp, pixel_shader=cow_pal)
mouth_bmp, mouth_pal = adafruit_imageload.load("bmps/mouth_sheet.bmp")
mouth = displayio.TileGrid(
mouth_bmp,
pixel_shader=mouth_pal,
tile_width=40,
tile_height=20,
width=1,
height=1,
x=35,
y=110,
)
msg_font = bitmap_font.load_font("fonts/Alphakind_28.bdf")
msg_font.load_glyphs("".join(MESSAGES))
message = label.Label(msg_font, text="WAIT", color=0x000000)
message.anchor_point = (0.5, 0.5)
message.anchored_position = (172, 38)
data_font = bitmap_font.load_font("fonts/F25_Bank_Printer_Bold_12.bdf")
data_font.load_glyphs("eTVOC=12345?")
tvoc = label.Label(data_font, text="TVOC=?????", color=0x000000)
tvoc.anchor_point = (0, 1)
tvoc.anchored_position = (5, 235)
eco2 = label.Label(data_font, text="eCO2=?????", color=0x000000)
eco2.anchor_point = (0, 1)
eco2.anchored_position = (130, 235)
splash = displayio.Group()
splash.append(background)
splash.append(mouth)
splash.append(message)
splash.append(tvoc)
splash.append(eco2)
clue.display.root_group = splash
# setup SGP30 and wait for initial warm up
i2c = board.I2C() # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller
sgp30 = adafruit_sgp30.Adafruit_SGP30(i2c)
time.sleep(15)
# loop forever
while True:
eCO2, TVOC = sgp30.iaq_measure()
tvoc.text = "TVOC={:5d}".format(TVOC)
eco2.text = "eCO2={:5d}".format(eCO2)
level = 0
for thresh in TVOC_LEVELS:
if TVOC <= thresh:
break
level += 1
if level <= len(TVOC_LEVELS):
message.text = MESSAGES[level]
mouth[0] = level
else:
message.text = "????"
time.sleep(1)