CircuitPython Code

The Circuit Playground Express boards can run CircuitPython — a different approach to programming compared to Arduino sketches. In fact, CircuitPython comes factory pre-loaded on the Circuit Playground Express. If you’ve overwritten it with an Arduino sketch, or just want to learn the basics of setting up and using CircuitPython, this is explained in the Adafruit Circuit Playground Express Guide

To use the code below, plug the Circuit Playground Express into USB…it should show up on your computer as a small flash drive…then edit the file “main.py” with your text editor of choice. Select and copy the code below and paste it into that file, entirely replacing its contents (don’t mix it in with lingering bits of old code). When you save the file, the code should start running almost immediately.

import time

import board 
import busio
import adafruit_CCS811
import neopixel

# i2c interface for the gas sensor
i2c_bus = busio.I2C(board.SCL, board.SDA)
ccs = adafruit_CCS811.CCS811(i2c_bus)

# Three Different NeoPixel 8 LED Lengths for Output:
# 1 - Temperature - Circuit Playground Built-In LEDs
# 2 - Total Volatile Organic Compounds [strip]
# 3 - Co2 Output - NeoPixel [strip]
num_leds = 8 
temperature_pix = neopixel.NeoPixel(board.NEOPIXEL, num_leds, brightness=.1)
tvoc_pix = neopixel.NeoPixel(board.A1, num_leds, bpp=4, brightness=.1)
co2_pix = neopixel.NeoPixel(board.A2, num_leds, bpp=4, brightness=.1)
led_draw = .05      # delay for LED pixel turn on/off

# wait for the sensor to be ready and calibrate the thermistor
while not ccs.data_ready:
    pass
temp = ccs.temperature
ccs.temp_offset = temp - 25.0

# clear all LEDs for breathing effect 
def clear_pix(delay):
    for i in range(0, num_leds):
        temperature_pix[i] = (0,0,0)
        co2_pix[i] = (0,0,0,0)
        tvoc_pix[i] = (0,0,0,0)
        time.sleep(delay)
    
# Show Carbon Dioxide on a NeoPixel Strip
def co2_led_meter():
    co2_floor = 400
    co2_ceiling = 8192
    
    # Map CO2 range to 8 LED NeoPixel Stick
    co2_range = co2_ceiling - co2_floor 
    co2_led_steps = co2_range / num_leds
    co2_leds = int( (ccs.eCO2 - co2_floor ) / co2_led_steps)

    # Insert Colors
    for i in range(0, (co2_leds - 1) ):
        co2_pix[i] = (255,0,255,0)
        time.sleep(led_draw)

# Show Total Volatile Organic Compounds on a NeoPixel Strip
def tvoc_led_meter():
    tvoc_floor = 0
    tvoc_ceiling = 1187
    
    # Map CO2 range to 8 LED NeoPixel Stick
    tvoc_range = tvoc_ceiling - tvoc_floor 
    tvoc_led_steps = tvoc_range / num_leds
    tvoc_leds = int(ccs.TVOC / tvoc_led_steps)

    # Insert Colors
    for i in range(0, (tvoc_leds - 1) ):
        tvoc_pix[i] = (0,0,255,0)
        time.sleep(led_draw)

# Show Temperature on Circuit Playground built-in NeoPixels
def temp_led_meter():
    temp_floor = 23
    temp_ceiling = 36
    
    # Map temperature range to 8 LEDs on Circuit Playground
    temp_range = temp_ceiling - temp_floor 
    temp_led_steps = temp_range / num_leds
    temp_leds = int( (ccs.temperature - temp_floor ) / temp_led_steps)

    # Insert Colors
    for i in range(0, (temp_leds - 1) ):
        temperature_pix[i] = (255,255,0)
        time.sleep(led_draw)

while True:
    # print to console
    # - co2
    # - total voltatile organic compounds 
    # - temperature in celsius
    print("CO2: ", ccs.eCO2, " TVOC:", ccs.TVOC, " temp:", ccs.temperature)

    co2_led_meter()
    tvoc_led_meter()
    temp_led_meter()

    time.sleep(.5)
    clear_pix(led_draw)
Last updated on 2018-01-11 at 05.54.46 PM Published on 2018-01-11 at 05.57.15 PM