.. note:: こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と一緒にさらに深く学びましょう。 **参加する理由** - **専門家のサポート**: 購入後の問題や技術的な課題をコミュニティとチームのサポートで解決できます。 - **学びと共有**: ヒントやチュートリアルを交換して、スキルを向上させましょう。 - **独占プレビュー**: 新製品の発表や先行情報をいち早く入手できます。 - **特別割引**: 最新製品に対する独占割引を楽しめます。 - **祝祭プロモーションとギブアウェイ**: ギブアウェイや季節限定のプロモーションに参加できます。 👉 一緒に探求し、創造しませんか?今すぐ [|link_sf_facebook|] をクリックして参加しましょう! .. _py_mpr121: 4.3 MPR121を使ったエレクトロキーボード ======================================================== このレッスンでは、 **MPR121静電容量式タッチセンサー** を使用して、Raspberry Pi Pico 2でタッチ感知型キーボードを作成する方法を学びます。MPR121は最大12個のエレクトロードにタッチ入力を検出でき、これらのエレクトロードにはワイヤー、アルミホイル、さらにはバナナのような果物などの導電性のある材料を接続できます! **必要なもの** このプロジェクトには、以下のコンポーネントが必要です。 セットを購入するのが便利です。リンクはこちら: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名称 - セット内容 - リンク * - Newton Lab Kit - 450+ - |link_newton_lab_kit| 以下のリンクから個別に購入することもできます。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネント - 数量 - リンク * - 1 - :ref:`cpn_pico_2` - 1 - |link_pico2_buy| * - 2 - Micro USBケーブル - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - 数本 - |link_wires_buy| * - 5 - :ref:`cpn_mpr121` - 1 - **MPR121センサーの理解** **MPR121** はI2Cインターフェースを介して通信する静電容量式タッチセンサーコントローラです。最大12個のタッチ入力を処理できるため、複数のタッチポイントを必要とするインタラクティブなプロジェクトに最適です。 MPR121センサーは、エレクトロードの容量変化を検出します。エレクトロードに触れると容量が変化し、その変化をセンサーが認識します。この情報はI2Cを通じてRaspberry Pi Pico 2に送信されます。 **回路図** |sch_mpr121_ar| **配線図** |wiring_mpr121_ar| * MPR121のエレクトロードピン( **E0** から **E11** )にワイヤーや導電性材料を接続します。 * ワイヤーの反対側をバナナやリンゴなどの果物、アルミホイルの形、またはタッチパッドのような導電性のある物に接続できます。 **コードの記述** エレクトロードへのタッチ入力を検出し、どのエレクトロードが触れられているかを出力するMicroPythonプログラムを作成しましょう。 .. note:: * ``4.3_electrode_keyboard.py`` を ``newton-lab-kit/micropython`` から開くか、コードをThonnyにコピーして、「実行」ボタンを押すか、F5キーを押して実行します。 * 正しいインタープリタ(MicroPython (Raspberry Pi Pico).COMxx)が選択されていることを確認してください。 * このコードでは ``mpr121.py`` というライブラリを使用する必要があります。Picoにアップロードされているか確認し、詳細なチュートリアルについては :ref:`add_libraries_py` をご参照ください。 .. code-block:: python from mpr121 import MPR121 from machine import Pin, I2C import utime i2c = I2C(0, sda=Pin(4), scl=Pin(5)) mpr = MPR121(i2c) # すべてのキーをチェック while True: value = mpr.get_all_states() if len(value) != 0: print(value) utime.sleep_ms(100) プログラムを実行した後、接続したエレクトロードや導電性のある物体に触れてみてください。Thonnyのシェルに出力されたメッセージを確認してください。どのエレクトロードが触れられたかが表示されるはずです。 **コードの理解** #. モジュールのインポート: * ``machine``: ハードウェア関連の関数を提供します。 * ``mpr121``: MPR121センサーとのインターフェースを提供するライブラリです。 * ``utime``: 遅延などの時間関連の関数を提供します。 #. I2C通信の初期化: * ``i2c = I2C(0, sda=Pin(4), scl=Pin(5))``: GP4(SDA)とGP5(SCL)を使用してI2C通信をセットアップします。 #. MPR121オブジェクトの作成: * ``mpr = MPR121(i2c)``: I2C通信を使用してMPR121センサーを初期化します。 #. タッチ入力を検出するメインループ: * ``get_all_states()``: 現在触れられているエレクトロードの番号をリストで返します。 * エレクトロードが触れられていれば、その番号が表示されます。 * ループは100ミリ秒の短い遅延で繰り返されます。 .. code-block:: python while True: value = mpr.get_all_states() if len(value) != 0: print(value) time.sleep_ms(100) **エレクトロードの拡張** プロジェクトをさらに拡張して、さまざまな導電性材料にエレクトロードを接続できます: * **果物**: バナナ、リンゴ、その他の果物にワイヤーを接続して、タッチ入力を感知できます。 * **ホイルの形状**: アルミホイルを切り取って形を作り、それをエレクトロードに接続します。 * **導電性ペイント**: 導電性インクやペイントでパターンを描くことができます。 .. note:: エレクトロード(例えば異なる材料を接続する場合)を変更した場合、センサーのリセットが必要になり、ベースラインの再調整が行われることがあります。 **さらに実験してみよう** * 特定のエレクトロードを検出する: 特定のエレクトロードを監視したい場合は、 ``is_touched(pin)`` メソッドを使用できます。指定したエレクトロード(ピン)が触れられていればTrueを返し、そうでなければFalseを返します。 .. code-block:: python from mpr121 import MPR121 from machine import Pin, I2C import utime i2c = I2C(0, sda=Pin(4), scl=Pin(5)) mpr = MPR121(i2c) # 特定のエレクトロードをチェック while True: if mpr.is_touched(0): print("Electrode 0 is touched!") utime.sleep(0.1) * **楽器を作る**: 各エレクトロードを音符にマッピングして、触れたときに音を鳴らします。 * **インタラクティブアート**: 導電性ペイントを使って、タッチ感知型のアートワークを作ります。 * **ゲームコントローラー**: ゲーム用のカスタムタッチコントローラーをデザインします。 **結論** このレッスンでは、Raspberry Pi Pico 2とMPR121静電容量式タッチセンサーを使用して、タッチ感知型エレクトロードキーボードを作成する方法を学びました。この技術を活用することで、タッチ入力に反応するインタラクティブなプロジェクトをクリエイティブに実現することができます。