注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!

4.3 - 電極キーボード

多数のタッチスイッチをプロジェクトに追加したい場合、MPR121は優れた選択です。このモジュールは、導体で拡張可能な電極を備えています。 電極をバナナに接続すると、そのバナナをタッチスイッチに変えることができます。

必要な部品

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

一式を購入することは非常に便利です、リンクはこちらです:

名前

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

購入リンク

Kepler Kit

450+

Kepler Ultimate Kit

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

SN

コンポーネントの説明

数量

購入リンク

1

Pico Wを知る

1

購入

2

Micro USBケーブル

1

3

ブレッドボード

1

購入

4

ジャンパーワイヤー

数本

購入

5

MPR121モジュール

1

回路図

sch_mpr121_ar

配線

wiring_mpr121_ar

コード

注釈

  • ファイル 4.3_electrode_keyboard.ino は、パス kepler-kit-main/arduino/4.3_electrode_keyboard で開くことができます。

  • または、このコードを Arduino IDE にコピーペーストしてください。

  • アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。

  • Adafruit MPR121 ライブラリがここで使用されます。このライブラリは Library Manager からインストールできます。

    ../_images/lib_mpr121.png

プログラムが動作すると、MPR121モジュール上の12個の電極に手で触れ、それらの電極のタッチ状態が12ビットのブーリアン型配列に記録され、シリアルモニターに出力されます。 最初と11番目の電極に触れると、 100000000010 が出力されます。

電極を果物、ワイヤー、箔などの他の導体に接続して拡張することができます。これにより、これらの電極をトリガーする多くの方法が得られます。

動作原理

MPR121 オブジェクトを初期化します。この時点で、モジュールの電極の状態が初期値として記録されます。 電極を拡張する場合は、初期値をリセットするために例を再実行する必要があります。

#include "Adafruit_MPR121.h"

Adafruit_MPR121 cap = Adafruit_MPR121();

void setup() {
    Serial.begin(9600);
    int check = cap.begin(0x5A);
    if (!check) {
        Serial.println("MPR121 not found, check wiring?");
        while (1);
    }
    Serial.println("MPR121 found!");
}

現在の電極の値を取得します。最初と11番目の電極に触れると、 100000000010 が取得されます。

// Get the currently touched pads
currtouched = cap.touched();

Determine if the electrode state has changed.

void loop() {
    currtouched = cap.touched();
    if (currtouched != lasttouched) {}

    // reset our state
    lasttouched = currtouched;
}

電極の状態に変更が検出された場合、 currtouched の値が touchStates[12] 配列にビットごとに格納されます。最後に、配列が出力されます。

if (currtouched != lasttouched) {
    for (int i = 0; i < 12; i++) {
        if (currtouched & (1 << i)) touchStates[i] = 1;
        else touchStates[i] = 0;
    }
    for (int i = 0; i < 12; i++){
        Serial.print(touchStates[i]);
    }
    Serial.println();
}