3 hours

I researched the different components that are going to be used in the PCB itself.

First, I looked for a rotary encoder, tactile switches, a toggle switch, and some sort of LED display for showing information.

Each of these parts took surprisingly long to find. I quickly decided on going for a mostly SMD-based layout, so I found a Bourns encoder that is pretty much solely SMD (which is pretty uncommon for rotary encoders which tend to be THT). For the toggle switches and tactile switches, it was mostly preference that made them take a while to find, since Digikey stocks a lot of parts with very small differences.

Another part that took a while to find was the LED display. I decided that I didn’t want to go with a standard 8-segment one and rather wanted to use a 14-segment display, but that ended making stuff more complicated as not all of the displays were of the right size and some didn’t have castellated pads (meaning that they would be harder to use in the PCB itself). However, I eventually found a good one from Kingbright that had the specs that I needed.

Now, based on these parts, I needed to find some microcontroller that had the right specs. I initially was debating a bare microcontroller but in a DIP package, but decided to instead go for a larger board. However, as a design goal, I wanted to use USB-C, which quickly eliminated some boards like the Pi Pico. Also, since I’m using a 14-segment display, the board needs to have a lot of GPIO pins drive the LED segments (meaning already 15 are needed for this single part).

After quite a bit of contemplation, I found the Adafruit Feather which looked good, but it a bit too big for the size of PCB I wanted. I then ended up realizing that the Arduino Nano R4 was the perfect choice, although it is also a bit big, but that can be solved by just mounting it below the PCB instead of on top, where the port can still be accessed.

So, based on this research, I found the parts that I needed to proceed with the build.