回答:
その構成でボタンが接続されると、入力は「フローティング」と呼ばれるものになります。つまり、0または1ではありません。ボタンが押されると、グランドに接続されます。ピンの値はわかりません。
ボタンが押されていないときに信号をロジック1にプルアップするには、「プルアップ」抵抗と呼ばれるものを含める必要があります。
これは、ボタンが押されていない場合、Arduinoがロジック1を読み取ることを意味します。ボタンが押されると、電流が抵抗を介してグランドに流れ、Arduinoがロジック0を読み取ります。
Arduinoにはプルアップ抵抗も内蔵されているため、必ずしも回路に追加のコンポーネントを追加する必要はありません。これを使用するにはいくつかの方法があります。
以前は次のようにしなければなりませんでした。
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
これで、1行で簡単に実行できます。
pinMode(pin, INPUT_PULLUP);
これにより、そのピンの20kプルアップ抵抗が有効になります。ボタンが押されていない場合、入力はフローティング状態ではなくなります。
注:これは、もう一方の端がアースに接続されている場合にのみ機能します。