Ah we are making progress 😁Â
Although I'm not seeing why the clock stops after a NoPoison ...Â
Note:
One thing I had not considered in the previous code, is the time it takes to run NoPoison.
To compensate for that we should maybe read the time again after doing NoPoison.
This should have no impact on the clock that stops working.
I also realized that when setting the time on your clock, the NoPoison may screw that up.
So I added "(mode_step==0)" to make sure we are in "regular time mode", and not in "setting the time mode".
Replace this part, where we call NoPoison in void loop():
// --- Trigger NoPoison every half hour
if( ( (minute==0) || (minute==30) ) && (second==0) ) {
NoPoison();
}
Â
with this  (added mode_step check, AllOff, and reading time again):
// --- Trigger NoPoison every half hour
if( ( (minute==0) || (minute==30) ) && (second==0) && (mode_step==0)) {
NoPoison();
AllOff();
// Read time again
DateTime now = RTC.now();
hour = now.hour();
minute = now.minute();
second = now.second();
}
Â
I highly doubt this will fix the issue you're seeing though.
As far as I can see, the numbers should appear as before. Before NoPoison runs, the clock works correctly right?
From what I get from the code is that there is always at the most 1 nixie ON showing at the most one number.
The switching between tubes goes fast enough that the user doesn't see the tubes going off in between.
The code suggests the numbers will be set each time we run though void loop().