2.5 - ボタン値の読み取り

GPIO(General-purpose input/output、汎用入出力)という名前からわかるように、これらのピンには入力と出力の両方の機能があります。 前のレッスンでは出力機能を使用しましたが、この章では入力機能を使用してボタンの値を読み取ります。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全体のキットを購入するのが便利です、リンクはこちら:

名前

このキットに含まれるアイテム

購入リンク

ケプラーキット

450+

Kepler Kit

以下のリンクから個々にも購入できます。

SN

コンポーネントの紹介

数量

購入リンク

1

Raspberry Pi Pico W

1

BUY

2

マイクロUSBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

抵抗器

1(10KΩ)

BUY

6

ボタン

1

BUY

回路図

sch_button

ボタンのピンの一方は3.3vに接続され、もう一方のピンはGP14に接続されているため、ボタンが押されると、GP14は高くなります。しかし、ボタンが押されていないとき、GP14は未定義の状態にあり、高いか低いかが不明です。ボタンが押されていないときに安定した低レベルを得るために、GP14は10Kプルダウン抵抗を介してGNDに再接続する必要があります。

配線

wiring_button

注釈

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の右上角にある虫眼鏡アイコン(シリアルモニタ)をクリックしてください。

../_images/open_serial_monitor.png

これで、ボタンを押すと、シリアルモニタに「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!");
}

プルアップ動作モード

次に、ボタンがプルアップ動作モードでの配線とコードです、試してみてください。

wiring_button_pullup

プルダウンモードとの唯一の違いは、10Kの抵抗器が3.3Vに接続され、ボタンがGNDに接続されているため、ボタンを押すとGP14は低レベルになることです。これは、プルダウンモードで得られる値とは逆です。 したがって、このコードを if (buttonState == LOW) に変更するだけです。