4.3 - 電極キーボード¶
多数のタッチスイッチをプロジェクトに追加したい場合、MPR121は優れた選択です。このモジュールは、導体で拡張可能な電極を備えています。 電極をバナナに接続すると、そのバナナをタッチスイッチに変えることができます。
必要な部品
このプロジェクトでは、以下のコンポーネントが必要です。
一式を購入することは非常に便利です、リンクはこちらです:
名前 |
このキットに含まれるアイテム |
購入リンク |
---|---|---|
Kepler Kit |
450+ |
以下のリンクから個別にも購入できます。
SN |
コンポーネントの説明 |
数量 |
購入リンク |
---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1 |
回路図
配線
コード
注釈
ファイル
4.3_electrode_keyboard.ino
は、パスkepler-kit-main/arduino/4.3_electrode_keyboard
で開くことができます。または、このコードを Arduino IDE にコピーペーストしてください。
アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。
ここで使用されている二つのライブラリは
Adafruit_MPR121
とAdafruit_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();
}