kopia lustrzana https://github.com/pimoroni/pimoroni-pico
AS7343: Tufty 2040 spectrometer example.
rodzic
6fcbaf5616
commit
8bb17087d9
|
@ -0,0 +1,97 @@
|
|||
from picographics import PicoGraphics, DISPLAY_TUFTY_2040, PEN_P4
|
||||
from breakout_as7343 import BreakoutAS7343
|
||||
from pimoroni_i2c import PimoroniI2C
|
||||
|
||||
|
||||
display = PicoGraphics(DISPLAY_TUFTY_2040, pen_type=PEN_P4, rotate=90)
|
||||
|
||||
WIDTH, HEIGHT = display.get_bounds()
|
||||
|
||||
BLACK = display.create_pen(0, 0, 0)
|
||||
|
||||
FZ = display.create_pen(0, 0, 128)
|
||||
FY = display.create_pen(0, 255, 0)
|
||||
FXL = display.create_pen(255, 128, 0)
|
||||
NIR = display.create_pen(128, 0, 0)
|
||||
F2 = display.create_pen(128, 0, 128)
|
||||
F3 = display.create_pen(0, 0, 255)
|
||||
F4 = display.create_pen(0, 128, 255)
|
||||
F6 = display.create_pen(128, 64, 0)
|
||||
|
||||
F1 = display.create_pen(196, 0, 196)
|
||||
F5 = display.create_pen(64, 255, 64)
|
||||
F7 = display.create_pen(255, 0, 0)
|
||||
F8 = display.create_pen(196, 0, 0)
|
||||
|
||||
WHITE = display.create_pen(255, 255, 255)
|
||||
|
||||
i2c = PimoroniI2C(sda=4, scl=5)
|
||||
as7343 = BreakoutAS7343(i2c)
|
||||
|
||||
as7343.set_channels(18)
|
||||
as7343.set_gain(1024)
|
||||
as7343.set_measurement_time(33) # Roughly 30fps at 16ms/measurement
|
||||
as7343.set_integration_time(27800)
|
||||
|
||||
as7343.set_illumination_current(4)
|
||||
as7343.set_illumination_led(True)
|
||||
|
||||
|
||||
BAR_WIDTH = 18
|
||||
BAR_SPACING = 4
|
||||
MARGIN = display.measure_text("NIR") + 2
|
||||
BAR_HEIGHT = WIDTH - MARGIN
|
||||
|
||||
OFFSET_LEFT = int((HEIGHT - ((BAR_WIDTH + BAR_SPACING) * 12)) / 2)
|
||||
|
||||
# Satrting max values for auto-ranging
|
||||
# From figure 8 of the datasheet
|
||||
MAX_VALUES = [
|
||||
2711,
|
||||
4684,
|
||||
5970,
|
||||
13226,
|
||||
2371,
|
||||
962,
|
||||
3926,
|
||||
4170,
|
||||
7760,
|
||||
1967,
|
||||
6774,
|
||||
1166
|
||||
]
|
||||
|
||||
LABELS = [
|
||||
"FZ",
|
||||
"FY",
|
||||
"FXL",
|
||||
"NIR",
|
||||
"F2",
|
||||
"F3",
|
||||
"F4",
|
||||
"F6",
|
||||
"F1",
|
||||
"F5",
|
||||
"F7",
|
||||
"F8"
|
||||
]
|
||||
|
||||
|
||||
while True:
|
||||
display.set_pen(0)
|
||||
display.clear()
|
||||
readings = as7343.read()
|
||||
for i, reading in enumerate(readings):
|
||||
MAX_VALUES[i] = max(reading, MAX_VALUES[i])
|
||||
scaled = int(reading / MAX_VALUES[i] * BAR_HEIGHT)
|
||||
|
||||
y = i * (BAR_WIDTH + BAR_SPACING)
|
||||
y += OFFSET_LEFT
|
||||
|
||||
display.set_pen(i + 1)
|
||||
display.rectangle(MARGIN, y, scaled, BAR_WIDTH)
|
||||
|
||||
display.set_pen(WHITE)
|
||||
display.text(LABELS[i], 0, y + 1)
|
||||
|
||||
display.update()
|
Ładowanie…
Reference in New Issue