4.3 - 電極キーボード

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

必要な部品

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

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

名前

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

購入リンク

Kepler Kit

450+

Kepler Kit

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

SN

コンポーネントの説明

数量

購入リンク

1

Raspberry Pi Pico W

1

BUY

2

Micro USBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

MPR121モジュール

1

回路図

sch_mpr121

配線

wiring_mpr121

コード

注釈

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

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

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

  • ここで使用されている二つのライブラリは Adafruit_MPR121Adafruit_BusIO です。Arduino IDEに追加する方法は、 ライブラリを追加 を参照してください。

プログラムが動作すると、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();
}