Quoted from slochar:This is not 100% correct, the solenoid will fire for a fixed interval no matter what at the first closure.
Forgive me, I said:
"closed" switch, and then just hold on the solenoid if they see a valid closure of "open" "closed" "closed".
I should have said:
"closed" switch, and then just hold on the solenoid *for a predetermined amount of time* if they see a valid closure of "open" "closed" "closed".
That's what my code does. In Galaxy2021.h, I have definitions for each of the "responsive" solenoids (pops & slings) to dictate how each of them behaves on seeing a "valid" closure. The solenoid fires immediately when it sees a "responsive" switch, and then hold on for a certain number of interrupts if it sees a "valid" closure, as described here:
instantaneous closure (resized).jpg
I suppose it's possible that Bally/Stern later changed their code to deviate from "Bally Theory of Operation"'s description of responsive/valid closures. I did not, and I'm not sure I see a reason to.
I don't do this.
A friend accidentally burned a solenoid in a Williams System 7 machine recently because a "Switch Solenoid Trigger" was gapped too tight and locked on. At his suggestion, in my Williams OS I now shut down the "blanking" if a special solenoid scoring switch is held on for too long (indicating that a triggered solenoid might be locked on).