このプロジェクトでは、Arduinoを使用してエンターテインメントを構築します。私たちは皆、ランダムな音楽を作成するためにテーブルやペンをタップする習慣があります。もちろん、それは良いマニエリスムとは見なされないかもしれませんが、私たちは皆、少なくとも一度はそれを楽しんでいます。そこで、Arduinoのトーンを再生する機能を使用して、それを次のレベルに引き上げることを考えました。このプロジェクトを作成すると、手のひらでピアノを弾くように、導電性のあるものを指で叩いて独自のリズムを作成することで音を生成できるようになります。かっこいいですね。作りましょう。
必要なコンポーネント:
このプロジェクトに必要な資料は以下のとおりです。これに固執する必要はありません。コンセプトを理解したら、独自の方法でコンセプトを構築できます。
- Arduini Pro Mini
- Peizoスピーカー
- フレックスセンサー
- フィンガーグローブ
- 10K抵抗器
- BC547トランジスタ
- 9V電池
回路図と説明:
このArduinoパームピアノの回路図を以下に示します。
このプロジェクトでは、合計4つのセンサー、つまり2つのフレックスセンサーと2つのダーリントンペアがタッチセンサーとして機能します。また、それぞれ値10kの2つのプルダウン抵抗R1とR2を使用しました。これらは、Flexセンサーのプルダウン抵抗として機能します。ここでは、フレックスセンサーを使用して、曲がった量に基づいて1本の指で3つの異なるトーンを生成します。したがって、2本の指で6つの音を出すことができます。フレックスセンサーについてはこちらをご覧ください。
ダーリントンペア:
先に進む前に、ダーリントンとは何か、そしてそれが私たちのプロジェクトでどのように正確に機能するかを知ることが重要です。ダーリントンペアは、最初のトランジスタによって増幅された電流が2番目のトランジスタによってさらに増幅されるように接続された2つのバイポーラトランジスタとして定義できます。ダーリントンのペアを下の画像に示します。
上に示したように、コレクターがギャザーに接続され、最初のトランジスターのエミッターが2番目のトランジスターのベースに接続されている2つのBC547トランジスターを使用しました。この回路はゲイン付きの増幅器として機能します。つまり、最初のトランジスタのベースに与えられた小さな信号は、2番目のトランジスタのベースにバイアスをかけるのに十分です。私たちの体はここでグラウンドとして機能するので、トランジスタのベースに触れると、2番目のトランジスタにバイアスがかかります。これを利用して、このプロジェクト用のタッチセンサーを構築しました。
ピン番号2と3は、Arduinoの割り込みピンであり、内部プルアップ抵抗を使用してハイにプルアップされ、ダーリントンスイッチが閉じるたびにこれらのピンがグランドに保持されます。このようにして、(最初のトランジスタのベースから)ワイヤに触れるたびに、Arduinoから割り込みがトリガーされます。
2本の指で2種類の音色しか出せないので、曲がり具合に応じて音色を変えるフレックスセンサーも追加しました。指(フレックスセンサー)の曲がり具合に基づいて、指ごとに3つの異なるトーンを生成するようにプログラムしました。指先でより多くのトーンを出したい場合は、数を増やすことができます。
手のひらにすっぽり収まるように、完全なボードをパフォーマンスボードで作成しましたが、ブレッドボードも使用できます。ある時点であなたの体が回路の地面に触れていることを確認してください。すべてをはんだ付けすると、次のようになります。
ダーリントンペアからのワイヤーとフレックスセンサーを上記の位置に固定するために、2本の指の手袋を使用しました。トーンを演奏している間、それらを所定の位置に固定するための独自の(可能であればより良い)アイデアを思いつくことができます。
Arduinoプログラミング:
このArduinoタップトーンジェネレーターのプログラムは非常に簡単です。ダーリントンワイヤーからの割り込みに注意する必要があります。割り込みが見つかった場合は、フレックスセンサーの曲がり具合に応じてトーンを再生する必要があります。完全なコードはこの投稿の最後にありますが、以下にいくつかの重要なチャンクについて説明しました。
注:このプログラムは、ライブラリ「pitches.h」の助けを借りて動作します。したがって、コンパイルする前に、ヘッダーファイルがプログラムに追加されていることを確認してください。こちらからpitches.hヘッダーファイルをダウンロードできます。
では 、セットアップ 機能、我々は、プルアップ抵抗付き入力としてピン2と3を初期化します。また、それらを割り込みピンとして宣言し、ピン2に割り込みがある場合はtone1()を実行し、3番目のピンに割り込みがある場合はtone2()関数を実行します。これらの割り込みは、これらのピンがプルアップ状態からLOWになるたびにトリガーされます。
void setup(){pinMode(2、INPUT_PULLUP); pinMode(3、INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(2)、tone1、LOW); attachInterrupt(digitalPinToInterrupt(3)、tone2、LOW); Serial.begin(9600); }
ループ 機能内では、フレックスセンサーの曲がり具合を常にチェックしています。たとえば、私のFlexSensor 1は、フラットのままにすると約200の値を示し、最大に曲げると130まで下がったため、3つの異なるタイプをプレイする必要があるため、200から130までの値を1から3にマッピングしました。トーンの。Flexセンサーの値とトーン数に基づいて、これら2つの線を微調整する必要があります。
void loop(){flexSensor1 = map(analogRead(A0)、200,130,1,3); //フレックスセンサーに基づいて独自の値でマップしますflexSensor2 = map(analogRead(A1)、170,185,1,3); //フレックスセンサーに基づいて独自の値でマッピングします}
前に見たように、関数 tone1() は、ピン2で割り込みが検出されたときに実行されます 。tone1() 関数内で何が起こるかを上に示します。FlexSensor1の値を確認し、flexSesnor値に基づいてトーンを再生します。トーンはArduinoのトーン機能を使用して再生されます。以前のプロジェクトでtone()関数について説明しました。
voidtone1(){if(flexSensor1 == 1)tone(8、NOTE_D4,50); else if(flexSensor1 == 2)tone(8、NOTE_A3,50); else if(flexSensor1 == 3)tone(8、NOTE_G4,50); elsetone(8、NOTE_D4,50); }
以下の行は、トーンを再生するために使用されます。「pitches.h」ヘッダーファイルで利用可能な任意のトーンを再生できます。たとえば、上記の行は、ピンでNOTE_A3を50ミリ秒再生します。
トーン(8、NOTE_A3,50); //トーン(PinNum、ノート名、期間);
ワーキング:
ハードウェアの準備ができたら、コードをアップロードして指にマウントします。ある時点であなたの体が回路の地面に触れていることを確認してください。導電性の素材や体に触れるだけで、それぞれの音が聞こえるはずです。異なる間隔と異なる位置でタップすることにより、独自のメロディーや音楽を再生できます。
以下のビデオは、プロジェクトの完全な動作を示しています。プロジェクトの構築を楽しんでいただければ幸いです。提案や質問は、以下のコメントセクションに投稿できます。また、ArduinoオーディオプレーヤーとArduinoトーンジェネレータプロジェクトも確認してください。