Skip to main content
Arduino

Return to Revisions

2 of 2
replaced http://arduino.stackexchange.com/ with https://arduino.stackexchange.com/

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.

CharlieHanson
  • 1.4k
  • 1
  • 11
  • 25

AltStyle によって変換されたページ (->オリジナル) /