63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
import usb_mixer
|
|
import board
|
|
import adafruit_dotstar
|
|
import analogio
|
|
import time
|
|
import math
|
|
import ulab.numpy
|
|
import supervisor
|
|
import key_interface
|
|
import storage
|
|
|
|
ANALOG_SAMPLE_SIZE=150
|
|
|
|
pixel = adafruit_dotstar.DotStar(board.DOTSTAR_CLOCK, board.DOTSTAR_DATA, 1)
|
|
slider_in = [
|
|
analogio.AnalogIn(board.A0),
|
|
analogio.AnalogIn(board.A1),
|
|
analogio.AnalogIn(board.A2),
|
|
analogio.AnalogIn(board.A3),
|
|
analogio.AnalogIn(board.A4)
|
|
]
|
|
|
|
i2c = board.I2C()
|
|
keys = key_interface.KeyInterface(i2c)
|
|
|
|
slider_vals = [0,0,0,0,0]
|
|
buttons = [0,0,0,0,0]
|
|
|
|
def readSlider(num):
|
|
vals = []
|
|
for i in range(0, ANALOG_SAMPLE_SIZE):
|
|
vals.append((slider_in[num].value / 0xFFFF) * 0xFFF) # Scale analogio back to ADC resolution
|
|
val_median = ulab.numpy.mean(ulab.numpy.ndarray(vals))
|
|
return math.floor((val_median / 0xFFF) * usb_mixer.RESOLUTION)
|
|
|
|
try:
|
|
pixel.fill((0,0,32))
|
|
while not supervisor.runtime.usb_connected:
|
|
time.sleep(0.5)
|
|
|
|
mixer = usb_mixer.UsbMixer()
|
|
pixel.fill((0,32,0))
|
|
while True:
|
|
new_values = [
|
|
readSlider(0),
|
|
readSlider(1),
|
|
readSlider(2),
|
|
readSlider(3),
|
|
readSlider(4)
|
|
]
|
|
new_buttons = keys.scan()
|
|
if new_values != slider_vals or new_buttons != buttons:
|
|
mixer.send_values(new_values[0], new_values[1], new_values[2], new_values[3], new_values[4], new_buttons)
|
|
pixel.fill((32,32,32))
|
|
slider_vals = new_values
|
|
buttons = new_buttons
|
|
pixel.fill((0,32,0))
|
|
time.sleep(0.001)
|
|
except Exception as ex:
|
|
pixel.fill((255,0,0))
|
|
with open("/runtime_ex.txt", "w") as fp:
|
|
fp.write(ex)
|
|
print(ex) |