App sync code, handles button presses from mixer and syncs changes from VM. Included python code from the mixer. Some other PCB changes, but still needs improvements

This commit is contained in:
2024-05-16 23:42:27 -05:00
parent efdbb11f92
commit 700e87f807
39 changed files with 4246 additions and 3514 deletions

View File

@@ -0,0 +1,63 @@
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)