Firmware has been completed and tested for the solenoid driver board. I added a little bit more functionality to allow inputs that are not used to kick a solenoid to be used as state inputs. That works swimmingly well.
The solenoids can now be kicked using either the input, or the processor setting the bit to tell the solenoid to kick. If set by the processor, the solenoid can be configured to automatically clear the bit, or it can keep the input set until the processor tells it to clear.
The solenoid can be configured to use an initial kick of variable length, or it can be configured to give a hard initial kick, and then a PWM to “maintain” the solenoid. (i.e. good for flippers where you want a hard kick, then a sustain so you don’t burn up your coil.) It also has a configurable dead timer so a hardware errors can cause a solenoid to kick so frequently that it burns up its coil.
Next up is to make up an LED driver board (simple since it is a single chip and about ten connectors) and test that one. Of all the boards, that is probably the simplest. ) After that, all that is left is trying to finish the macro language to run the actual machine. At that point, I should have a complete card set to run a pinball machine with a simple way to create a set of rules for scoring, and moving between modes.
I’m starting to worry that the Raspberry Pi won’t be beefy enough to run what I need. I started looking into running Java on the pi so that I could run vlcj. (vlcj are the java binding for the VLC player). I don’t think the VLC player is currently supported on the raspberry pi using hardware acceleration which seems like a big issue. It means that my video playback is going to eat up a lot of the CPU time. It might be that the raspberry isn’t quite ready, and I simply do my prototyping on some mini-ITX platform. (That was my original plan before acquiring the pi, but I got excited that I might be able come up with a simpler/more elegant solution.) Now I’m starting to worry that the CPU will be underpowered when using video playback. I’m assuming that there will be a video playback loop running continuously to tell you what mode you are in, for splashiness, etc.