pimoroni-pico/micropython/examples/inventor2040w/read_adcs.py

48 lines
1.3 KiB
Python

import time
from machine import Pin
from pimoroni import Analog
from inventor import Inventor2040W, ADCS, NUM_ADCS, LED_A0
"""
Shows how to initialise and read the 3 ADC headers of Inventor 2040 W.
Press "User" to exit the program.
"""
BRIGHTNESS = 0.4 # The brightness of the LEDs
UPDATES = 10 # How many times to update LEDs per second
ADC_NAMES = ("A0", "A1", "A2")
# Create a new Inventor2040W
board = Inventor2040W()
# Create an analog object for each ADC
analogs = [Analog(i) for i in ADCS]
# Create an accompanying pin object to each analog,
# so that they can be pulled low. This avoids random
# numbers when nothing is connected to any of the pins.
pulls = [Pin(i, Pin.IN, Pin.PULL_DOWN) for i in ADCS]
# Read the ADCs until the user button is pressed
while not board.switch_pressed():
# Read each ADC in turn and print its voltage
for i in range(NUM_ADCS):
voltage = analogs[i].read_voltage()
print(ADC_NAMES[i], " = ", round(voltage, 3), sep="", end=", ")
# Set the neighbouring LED to a colour based on the
# voltage, with Green for high and Blue for low
hue = (2.0 - (voltage / 3.3)) * 0.333
board.leds.set_hsv(i + LED_A0, hue, 1.0, BRIGHTNESS)
# Print a new line
print()
time.sleep(1.0 / UPDATES)
# Turn off the LED bars
board.leds.clear()