This is my first real project in both building something and programming, so I'm aware that there's a lot of bad practices I've done and that there's better ways to do things, but I'm learning as I go, criticism and comments are appreciated as I'm sure there's a lot of people here that know how to do things a lot easier and better than I am now.
This project is a CRT and VFD based clock, it uses B/W CRT viewfinders from old camcorders as digit displays and I later added a 16 character alphanumeric VFD for extra into such as a settings interface, date, and other such information that is better suited on more than a 6 character display. It uses 7 ATMega328p micros, 6 as slaves to drive the viewfinders as the TVOut library only supports one instance per chip, and a 7th micro as a master to control the slaves, VFD, and talk to the RTC. When I started this project it was just supposed to be a silly clock, but I guess I let it get away from me.
The program is setup so that in it's normal state the slaves boot into a single character mode where they receive a character over serial and display it horizontally (as that is the biggest format for the viewfinders that can be rotated), beyond that there are special characters setup to change modes to either a terminal mode where it can use tv.print and other modifiers to display text, or go into a vertical clock mode. The master similarly uses special characters to change it from clock mode and allow serial input to the displays, this also lets the setup double as a message box, it can be connected to 6 larger displays and have messages displayed across them individually. the libraries folder contains the non standard libraries and the ones that aren't in there that I use are included locally with the program. I'll include the spreadsheet that I made previously listing some of them but it's not fully up to date since I'm still adjusting what does what, eventually I'll only have 1 or 2 special characters and I'll look at the next one as a function call so I don't limit the number of characters that can be displayed too much.
My next steps are mainly to get some boards made up and build a case, I've already ordered some slave boards from OSHPark, I'm not expecting them to work, but it was just cheap enough I felt like trying, it'll be easier to troubleshoot whatever I did wrong with a physical board, the master board will have to wait until I'm done making my program, I'm waiting to hear back from someone that might have some sensors for me to add to this and I'll want to have headers for them on the board. But mainly I need to figure out what I can do for a case, given that these are CRT's there's still a few kv on them, so I'd like to have that isolated, but I'd also like the boards to be visible, nor do I know how to handle the VFD, I may move it to it's own smaller board or trim the one it's on. I really just need to find something to start off with and change it as needed.
The current programs are available here
https://www.dropbox.com/sh/s6mlbqfg09xov47/AAB_hlXCHHFj4W7clvx9udQSa?dl=0 as well as some short videos and more pictures. Curently the clock is broken down to 2 Arduino unos, the VFD, and a PSOne screen for testing. I'm sure there's some stuff I forgot to mention but that's the general overview of it.