Recently we have been experimenting with dual VFO code on a single Arduino/Si5351 and porting this code over to: 1) The Color TFT Touch Screen, 2) "our standard" 160X128 Color TFT and now 3) the 1 inch square two color OLED.
Seasoned Arduino/Si5351, software savvy hams would say what is the big deal? We have been doing this since day one. That is absolutely true for you but a very recent experience for me.
Needless to say the various displays have all presneted challenges in their own right. The first hurdle was to create two vfo's and the second (much larger) was to get them to operate independently. I struggled with the problem of how to keep the frequencies separate when switching back and forth. Several ham friends were kind enough to provide me their code; but that also presented some problems in that the functions didn't quite mate with my rigs.
Peristence paid off (actually it was accidental) and we now have the process working; and for the most part a template that can be commonly shared.
I adopted a scheme where you can receive on either VFO; but on transmit it defaults to VFO A. I was not quite able to get this work entirely in software; but the add of one small relay facilitates that process with the bonus that same relay will key an external linear amplifier --- so not all bad.
So OK here is what the relay does which is a DPDT with a 5 volt coil connected to one of the Arduino pins. Its current draw being 28 Ma. is safely below the max rating of 40 Ma. per pin. Grounding one of the Arduino pins selects either VFO A or VFO B. This was done so that the actual Arduino is set to HIGH or LOW in software (not dierctly). This enables placing the rig in transmit for functions such as TUNE.
If you are receiving on VFO B, in series with the control signal to the VFO select pin is a NC relay contact. On Transmit the relay is energized which opens the select VFO B link and the VFO is now on VFO A for transmitting. At the same time on the other half of the relay the NO contacts are closed which can key the linear amp -- a "twofer".
The display now shows the transmit frequency (VFO A) and the received frequency VFO B. If you have the VFO select switch in the VFO A, position then all receiving and transmitting is done on VFO A. With additional switching and more code you could select Receive A and Transmit B. But this was a huge hill to climb just to get to this point.
We cleared those two major hurdles and now the fun part of adding features and functionalities.
Next was how to get the information to display properly which was a real challenge with the 1" OLED. The Text Size 1, hardly shows up. So for the small OLED we are stuck with Text Size 2 or 3. We even have the OLED code working on the 1/2 sized OLED -- which for most functions is readable. A further "code twizzle" might be in order were this 1/2 sized OLED used permanently in a rig. But the small size is very appealing when mated with an Arduino Pro-Mini as the footprint would really be small.
Along the way I learned how to use "Splash Screens". There is a bit of fun to post some messages ahead of when the program executes --- and to make it happen only once! If you see the upcoming video -- don't laugh too hard.
The Touch Screen Color TFT has been put aside while I build the double conversion transceiver; but I do have the 160X128 Color TFT working with a transceiver. A day ago I completed the OLED code and it took me nearly a full day to get all the functionalities aligned and to have everything display at some location.
My concentrated effort on the two VFO code and various displays is an alternative to observing the daily antics of our emperor (small e). It is all about my mental health!