So I've been doing electronics for a number of years and the concept of microcontrollers weren't new to me, but I dont consider myself a programmer so I never thought I'd go down that route. I was usually interfacing to something already written. I dabbled in some Python with a RPi project I designed and decided I needed to take the plunge and see if I could learn some Arduino.
Meet what I think I'll be calling HiFiLogix
This is just the development version which has most of the hardware Im using. Here is a (mostly complete) schematic to study before I get in to the details.
So here is thr situation; my vintage early 80s stereo has this rather stupid method of using a series of switches to get audio in to the main board. Now while switches are expected for the vintage equipment, its now they did the switches. They are not in parallel but are in series; the NC contacts of each selection are connected to the wiper/actuator of the next switch. At most it means audio has to move through 5 sets of contacts. They're also entirely sealed...no amount of soaking with Deoxit has helped. As a result, I have no source selection.
So my idea was to parallel the actuator of a bunch of relays instead. The relays are physically driven by a ULN2003/ULN2803. This is driven by parallel data from the good ol' 595 shift register.
Now this seems excessive for what I need, I could easily use simple logic to achieve what I want. But this unit has a custom segmented LCD that is set up by additional contacts on the input switches (they are 6PDT). Rather than try to work out how to drive the existing LCD, replacing it with a 128x32 OLED seemed like an easier option.
Of course, if Im doing that, why not add a remote control? So I did. By this point it was clear that I was basically adding logic control to a vintage stereo, so I have plans to obtain motorized potentiometers that I'll integrate at some point.
My source code as well as links to YouTube videos are on my git repository (which has an unoriginal name I'm considering changing):
The prototype is currently just showing me the parallel output with LEDs and is using the I2C version of the 1602 display. I should have a bunch of parts waiting for me when I get home from work, so I'll start working on the 128x32 OLED code as well as building a fully functional prototype on something besides a messy looking breadboard.
Overall I was impressed I got the code working.my programming background is very limited amounts of Python; and diving in to Arduino wasn't anywhere near as bad as I thought. Rather than the several weeks I expected to be learning code, I spent just a couple hours over a couple days getting things written.
Thanks for reading. 73.