I think what we want is for you to use the serial monitor, and Serial.print()ing, to confirm the values of key variables and be certain they are properly informing the flow through your code.
I don't think I've ever gotten something to work, and know for sure it is doing it the way I want, relying only on the behaviour I observe.
Printing or extra LED feedback or logic analyzer or oscilloscope - whatever it is, a window into what the code is up to.
I leave most of that printing, if that's what I used, in the sketch. They chat quite a bit as they go about their business.
When deployed, the printing just goes into the bit bucket who cares?
TBH I would be adding printing before squinting if I were in the lab ready to take a closer look at you sketch.
a7