As mentioned in a comment, your code has some fundamental flaws. Do not call loop()
from within loop()
! Aside from the code errors, your question has a legitimate element.
Testing the tri-state behaviour of an input pin will let you know if it is genuinely high, genuinely low, or floating (disconnected). The technique was given in this answer to similar problem I was encountering.
In short:
Connect a large (1MOhm) resistor to each input between the pin and ground, then for each pin:
- Turn off internal pullup;
- Read value of input pin;
- Turn on internal pullup;
- Read value again.
If the value changes from the first to the second digitalRead()
, the input was not connected to anything. If the value remains the same then it is a genuine value from a connected device.
- 1.4k
- 1
- 11
- 25