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 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.
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.
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.
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.