When you have a recursive function like this (one with too much depth potential), you need to convert it into a loop. In this case you have two functions alternating calling each other:
This will loop forever (as does the original version, you are exiting on a signal), but you can also use some kind of state as a ...
That's one way of doing it - it will work. The better way is to use GPIO.wait_for_edge(17, GPIO.RISING) which will pause at that line until the button is pressed (on a RISING or FALLING edge).
However, BOARD numbering pin 17 is not a GPIO, it's 3V3.
You could also use GPIO Zero which is more intuitive (and uses BCM numbering):
from gpiozero import Button
After hours of hitting my head against the wall I tried to connect it directly without passing through the level shifter and it worked... I don't understand exactly why it is, I suppose it's because of the pulldown resistors or something like that but can tell exactly.
That sensor looks like it has an analogue output ! You would need an ADC (analogue to digital converter) to connect that correctly to a Pi.
In this example, we will explain how to use a water sensor to detect the amount of water we have in a tank. We will use the S pin as analog input connecting Arduino, the value read will be higher depending on the ...
So, after digging some more and finding this article: https://forum.arduino.cc/index.php?topic=477085.0, it looks like the issue has to deal with interference somewhat.
I decided to just run the third one on spi0 and things are working the way I want them to.