2.5 - ボタン値の読み取り¶
GPIO(General-purpose input/output、汎用入出力)という名前からわかるように、これらのピンには入力と出力の両方の機能があります。 前のレッスンでは出力機能を使用しましたが、この章では入力機能を使用してボタンの値を読み取ります。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
全体のキットを購入するのが便利です、リンクはこちら:
名前 |
このキットに含まれるアイテム |
購入リンク |
---|---|---|
ケプラーキット |
450+ |
以下のリンクから個々にも購入できます。
SN |
コンポーネントの紹介 |
数量 |
購入リンク |
---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(10KΩ) |
||
6 |
1 |
回路図
ボタンのピンの一方は3.3vに接続され、もう一方のピンはGP14に接続されているため、ボタンが押されると、GP14は高くなります。しかし、ボタンが押されていないとき、GP14は未定義の状態にあり、高いか低いかが不明です。ボタンが押されていないときに安定した低レベルを得るために、GP14は10Kプルダウン抵抗を介してGNDに再接続する必要があります。
配線
注釈
4本足のボタンはH型のボタンと考えることができます。その左(右)の2本の足は接続されており、中央の仕切り線をまたぐと、同じ行番号の2つの半行が接続されます(例えば、私の回路では、E23とF23が接続されています。E25とF25も同様です)。
ボタンが押される前は、左右は互いに独立しており、一方から他方への電流は流れません。
コード
注釈
ファイル
2.5_reading_button_value.ino
は、kepler-kit-main/arduino/2.5_reading_button_value
のパスにあります。または、このコードを Arduino IDE にコピーしてください。
アップロードボタンをクリックする前に、ボード(Raspberry Pi Pico)と正確なポートを選択することを忘れないでください。
コードが実行された後、Arduino IDEの右上角にある虫眼鏡アイコン(シリアルモニタ)をクリックしてください。
これで、ボタンを押すと、シリアルモニタに「You pressed the button!」と表示されます。
動作原理は?
シリアルモニタを有効にするには、 setup()
でシリアル通信を開始し、データレートを9600に設定する必要があります。
Serial.begin(115200);
ボタンには、その値を取得できるようにモードを INPUT
に設定する必要があります。
pinMode(buttonPin, INPUT);
buttonPin
の状態を loop()
で読み取り、変数 buttonState
に割り当てます。
buttonState = digitalRead(buttonPin);
buttonState
がHIGHであれば、LEDが点滅し、シリアルモニタに「You pressed the button!」と表示されます。
if (buttonState == HIGH) {
Serial.println("You pressed the button!");
}
プルアップ動作モード
次に、ボタンがプルアップ動作モードでの配線とコードです、試してみてください。
プルダウンモードとの唯一の違いは、10Kの抵抗器が3.3Vに接続され、ボタンがGNDに接続されているため、ボタンを押すとGP14は低レベルになることです。これは、プルダウンモードで得られる値とは逆です。
したがって、このコードを if (buttonState == LOW)
に変更するだけです。