魔法のピアノの作り方

Navigator Campusロボティクスパークのハックスペースには、技術開発の注文が寄せられることがよくあります。この記事では、このような小さいながらも興味深い開発の1つについて説明します。







かつて、 Artem Kramin (カザンのフリースペースDialの共同設立者)が、クエストプロジェクト " Room "のアイデアを提案してきました。 彼は魔法の要素を自分の探求に持ち込み、古いピアノを近代化したかったのです。 タスクは次のように設定されました。正しいメロディを演奏すると、隣の部屋のドアが開くはずです。



楽器の機能とその音色は、近代化プロセス中に損なわれるべきではなく、音の抽出を妨げるものはありません。 重要な要件である楽器は、クエストの参加者が事前に推測しないように、外観が変化してはいけません。



リフレクションの過程で、そのようなソリューションは次のように生まれました。





奇跡の楽器の開発プロセスに興味を持っているほとんどの人は、マイクを使用していることを確信していましたが、ピアノを扱ったことがない人はメロディを演奏することができるため、メロディを演奏することさえできず、楽器も動揺し、カメラの使用はあまりにも高価で時間がかかりましたが、参加者からそれを隠すことはそれでも問題になるでしょう。 最終的に、選択はトレーラーにかかった。



これはデバイスの一般的な図です:





リミットスイッチを取り付けるために、レーザー切断ハックスペースに固定するためのフレームを描いて切り取りました。



Google Autocreative Cutting Process




マウントは、ピアノ内部のガイドに取り付けられた単一の要素です。





その後、ワイヤを端子にはんだ付けしました(後で赤いワイヤを取り外すことができることがわかりました)





その後、EMロック、電源、電源ボタンを購入しました。

入手したすべての操作性を確認しました。













その後、回路の必要な要素をすべて取り付けてはんだ付けしましたが、見た目は荒いですが、1か月半の間、故障することなく動作していました。









したがって、アセンブリは次のようになります。









全体の作業スキームは次のとおりです。システムは、最初の正しいキーが押されるのを常に待機してから、2番目の正しいノートが期待される、などです。 クエスト参加者が間違えて間違ったノートを押した場合、組み合わせがリセットされ、「コード」を再ダイヤルする必要があります。メロディ全体が正しく再生されると、部屋のドアをロックするロックが開きます。



スケッチソース
const int key1 = 4; // const int key2 = 5; // const int key3 = 6; // const int key4 = 7; // const int key5 = 8; // const int key6 = 9; // const int key7 = 10; // const int lock = 12; // int lastKey = 0; //   //   void openLock() { digitalWrite(lock, LOW); delay(10000); closeLock(); } //  void closeLock() { digitalWrite(lock, HIGH); } //    key boolean isKeyPressed(int key) { int what = -1; while(true) { int countPressed = 0; if(digitalRead(key1) == HIGH) { if(lastKey != key1) { countPressed++; what = key1; lastKey = key1; } } if(digitalRead(key2) == HIGH) { if(lastKey != key2) { countPressed++; what = key2; lastKey = key2; } } if(digitalRead(key3) == HIGH) { if(lastKey != key3) { countPressed++; what = key3; lastKey = key3; } } if(digitalRead(key4) == HIGH) { if(lastKey != key4) { countPressed++; what = key4; lastKey = key4; } } if(digitalRead(key5) == HIGH) { if(lastKey != key5) { countPressed++; what = key5; lastKey = key5; } } if(digitalRead(key6) == HIGH) { if(lastKey != key6) { countPressed++; what = key6; lastKey = key6; } } if(digitalRead(key7) == HIGH) { if(lastKey != key7) { countPressed++; what = key7; lastKey = key7; } } if(what != -1) { Serial.print("pressed "); Serial.println(what - 3); if((countPressed == 1) && (key == what)) { break; } if((key != what) || (countPressed >= 1)) { break; } } } if(what == key) { return true; } else { return false; } } void setup() { // pinMode(test,INPUT); Serial.begin(9600); pinMode(key1, INPUT); pinMode(key2, INPUT); pinMode(key3, INPUT); pinMode(key4, INPUT); pinMode(key5, INPUT); pinMode(key6, INPUT); pinMode(key7, INPUT); pinMode(lock, OUTPUT); closeLock(); } //         void loop() { if(isKeyPressed(key2)) { if(isKeyPressed(key3)) { if(isKeyPressed(key6)) { if(isKeyPressed(key2)) { if(isKeyPressed(key4)) { if(isKeyPressed(key6)) { if(isKeyPressed(key1)) { if(isKeyPressed(key7)) { openLock(); } } } } } } } } }
      
      







すべての準備が完了した後、デバイスはピアノに設置され、ロックは出入り口に固定されています(これが秘密です)。

















結論:アルテムは喜んでいたが、私は何か異常なことをすることに興味があった。

カザンのPS読者は、この記事を読んでも、クエストを完了することに興味があります。マジックピアノは部屋の魔法のほんの一部にすぎないからです。








All Articles