.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _ar_button: 2.5 - ボタン値の読み取り ============================================== GPIO(General-purpose input/output、汎用入出力)という名前からわかるように、これらのピンには入力と出力の両方の機能があります。 前のレッスンでは出力機能を使用しましたが、この章では入力機能を使用してボタンの値を読み取ります。 * :ref:`cpn_button` **必要なコンポーネント** このプロジェクトでは、以下のコンポーネントが必要です。 全体のキットを購入するのが便利です、リンクはこちら: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - このキットに含まれるアイテム - 購入リンク * - ケプラーキット - 450+ - |link_kepler_kit| 以下のリンクから個々にも購入できます。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネントの紹介 - 数量 - 購入リンク * - 1 - :ref:`cpn_pico_w` - 1 - |link_picow_buy| * - 2 - マイクロUSBケーブル - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - 数本 - |link_wires_buy| * - 5 - :ref:`cpn_resistor` - 1(10KΩ) - |link_resistor_buy| * - 6 - :ref:`cpn_button` - 1 - |link_button_buy| **回路図** |sch_button| ボタンのピンの一方は3.3vに接続され、もう一方のピンはGP14に接続されているため、ボタンが押されると、GP14は高くなります。しかし、ボタンが押されていないとき、GP14は未定義の状態にあり、高いか低いかが不明です。ボタンが押されていないときに安定した低レベルを得るために、GP14は10Kプルダウン抵抗を介してGNDに再接続する必要があります。 **配線** |wiring_button| .. note:: 4本足のボタンはH型のボタンと考えることができます。その左(右)の2本の足は接続されており、中央の仕切り線をまたぐと、同じ行番号の2つの半行が接続されます(例えば、私の回路では、E23とF23が接続されています。E25とF25も同様です)。 ボタンが押される前は、左右は互いに独立しており、一方から他方への電流は流れません。 **コード** .. note:: * ファイル ``2.5_reading_button_value.ino`` は、 ``kepler-kit-main/arduino/2.5_reading_button_value`` のパスにあります。 * または、このコードを **Arduino IDE** にコピーしてください。 * アップロードボタンをクリックする前に、ボード(Raspberry Pi Pico)と正確なポートを選択することを忘れないでください。 .. raw:: html コードが実行された後、Arduino IDEの右上角にある虫眼鏡アイコン(シリアルモニタ)をクリックしてください。 .. image:: img/open_serial_monitor.png これで、ボタンを押すと、シリアルモニタに「You pressed the button!」と表示されます。 **動作原理は?** シリアルモニタを有効にするには、 ``setup()`` でシリアル通信を開始し、データレートを9600に設定する必要があります。 .. code-block:: arduino Serial.begin(115200); * `Serial `_ ボタンには、その値を取得できるようにモードを ``INPUT`` に設定する必要があります。 .. code-block:: arduino pinMode(buttonPin, INPUT); ``buttonPin`` の状態を ``loop()`` で読み取り、変数 ``buttonState`` に割り当てます。 .. code-block:: arduino buttonState = digitalRead(buttonPin); * `digitalRead() `_ ``buttonState`` がHIGHであれば、LEDが点滅し、シリアルモニタに「You pressed the button!」と表示されます。 .. code-block:: arduino if (buttonState == HIGH) { Serial.println("You pressed the button!"); } **プルアップ動作モード** 次に、ボタンがプルアップ動作モードでの配線とコードです、試してみてください。 |wiring_button_pullup| .. 1. Pico Wの3V3ピンをブレッドボードの正の電源バスに接続します。 .. #. ボタンをブレッドボードに挿入し、中央の仕切り線をまたぐようにします。 .. #. ジャンパワイヤーを使用して、ボタンのピンの一つを**負**のバスに接続します(私の場合は右上のピンです)。 .. #. もう一方のピン(左上または左下)をGP14にジャンパワイヤーで接続します。 .. #. 10Kの抵抗器を使用して、ボタンの左上隅のピンと**正**のバスを接続します。 .. #. ブレッドボードの負の電源バスをPicoのGNDに接続します。 プルダウンモードとの唯一の違いは、10Kの抵抗器が3.3Vに接続され、ボタンがGNDに接続されているため、ボタンを押すとGP14は低レベルになることです。これは、プルダウンモードで得られる値とは逆です。 したがって、このコードを ``if (buttonState == LOW)`` に変更するだけです。