tested with trinket M0 for CircuitPython
This commit is contained in:
parent
b76e23a798
commit
53e0163a70
2 changed files with 72 additions and 0 deletions
68
Breath_Tester/Breath_Tester.py
Normal file
68
Breath_Tester/Breath_Tester.py
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
import time
|
||||||
|
import board
|
||||||
|
import busio
|
||||||
|
import adafruit_sgp30
|
||||||
|
|
||||||
|
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
|
||||||
|
|
||||||
|
# Create library object on our I2C port
|
||||||
|
sgp30 = adafruit_sgp30.Adafruit_SGP30(i2c)
|
||||||
|
sgp30.iaq_init()
|
||||||
|
sgp30.set_iaq_baseline(0x8973, 0x8aae)
|
||||||
|
|
||||||
|
# highest tVOC recorded in 30 seconds
|
||||||
|
highest_breath_result = 0
|
||||||
|
|
||||||
|
def warmup_message():
|
||||||
|
|
||||||
|
warmup_time = 20
|
||||||
|
warmup_counter = 0
|
||||||
|
|
||||||
|
co2eq, tvoc = sgp30.iaq_measure() # initial read required to get sensor going
|
||||||
|
|
||||||
|
print()
|
||||||
|
print("Warming Up [%d seconds]..." % warmup_time)
|
||||||
|
|
||||||
|
while ( warmup_counter <= 20 ):
|
||||||
|
print('.', end='')
|
||||||
|
time.sleep(1)
|
||||||
|
warmup_counter += 1
|
||||||
|
|
||||||
|
def get_breath_reading():
|
||||||
|
|
||||||
|
breath_time = 30 # seconds to record breath reading
|
||||||
|
breath_counter = 0 # one second count up to breath_time value
|
||||||
|
breath_saves = [0] * ( breath_time + 1 ) # initialize list with empty values
|
||||||
|
|
||||||
|
print()
|
||||||
|
print("We will collect breath samples for 30 seconds.")
|
||||||
|
print("Take a deep breath and exhale into the straw.")
|
||||||
|
input(" *** Press a key when ready. *** ")
|
||||||
|
print()
|
||||||
|
|
||||||
|
while ( breath_counter <= breath_time ):
|
||||||
|
co2eq, tvoc = sgp30.iaq_measure()
|
||||||
|
breath_saves[breath_counter] = tvoc
|
||||||
|
print(tvoc, ', ', end='')
|
||||||
|
time.sleep(1)
|
||||||
|
breath_counter += 1
|
||||||
|
|
||||||
|
breath_saves = sorted(breath_saves)
|
||||||
|
highest_breath_result = breath_saves[breath_counter - 1]
|
||||||
|
|
||||||
|
return(highest_breath_result)
|
||||||
|
|
||||||
|
# show the highest reading recorded
|
||||||
|
def show_results(highest_breath_result):
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
print("peak VOC reading:", highest_breath_result)
|
||||||
|
print()
|
||||||
|
input("Press any key to test again")
|
||||||
|
print()
|
||||||
|
|
||||||
|
# main
|
||||||
|
while True:
|
||||||
|
warmup_message()
|
||||||
|
highest_breath_result = get_breath_reading()
|
||||||
|
show_results(highest_breath_result)
|
||||||
4
Breath_Tester/README.md
Normal file
4
Breath_Tester/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Breath_Tester
|
||||||
|
|
||||||
|
Code to accompany this tutorial:
|
||||||
|
https://learn.adafruit.com/breath-tester
|
||||||
Loading…
Reference in a new issue