巨大階段ピアノ

使用した材料

・べニア板(3x6 ft, 厚さ2mm) x 8枚
・アルミテープ(幅50mm) x 55m
・タコ紐 (直径0.7mm) x 20m
・ペンキ艶あり白色 x 2L
・ペンキ艶あり黒色 x 0.2L
・マスキングテープ x 50m
・配線用ケーブル x15m
・Arduino Uno x1個
・ブレッドボード x1個
・ジャンパ線 x15本 
・10kΩ 1/8w抵抗 x12個
・Macbook Air x1台
・不織布白色(幅1800mm) x5m 
・黒色カーペット(幅700mm) x3m
・25wスピーカー x2台
・50wアンプ x1台
 

使用したソフト

・Garage Band
・Arduino IDE
 

完成した作品


工夫した箇所

鍵盤の戻りの良さを調べながら作成しました。
 

仕組み



詳細な仕様

Arduino UnoのMidiキーボード認識にはmocolufaファームウェアをatmega16U2にフラッシュしました。
 
およそ5kgくらいから鍵盤は反応します。
チャタリング修正はBounce2を使用しています。
 

プログラム

#include <MIDI.h>
#include <Bounce2.h>
MIDI_CREATE_DEFAULT_INSTANCE();

byte pins[12] =  { 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2};
byte pitch[12] = { 72, 74, 76, 77, 79, 81, 83, 84, 86, 88, 89, 91};
int status[12] = {0};

Bounce button[] = {Bounce(pins[0],20),
                   Bounce(pins[1],20),
                   Bounce(pins[2],20),
                   Bounce(pins[3],20),
                   Bounce(pins[4],20),
                   Bounce(pins[5],20),
                   Bounce(pins[6],20),
                   Bounce(pins[7],20),
                   Bounce(pins[8],20),
                   Bounce(pins[9],20),
                   Bounce(pins[10],20),
                   Bounce(pins[11],20),
                   Bounce(pins[12],20)
                   };

void setup() {
  MIDI.begin(1);
}

void loop() {
  for (int i=0; i< 12; i++) {
    button[i].update ();
    if ((button[i].read() == HIGH)&&(status[i] == 0)) {
      MIDI.sendNoteOn(pitch[i],127,1);
      status[i] = 1;
    }if ((button[i].read() == LOW)&&(status[i] == 1)) {
      MIDI.sendNoteOff(pitch[i],0,1);
      status[i] = 0;
    }
    if ((button[i].read() == HIGH)&&(status[i] == 1)) {}
    if ((button[i].read() == LOW)&&(status[i] == 0)) {}
  }
}
 

遊び方

上に乗るとピアノの鍵盤に対応した音が鳴ります。 
一つの鍵盤に対して一つの音が鳴ります。
荷重が一つの鍵盤に重複したときは新たに音はなりません。
 




コメント

このブログの人気の投稿

DockerのNextcloudでエラーが出た SQLSTATE[08006] [7]

Arduinoで電流を測定する