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.
84 lines
2.3 KiB
Python
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)
|