Quoted from legtod2:
As the APC ages, some things can go wrong. System diagnostics would be handy to test especially after everything is all nicely soldered to the board.
A simple 3 led Red, Yellow, Green diagnostic is ok. But, what I would suggest be a consideration is a simple I2c connector for a 20x4 LCD/LED display.
Having a Momentary switch or two enable a diagnostic test or dipswitch setting which cycles through a health test of the APC board with output feeding the 20x4 LCD/LED display and/or the 3 led Red,Yellow, Green lights.
There is a built-in test/service mode in APC and another one in MPF. Let us know if you are missing anything there.
Quoted from legtod2:
The arduino default state for the pins caused all my solenoids to fire on boot up, blowing a fuse on the playfield. This lead to a procedure to what got booted first. Simple fix but explains how some confussion can happen on Master slave relationships.
The protocol is well tried with LISY already. We could document that a bit more. However, this works like other pinball controllers such as the SPIKE, P-Roc or FAST protocol. So we are pretty sure that we got it right.
Quoted from legtod2:
Sound On/Off/index#. Pinmame uses samples and a collection of zip files. Plus it also can use the native rom file and its associated sound file references.
It sometimes confuses when you having custom sound samples that overide the original rom sound. Documenting how the sound index number work will save for confussion of the homebrew developer. The index number can for example be (0-100 rom index sounds), (101-200 samples zip file references), etc.
Those commands are for existing machines. We have no influence on the numbers and Pinmame also just emulates those numbers. Frank already has this running with LISY and Pinmame.
Quoted from legtod2:
I noticed the protocol usually consisted of individual lamps, solenoid status instead of using an array status of all lamps or solenoids.
We got list for modern lamps. You need that for synchronized fades of RGB lights. For all other lamps the complexity is not worth the effort. PD-LED, FAST and Spike do exactly the same.
Quoted from legtod2:
Same is true for changed status. I don't want to spark an academic debate, just wondered if exchanging an array state was considered in the discussion.
This is a matter of efficiency. This way we only need one byte. Other platforms just indicate a change and you need to poll the board after that (Spike) or rely on event polling (P-Roc/FAST). So this is quite a bit more efficient. However, it limits the protocol to 127 switches.
Quoted from legtod2:
Watchdog and Solenoid On/Off (Which came first the chicken or the watch dog timer). This may cause issues for the inexperienced homebrew coders.
Default values, of which overrides the other could cause machine gunning solenoid bumpers or weak flippers activations. Another avenue to watch is latency between master and slave configuration. Some form of messaging "Like stuck on solenoid to a LCD/LED" would be handy.
That is not really an issue. Watchdog just needs to arrive regularly (like P-Roc and FAST). Machine gunning is prevented by debounce times and you need to configure those before enabling rules. Stuck on solenoids should not be possible with that unless you manually enable the coil. But that needs to happen intentionally. You cannot create warnings when you told the hardware to behave in a certain way.
Jan