import os, sys, io
import M5
from M5 import *
from unit import CO2Unit
import m5utils
import time
from hardware import Pin
from hardware import I2C
TITLE = None
STATUS = None
BATTERY = None
CONCENTRATION_VALUE = None
TEMPERATURE_VALUE = None
HUMIDITY_VALUE = None
HUMIDITY_BAR = None
TEMPERATURE_BAR = None
CONCENTRATION_BAR = None
TEMPERATURE_TEXT = None
CONCENTRATION_TEXT = None
HUMIDITY_TEXT = None
i2c0 = None
co2_0 = None
concentration_value = None
humidity_value = None
temperature_value = None
concentration_bar = None
humidity_bar = None
temperature_bar = None
power_mode = None
screen_brightness = None
# get and show concentration as value and bar
def Show_Concentration_Value_and_Bar():
global concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness, TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0
concentration_value = int(co2_0.co2)
concentration_bar = int(m5utils.remap(concentration_value, 300, 2100, 0, 135))
CONCENTRATION_VALUE.setText(str(concentration_value))
CONCENTRATION_BAR.setSize(w=concentration_bar, h=20)
if concentration_value < 800:
CONCENTRATION_BAR.setColor(color=0x33cc00, fill_c=0x33cc00)
if concentration_value >= 800 and concentration_value < 1000:
CONCENTRATION_BAR.setColor(color=0x66ff99, fill_c=0x66ff99)
if concentration_value >= 1000 and concentration_value < 1400:
CONCENTRATION_BAR.setColor(color=0xffff00, fill_c=0xffff00)
if concentration_value >= 1400:
CONCENTRATION_BAR.setColor(color=0xff0000, fill_c=0xff0000)
# get and show humidity as value and bar
def Show_Humidity_Value_and_Bar():
global concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness, TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0
humidity_value = int(co2_0.humidity)
humidity_bar = int(m5utils.remap(humidity_value, 0, 100, 0, 135))
HUMIDITY_VALUE.setText(str(humidity_value))
HUMIDITY_BAR.setSize(w=humidity_bar, h=20)
# get and show temperature as value and bar
def Show_Temperature_Value_and_Bar():
global concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness, TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0
temperature_value = int(co2_0.temperature)
temperature_bar = int(m5utils.remap(temperature_value, 0, 100, 0, 135))
TEMPERATURE_VALUE.setText(str(temperature_value))
TEMPERATURE_BAR.setSize(w=temperature_bar, h=20)
# Describe this function...
def Show_Battery_Voltage_and_Capacity():
global concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness, TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0
STATUS.setText(str((str((Power.getBatteryVoltage())) + str('mV'))))
BATTERY.setText(str((str((Power.getBatteryLevel())) + str('%'))))
def setup():
global TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0, concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness
M5.begin()
Widgets.setRotation(0)
Widgets.fillScreen(0x000000)
TITLE = Widgets.Title("CO2 Ampel", 13, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
STATUS = Widgets.Label("0000mV", 78, 220, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat12)
BATTERY = Widgets.Label("000%", 5, 220, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat12)
CONCENTRATION_VALUE = Widgets.Label("0", 30, 35, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
TEMPERATURE_VALUE = Widgets.Label("0", 30, 95, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
HUMIDITY_VALUE = Widgets.Label("0", 30, 155, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
HUMIDITY_BAR = Widgets.Rectangle(0, 180, 135, 20, 0x0025ff, 0x0025ff)
TEMPERATURE_BAR = Widgets.Rectangle(0, 120, 135, 20, 0xf705ec, 0xf705ec)
CONCENTRATION_BAR = Widgets.Rectangle(0, 60, 135, 20, 0xffffff, 0xffffff)
TEMPERATURE_TEXT = Widgets.Label("T:", 5, 95, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
CONCENTRATION_TEXT = Widgets.Label("C:", 5, 35, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
HUMIDITY_TEXT = Widgets.Label("H:", 5, 155, 1.0, 0xffffff, 0x000000, Widgets.FONTS.Montserrat18)
power_mode = False
screen_brightness = 10
Widgets.setBrightness(screen_brightness)
i2c0 = I2C(0, scl=Pin(33), sda=Pin(32), freq=100000)
co2_0 = CO2Unit(i2c0)
co2_0.set_stop_periodic_measurement()
co2_0.set_factory_reset()
co2_0.set_start_periodic_measurement()
while not (co2_0.is_data_ready()):
time.sleep_ms(100)
Show_Concentration_Value_and_Bar()
Show_Temperature_Value_and_Bar()
Show_Humidity_Value_and_Bar()
Show_Battery_Voltage_and_Capacity()
def loop():
global TITLE, STATUS, BATTERY, CONCENTRATION_VALUE, TEMPERATURE_VALUE, HUMIDITY_VALUE, HUMIDITY_BAR, TEMPERATURE_BAR, CONCENTRATION_BAR, TEMPERATURE_TEXT, CONCENTRATION_TEXT, HUMIDITY_TEXT, i2c0, co2_0, concentration_value, humidity_value, temperature_value, concentration_bar, humidity_bar, temperature_bar, power_mode, screen_brightness
M5.update()
if co2_0.is_data_ready():
Show_Concentration_Value_and_Bar()
Show_Temperature_Value_and_Bar()
Show_Humidity_Value_and_Bar()
Show_Battery_Voltage_and_Capacity()
time.sleep(15)
if __name__ == '__main__':
try:
setup()
while True:
loop()
except (Exception, KeyboardInterrupt) as e:
try:
from utility import print_error_msg
print_error_msg(e)
except ImportError:
print("please update to latest firmware")
Comments