Having now built the required PCBs and obtained a panel, this post starts to think about the actual mechanical assembly of the MiniDexed TX816.
Proposed posts in this series:
- Part 1: Introduction, context, and high-level design.
- Part 2: PCB design.
- Part 3: Panel design.
- Part 4: PCB assembly.
- Part 5: Mechanical assembly and code.
- Part 6: In use!

Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
If you are new to microcontrollers and single board computers, see the Getting Started pages.
Pico and IO Integration Test
Prior to the full mechanical assembly, I thought it prudent to check that the Pico was able to correctly talk to both IO panels. And to be honest, I really wanted to see those LEDs in the panel for the first time!
Recall, that the current status is as follows:

I'm still not adding the Raspberry Pi itself into the mix, so I've kept the "Pico 5V" patch from testing the IO boards (see photo below), and I'm relying on the Pico for 3V3 power too, both of which will be supplied via the Pico's USB interface.
The IO board for TG1-4 can be directly connected to the Interface board using the soldered on headers. The IO board for TG5-8 still has no connector, so I'm going to keep using the "fishing line trick" to temporarily use a 20-way dupont style pin to socket cable to connect it to the Interface board.
But first I need to decide on the fixing on the Interface board. I've now added a 20-way set of right-angled pin headers soldered to the top of the board as shown below.

The three boards and be assembled and then, optionally, but as I say, this was my main reason for doing this test in the first place, they can carefully be inserted into the panel for testing.



Take particular care with the 16 individual LEDs. But if the panel was used to correctly align them and set the height as suggested previously, hopefully they will line up and push back in with just a little, gentle encouragement!
Full IO Panel Integration Code
The code for the IO panel is a slight evolution of the previous code. It has now been extended in the following ways:
- It now scans all 8 switches.
- It now drives all 16 LEDs via the two shift registers.
- It monitors all 8 potentiometers.
- It now initialises the MAX7219 library for 16 digits, with 8 "scan_digits" indicated - i.e. 8 digits per MAX7219.
During the course of this testing, I've actually updated the two libraries I'm using. Recall, I am using the following:
And have already updated the MAX7219 library to support the Pico's SPI 0 bus on GPIO 16-19.
It turns out there is a bug in the cascade handling (or I think there is anyway). There seems to be additional flicker in the second set of digits in the cascade, but that can be fixed by updating the MAX7219 library's flush() command.
To fix this (optionally), the following line must be updated as shown:
#self._write([pos + MAX7219_REG_DIGIT0, buffer[pos + (current_dev * self.scan_digits)]] + ([MAX7219_REG_NOOP, 0] * dev)) # Replace with: self._write(([MAX7219_REG_NOOP, 0] * (self.devices-dev)) + [pos + MAX7219_REG_DIGIT0, buffer[pos + (current_dev * self.scan_digits)]] + ([MAX7219_REG_NOOP, 0] * dev))
This has been reported as an issue against the library, so this might even be fixed by the time you read this. Either way it is optional. Everything else works fine without this fix anyway.
Find the test code on GitHub here.
MiniDexed IO Mounting
tbd.
Raspberry Pi Integration
tbd.
Pico MIDI Router and TX816 IO Code
tbd.
Closing Thoughts
tbd.
Kevin
No comments:
Post a Comment