Arduinoで携帯型静電容量タッチピアノを自作:MPR121シールド活用・ステップバイステップ
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| Adafruit MPR121 12チャネル静電容量タッチシールド | 1 | I2C接続、アドレス0x5A〜0x5D |
| 圧電ブザー (PS1240等) | 1 | D12-GND間に直結 |
| 銅箔テープ(導電性接着剤付き) | 1ロール | 鍵盤パターン用 |
| ProtoStax for Arduino クリアアクリルケース | 1 | スタッカブル・モジュラー型 |
| 22AWG ストランドワイヤー | 12本 | MPR121入力延長用、色分け推奨 |
プロジェクト概要
Arduino + MPR121シールド + 圧電ブザー + 銅箔テープ鍵盤で、1オクターブ(C〜Bの12半音)のタッチピアノを作成。すべてProtoStaxアクリルケースに収納し、天板に銅箔テープで鍵盤を貼り付けた携帯型楽器です。MPR121ライブラリでタッチ検知、Arduino標準tone()で音出力。
ステップ1:Arduinoをケースベースプレートに固定
ProtoStaxの「プラットフォーム構成」でArduinoをベースにネジ止め、ゴム足装着。シールド搭載後に側壁・天板を追加可能。
ステップ2:MPR121シールドの準備
- 12入力それぞれに22AWGワイヤーをはんだ付け(シールドの小さなスルーホール使用)
- ブザーをD12とGNDにはんだ付け
- ワイヤー先端をストリップ、色分けで管理
ステップ3:ケース組み立てと鍵盤作成
- シールドをArduinoに装着、アッパーブレース・側壁を挿入
- 天板に12個の穴(1/8インチ)を開け、ワイヤーを通す(左から順に入力0〜11)
- スペーサー・ネジで天板を固定
- ワイヤーを穴から少し出し、銅箔テープを鍵盤形状にカットして貼り付け(導電接着剤でワイヤーと導通)
- テンプレート(PDF提供)を印刷して位置合わせ
ステップ4:デモコードと遊び方
ライブラリ: Adafruit_MPR121 をインストール
隠しコマンド(同時タッチで発動):
- C + E + G + B →「きらきら星」
- C + D + E + F + G → 音階上下
- C + D + A + B →「オー・スザンナ」
- C + C# + A# + B →「フレール・ジャック」
コード構成のポイント:
cap.touched()で12ビットのタッチ状態を取得- 立ち上がりエッジで
tone()、立ち下がり(かつ他キー未押下)でnoTone() - キーを押しっぱなしにして別キーを押すとレガート演奏可能(サステインペダル風)
- 隠しコマンドは
currtouchedビットパターンで判定(例:C=bit0, E=bit4, G=bit7, B=bit11 → 0b100010010001 = 2193) - 楽曲データは
Note{周波数, 長さ}構造体配列で定義。pitches.hnoteDurations.hのマクロ(NOTE_C, NOTE_QUARTER, DOTTED等)で楽譜から直訳可能
ステップ5:さらなる拡張アイデア
- 独自の楽曲・隠しコマンドを追加
- 2つ目のブザー+
NewToneライブラリ(Timer1使用)で2音同時発音(ポリフォニック)化 - 物理ボタン追加でオクターブシフト(高/低)実現
ソースコード
GitHub: ProtoStax_CapacitiveTouch_Piano_Demo
カスタムパーツ・テンプレート
鍵盤カット用・天板穴あけ用テンプレート画像提供(レターサイズ印刷で実寸)。
回路図
配線図提供。MPR121はI2C(A4/A5)、ブザーはD12、12入力はワイヤー延長して天板へ。
製造プロセス
- ピアノ:古代のルーツから現代の極みへ
- 携帯トイレの歴史、設計、環境への影響
- プレーヤーピアノ:音響伝統と自動演奏精密技術の融合
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- Arduinoタッチブレークアウトゲーム:2.4インチTFT LCDでクラシックアーケードを再現
- MIDIキーボードをArduino・LED・MuseScoreでスマートピアノチューターに変身
- DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」