-
As mentioned before, only 2 pins can be watched by setWatch with interrupts
can you verify this? Maybe you have 4 watches already running, and you are hitting a limit of 6. I have seen this limit in the past, on the Rock watch, with fanoush's firmware I could not enable a watch for the second button, with jefmer's it was ok, I think the bangle2 firmware has the same limit.
Maybe run this on the console to check how many you have running.
global["\xFF"].watches
Here is my solution with diodes. See attached animated gif.
Three digital input (input_pullup, no additional 100k resistors in the image are needed) pins with 3 diodes will be used. As mentioned before, only 2 pins can be watched by setWatch with interrupts, so I will set two pins (D32 and D24) for setWatch and the third pin, D42, can be combined in the code to watch. In other words, no matter which button is pressed, always one or both of D32 and D24 will be triggered. This way, with only 2 interrupts, 4 pins can be monitored. Actually, there is one more combination, D24 and D42, is available for another switch if needed.
I saved one pin, D43, for an analog output for the buzzer.