工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

プリセット曲付き電子ピアノキーボード

コンポーネントと消耗品

>
Arduino UNO
× 1
Adafruit標準LCD-16x2白地に青
× 1
SparkFunプッシュボタンスイッチ12mm
× 8
抵抗220オーム
× 4
抵抗560オーム
× 1
抵抗1kオーム
× 1
抵抗4.7Kオーム
× 1
抵抗10kオーム
× 3
抵抗1Mオーム
× 1
ブザー
× 1
LED(汎用)
× 1
シングルターンポテンショメータ-10kオーム
× 1
ジャンパー線(汎用)
× 1
ブレッドボード(汎用)
× 1

このプロジェクトについて

イントロ

まず、私はエレクトロニクスの世界にまったく慣れていないことを記入する必要があります。私はコーディングにまともなバックグラウンドを持っており、それは役に立ちますが、私が作成したプロジェクトのいずれについても、常に新しいアイデアや提案を受け入れています。

最近、ピエゾブザーとそれに伴うコーディングについてもっと学びました。これは私がこれまでに学んだことに基づいた私の作成です。新しい機能やスイッチで拡張する余地は十分にあります。これは後で行う予定ですが、今のところ次の課題に進んでいます!

以下は、プリセット曲のメニューを含む、デバイスがどのように機能するかのビデオです。確かに、技術的には曲4と5は同じですが、私はより大きく、より良いものを作成したいという衝動があり、より多くの曲の音楽コードを書くことはそれらの1つではありませんでした!メインループと個々の曲のループの両方の基本的なコーディングは、独自のアイデアに非常に簡単に適応できるため、適切と思われる方法で自由に変更してください。

実際の動作をご覧ください!

ハードウェアのセットアップ方法

ピアノの鍵盤...

ピアノのキースイッチは、抵抗ラダー型を使用して接続されました。抵抗は順番に配置され、各スイッチを電源に接続します。私のプロジェクトでは、1M、10k、4.7K、1K、560、220を使用することを選択しました。最初のピアノスイッチ(左側)は電源に接続されており、回路内の次のスイッチにも接続されています。 2番目のスイッチは最小の抵抗に接続され、その後の各スイッチは直列の次に大きい抵抗に接続されます。最後のスイッチは、10kオームの抵抗を介して接続を接地し、7つのスイッチすべてをArduinoの「アナログ入力」ピンA0に接続します。メインスケッチは、各ピアノキーに関連付けられている音符の周波数を定義します。このプロジェクトでは、C4、D4、E4、F4、G4、A4、B4を使用しました。C4は左端のスイッチです。頻度の値を変更するか、スイッチを追加して、独自のプロジェクトを完全にカスタマイズしてください!

LCD画面...

下の回路図に従ってLCDピンを接続します。画面のコントラスト制御のために、LCDピン3をポテンショメータに接続します。ポテンショメータの外側のピンは、この回路を完成させるために電源とアースに接続されています。 LCDピン15は、220オームの抵抗を介して電源に接続されています。これらのピンのいずれかが自分のプロジェクトで変更された場合は、それに応じてコードを更新してください。

メニュースイッチ...

メニュースイッチを電源に接続し、10Kオームの抵抗を介して接地します。このスイッチは、コーディングを介して制御できるように、Arduinoのピン7にも接続する必要があります。

LED ...

LEDは、「メニューモード」で、ピアノのキーが無効になっていることを示すために使用されます。メニュースイッチを押すとLEDランプが点灯します。 LEDのアノード(プラス)をArduinoのピン6に接続し、220オームの抵抗を介してLEDを接地します。

ピエゾブザー...

ピエゾブザーを統合するには、一方の端をArduinoピン8に接続し、もう一方の端を220オームの抵抗を介してアースに接続します。コードの「トーン」機能は、呼び出されたノートを再生するためにこのピンを探します。

<図> <図> <図>

コードの仕組み

セットアップ...

  • スケッチは、「LiquidCrystal.h」ライブラリと「pitches.h」ライブラリをインポートすることから始まります。これにより、後でコード内でそれらのライブラリからさまざまなアイテムを参照できるようになります。
  • 次に、メニュースイッチの名前を定義し、入力と出力のどちらのピンを決定し、7つのピアノキーのそれぞれの周波数値を設定することで、コードを設定します。
  • コードをある程度整理して理解しやすくし、後で拡張できるように、個々の曲ごとに新しいタブが作成されました。曲を削除または追加する場合は、メインの「電子キーボード」スケッチのコードも変更してください。

メインループ...

  • キーボードはLEDがオフになっていて、すべてのピアノキーがアクティブになっている状態で始まります
  • ループがメニューボタンが押されたことを検出すると、ピアノキーが無効になり、LEDがオンになり、「メニューモード」になっていることを示します。

メニューへのアクセス...

  • メニューボタンを押して現在の曲を順番に表示し、いずれかのピアノキーを押してLCD画面に表示されている曲の再生を開始します
  • LCD画面に現在再生中の曲が表示され、曲の再生が終了するとメニューの同じポイントに戻ります。そこから、再生するか、利用可能な曲のリストを続行できます。
  • メニューボタンをダブルクリックすると、メニューが最初から再開されます
  • ピアノキーの使用に戻るには、メニューの残りの曲を順番に切り替えます。 LCD画面が空白になり、LEDがオフになると、ピアノのキーが再び機能します。

コード

  • 電子キーボード
  • Song1
  • Song2
  • Song3
  • Song4
  • Song5
  • ピッチ.h
電子キーボード Arduino
メインコード
 // LCD画面、スイッチ、LEDのセットアップ#include  #include "pitches.h" LiquidCrystal lcd(12、11、5、4、3、2); const int LCDswitchPin =7; //メニュー/ LCDスイッチ名を定義しますintLCDswitchState =0; //メニュー/ LCDスイッチの状態をオフ/低に設定prevLCDswitchState =0; int blueLED =6; int LCDswitchCounter =0; //メニューボタンの押下回数のカウンター//(このコードはメニューボタンの押下をカウントし、コンピューターに表示し、//「メニューモード」の終了後にゼロから開始します。現在、このスケッチには他の影響はありません// 、ただし、後で//新機能を使用してプロジェクトを拡張するための良い出発点です//ミュージックノートキー-周波数値を設定しますint notes [] ={262、294、330、349、392、440、494}; //設定しますノートC、D、E、F、G、A、B //////////////////////////////////// ////////// void setup(){Serial.begin(9600); lcd.begin(16、2); pinMode(LCDswitchPin、INPUT); pinMode(blueLED、OUTPUT); digitalWrite(blueLED、LOW ); //ピアノキーがオンになっている間LEDはオフのままです} //セットアップを終了します///////////////////////////////// ///////////// void loop(){LCDswitchState =digitalRead(LCDswitchPin); int keyVal =analogRead(A0); Serial.println(keyVal); lcd.noDisplay(); digitalWrite(blueLED、 LOW); //メインループが開始するたびにLEDをオフに戻します// ************** START "LCDstart" WHENメニューボタンが押されました*********** if(LCDswitchState ==HIGH){digitalWrite(blueLED、HIGH); // LEDをオンにして、ピアノのキーが無効になっていて、デバイスが「メニューモード」になっていることを示しますlcd.display(); lcd.clear(); LCDstart(); } // *********************************************** ************************ //////キーボードノートと周波数ステートメント////////作成した抵抗ラダーを使用して各ピアノのキーボタンの電圧を変更します// 220オーム=C5 // 560オーム=D5 // 1Kオーム=E5 //など... if(keyVal ==1023){tone(8、notes [0]); // C} //終了ifelse if(keyVal> =990&keyVal <=1010){tone(8、notes [1]); // D} //終了elseif else if(keyVal> =960 &&keyVal <=980){tone(8、notes [2]); // E} //終了elseif else if(keyVal> =900 &&keyVal <=945){tone(8、notes [3]); // F} //終了elseif else if(keyVal> =650 &&keyVal <=710){tone(8、notes [4]); // G} //終了elseif else if(keyVal> =500 &&keyVal <=550){tone(8、notes [5]); // A} //終了elseif else if(keyVal> =5 &&keyVal <=10){tone(8、notes [6]); // B} //終了elseif else if(keyVal <=1){//スイッチが押されていない場合は、トーンを再生しないnoTone(8); } //終了elseif} //周波数トーンループの終了///////////////////////////////////// //////////////// void LCDstart(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //ループが開始するたびにメニューボタンの状態を確認します// ************* START SONG 1 TITLE LOOP ******************* * if(LCDswitchState ==HIGH){//メニューボタンが押された場合... LCDswitchCounter ++; //ボタンの数を1に設定Serial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はSong1title()をさらに1つ追加します。 lcd.clear();壊す; } // ************* ELSE SHOW MENU **************** else {//メニューボタンが押されていない場合は、... LCDswitchCounter =0; //メニューボタンの数を0に設定しますlcd.clear(); lcd.setCursor(0、0); lcd.print( "WHICH SONG WOULD"); lcd.setCursor(0、1); lcd.print( "YOU LIKE TO PLAY"); delay(50); //メインに戻る}} //終了while} // LCDstartループを終了// ************* SONG 1 LOOP STARTS HERE ************* * void Song1title(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を再度確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態をもう一度確認します// ************* START SONG 2 TITLE LOOP ******************** if( LCDswitchState ==HIGH){//メニューボタンが押された場合、... LCDswitchCounter ++; //ボタンの数を2に設定Serial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はSong2title()をさらに1つ追加します。 lcd.clear();壊す; } else {//メニューボタンが押されていない場合intkeyVal =analogRead(A0); Serial.println(keyVal); if(keyVal> =2){digitalWrite(blueLED、LOW); Song1();壊す; } // lcd.clear();の場合は終了lcd.setCursor(0、0); lcd.print( "スーパーマリオブラザーズ"); lcd.setCursor(0、1); lcd.print( "THEME SONG"); delay(50); }} //曲1-> 2の間に終了} // Song1titleループを終了// ************* SONG 2 LOOP STARTS HERE ************* * void Song2title(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を再度確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態をもう一度確認します// ************* START SONG 3 TITLE LOOP ******************** if( LCDswitchState ==HIGH){//メニューボタンが押された場合、... LCDswitchCounter ++; //ボタンの数を3に設定Serial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はSong3title()をさらに1つ追加します。 lcd.clear();壊す; } else {//メニューボタンが押されていない場合intkeyVal =analogRead(A0); Serial.println(keyVal); if(keyVal> =2){digitalWrite(blueLED、LOW); Song2();壊す; } // lcd.clear();の場合は終了lcd.setCursor(0、0); lcd.print( "スーパーマリオブラザーズ"); lcd.setCursor(0、1); lcd.print( "UNDERWORLD"); delay(50); }} //曲2-> 3の間に終了} // Song2titleループを終了// ************* SONG 3 LOOP STARTS HERE ************* * void Song3title(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を再度確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態をもう一度確認します// ************* START SONG 4 TITLE LOOP ******************** if( LCDswitchState ==HIGH){//メニューボタンが押された場合、... LCDswitchCounter ++; //ボタンの数を4に設定Serial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はSong4title()をさらに1つ追加します。 lcd.clear();壊す; } else {//メニューボタンが押されていない場合intkeyVal =analogRead(A0); Serial.println(keyVal); if(keyVal> =2){digitalWrite(blueLED、LOW); Song3();壊す; } // lcd.clear();の場合は終了lcd.setCursor(0、0); lcd.print( "JEOPARDY"); lcd.setCursor(0、1); lcd.print( "THEME SONG"); delay(50); }} //曲3-> 4の間に終了} // Song3titleループを終了// ************* SONG 4 LOOP STARTS HERE ************* * void Song4title(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を再度確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態をもう一度確認します// ************* START SONG 5 TITLE LOOP ******************** if( LCDswitchState ==HIGH){//メニューボタンが押された場合、... LCDswitchCounter ++; //ボタンの数を5に設定Serial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はSong5title()をさらに1つ追加します。 lcd.clear();壊す; } else {//メニューボタンが押されていない場合intkeyVal =analogRead(A0); Serial.println(keyVal); if(keyVal> =2){digitalWrite(blueLED、LOW); Song4();壊す; } // lcd.clear();の場合は終了lcd.setCursor(0、0); lcd.print( "SONG 4"); lcd.setCursor(0、1); lcd.print( "TITLE HERE"); delay(50); }} //曲4-> 5の間に終了} // Song4titleループを終了// ************* SONG 5 LOOP STARTS HERE ************* * void Song5title(){int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態を再度確認しますwhile(LCDswitchState ==LOW){//メニューボタンが押されていない間ループを続行しますLCDswitchState =digitalRead(LCDswitchPin); //メニューボタンの状態をもう一度確認します// ************* START SONG 4 TITLE LOOP ******************** if( LCDswitchState ==HIGH){//メニューボタンが押された場合... LCDswitchCounter =0; //ボタンの数を0に設定しますSerial.print( "ボタンを押す回数:"); Serial.println(LCDswitchCounter); delay(300); //分countsまでの時間はさらに1つのlcd.clear();を追加します。 } else {//メニューボタンが押されていない場合intkeyVal =analogRead(A0); Serial.println(keyVal); if(keyVal> =2){digitalWrite(blueLED、LOW); Song5();壊す; } // lcd.clear();の場合は終了lcd.setCursor(0、0); lcd.print( "SONG 5"); lcd.setCursor(0、1); lcd.print( "TITLE HERE"); delay(50); }} //曲4-> 5の間に終了} // Song5titleループを終了
Song1 Arduino
1曲目のコード。現在、マリオブラザーズのテーマソングがロードされています。
 // ***************** SONG 1 NOTES HERE *************** *********** /////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////マリオの曲を作成する方法の完全なチュートリアルはここで見つけることができます:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer / ///////////////////////////////////////////// ////////////////////////////////////////////////// //////// void Song1(){lcd.clear(); //メロディーのノート:intmelody [] ={NOTE_E7、NOTE_E7、0、NOTE_E7、0、NOTE_C7、NOTE_E7、0、NOTE_G7、 0、0、0、NOTE_G6、0、0、0、NOTE_C7、0、0、NOTE_G6、0、0、NOTE_E6、0、0、NOTE_A6、0、NOTE_B6、0、NOTE_AS6、NOTE_A6、0、NOTE_G6、NOTE_E7、 NOTE_G7、NOTE_A7、0、NOTE_F7、NOTE_G7、0、NOTE_E7、0、NOTE_C7、NOTE_D7、NOTE_B6、0、0、NOTE_C7、0、0、NOTE_G6、0、0、NOTE_E6、0、0、NOTE_A6、0、NOTE_B6、 0、NOTE_AS6、NOTE_A6、0、 NOTE_G6、NOTE_E7、NOTE_G7、NOTE_A7、0、NOTE_F7、NOTE_G7、0、NOTE_E7、0、NOTE_C7、NOTE_D7、NOTE_B6、0、0}; //音符の長さ:4 =四分音符、8 =八分音符など:int noteDurations [] ={12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12 、12、12、12、12、12、12、12、12、12、12、9、9、9、12、12、12、12、12、12、12、12、12、12、12、12、12、12 、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、12、9、9、9、12、12、12、12、12、12、12、12 、12、12、12、12、12、}; lcd.setCursor(1、0); lcd.print( "Now playing ..."); lcd.setCursor(0、1); lcd.print( "MARIO THEME SONG"); int size =sizeof(melody)/ sizeof(int); for(int thisNote =0; thisNote  
Song2 Arduino
2曲目のコード。現在、マリオブラザーズアンダーワールドソングがロードされています。
 // ***************** SONG 2 NOTES HERE *************** *********** /////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////マリオの歌を作成する方法の完全なチュートリアルはここで見つけることができます:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer / ///////////////////////////////////////////// ////////////////////////////////////////////////// //////// void Song2(){lcd.clear(); //メロディーのノート:intmelody [] ={NOTE_C4、NOTE_C5、NOTE_A3、NOTE_A4、NOTE_AS3、NOTE_AS4、0、0、NOTE_C4、 NOTE_C5、NOTE_A3、NOTE_A4、NOTE_AS3、NOTE_AS4、0、0、NOTE_F3、NOTE_F4、NOTE_D3、NOTE_D4、NOTE_DS3、NOTE_DS4、0、0、NOTE_F3、NOTE_F4、NOTE_D3、NOTE_D4、NOTE_DS3、NOTE_DS4、0、0、 NOTE_D4、NOTE_CS4、NOTE_DS4、NOTE_DS4、NOTE_GS3、NOTE_G3、NOTE_CS4、NOTE_C4、NOTE_FS4、NOTE_F4、NOTE_E3、NOTE_ AS4、NOTE_A4、NOTE_GS4、NOTE_DS4、NOTE_B3、NOTE_AS3、NOTE_A3、NOTE_GS3、0、0、0}; //音符の長さ:4 =四分音符、8 =八分音符など:intnoteDurations [] ={12、12 、12、12、12、12、6、3、12、12、12、12、12、12、6、3、12、12、12、12、12、12、6、3、12、12、12、12 、12、12、12、6、6、18、18、18、6、6、6、6、6、6、18、18、18、18、18、18、10、10、10、10、10 、10、3、3、3}; lcd.setCursor(1、0); lcd.print( "Now playing ..."); lcd.setCursor(0、1); lcd.print( "MARIO UNDERWORLD"); int size =sizeof(melody)/ sizeof(int); for(int thisNote =0; thisNote  
Song3 Arduino
3曲目のコード。現在、Jeopardyテーマソングがロードされています。
 // ***************** SONG 3 NOTES HERE **************** ********** void Song3(){lcd.clear(); //メロディーの音符:intmelody [] ={NOTE_C2、NOTE_F3、NOTE_C3、NOTE_A2、NOTE_A2、NOTE_C3、NOTE_F3、NOTE_C3、 NOTE_C3、NOTE_F3、NOTE_C3、NOTE_F3、NOTE_AS3、NOTE_G3、NOTE_F3、NOTE_E3、NOTE_D3、NOTE_CS3、NOTE_C2、NOTE_F3、NOTE_C3、NOTE_A2、NOTE_A2、//行1と2を繰り返すNOTE_C3、NOTE_F3、NOTE_C3、NOTE_C3、NOTE_F3、NOTE_C3 、NOTE_E3、NOTE_D3、NOTE_CS3、NOTE_C3}; //音符の長さ:4 =四分音符、8 =8番目の音符など:intnoteDurations [] ={4、4、4、8、8、4、4、2 4、4、4、4、3、8、8、8、8、8、4、4、4、8、8、//行1と2を繰り返す4、4、2、4、8、8、4 、4、4、4、4、4、0}; lcd.setCursor(1、0); lcd.print( "Now playing ..."); lcd.setCursor(0、1); lcd.print( "JEOPARDY"); for(int thisNote =0; noteDurations [thisNote]!=0; thisNote ++){//音符の長さを計算するには、1秒かかります//音符の種類で割った値です。 //例えば。四分音符=1000/4、八分音符=1000/8などintnoteDuration =2000 / noteDurations [thisNote]; tone(8、melody [thisNote]、noteDuration * 0.9); //音符を区別するために、音符間の最小時間を設定します。 //ノートの持続時間+ 30%はうまく機能しているようです:// int pauseBetweenNotes =noteDuration * 1.30; // delay(pauseBetweenNotes); delay(noteDuration); } Song3title(); } // Song3ループを終了する
Song4 Arduino
4曲目のコード。現在、短い一般的なメロディーがロードされています。
 // ***************** SONG 4 NOTES HERE *************** *********** void Song4(){lcd.clear(); //メロディーの音符:intmelody [] ={NOTE_C4、NOTE_G3、NOTE_G3、NOTE_A3、NOTE_G3、0、NOTE_B3、NOTE_C4 }; //音符の長さ:4 =四分音符、8 =8番目の音符など:int noteDurations [] ={4、8、8、4、4、4、4、4}; lcd.setCursor(1、0); lcd.print( "Now playing ..."); lcd.setCursor(0、1); lcd.print( "SONG 4 TITLE"); int thisNote =0; //音符の長さを計算するには、1秒を//音符の種類で割った値を取ります。 //例えば。四分音符=1000/4、八分音符=1000/8などfor(int thisNote =0; thisNote <8; thisNote ++){//音符の長さを計算するには、1秒かかります//音符の種類で割った値です。 //例えば。四分音符=1000/4、八分音符=1000/8などintnoteDuration =1000 / noteDurations [thisNote];トーン(8、メロディー[thisNote]、noteDuration); //音符を区別するために、音符間の最小時間を設定します。 //ノートの持続時間+ 30%はうまく機能しているようです:int pauseBetweenNotes =noteDuration * 1.30; delay(pauseBetweenNotes); noTone(8); //トーンの再生を停止します:} // forSong4title();を終了します} // Song4ループを終了
Song5 Arduino
5曲目のコード。現在、短い一般的なメロディーがロードされています。
 // ***************** SONG 5 NOTES HERE *************** *********** void Song5(){lcd.clear(); //メロディーの音符:intmelody [] ={NOTE_C4、NOTE_G3、NOTE_G3、NOTE_A3、NOTE_G3、0、NOTE_B3、NOTE_C4 }; //音符の長さ:4 =四分音符、8 =8番目の音符など:int noteDurations [] ={4、8、8、4、4、4、4、4}; lcd.setCursor(1、0); lcd.print( "Now playing ..."); lcd.setCursor(0、1); lcd.print( "SONG 5 TITLE"); int thisNote =0; //音符の長さを計算するには、1秒を//音符の種類で割った値を取ります。 //例えば。四分音符=1000/4、八分音符=1000/8などfor(int thisNote =0; thisNote <8; thisNote ++){//音符の長さを計算するには、1秒かかります//音符の種類で割った値です。 //例えば。四分音符=1000/4、八分音符=1000/8などintnoteDuration =1000 / noteDurations [thisNote];トーン(8、メロディー[thisNote]、noteDuration); //音符を区別するために、音符間の最小時間を設定します。 //ノートの持続時間+ 30%はうまく機能しているようです:int pauseBetweenNotes =noteDuration * 1.30; delay(pauseBetweenNotes); noTone(8); //トーンの再生を停止します:} // forSong5title();を終了します} // Song5ループを終了する
pitches.h Arduino
曲の音符のライブラリ。他のキーボード/曲のスケッチと同じフォルダに保存します。
 // ******************************** ***************** // **音楽ノートの定義// ************************ *************************#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41# define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define NOTE_DS2 78#define NOTE_E2 82#define 87#define NOTE_FS2 93#define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_DS3 156#define NOTE_E3 165#define NOTE_ define NOTE_FS3 185#define NOTE_G3 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define N OTE_E4 330#define NOTE_F4 349#define NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define NOTE_CS5 554#define NOTE_D5 587# #define NOTE_F5 698#define NOTE_FS5 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS NOTE_F6 1397#define NOTE_FS6 1480#define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489# #define NOTE_FS7 2960#define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978 

回路図


製造プロセス

  1. TJBot入門
  2. 喉の渇き警報プラント警報
  3. イタリア語の単語時計
  4. Arduino + LED + MIDIキーボード+ MuseScore =ピアノチューター
  5. Arduinoを搭載したシンプルな障害物センサー
  6. SigfoxkWhメーター
  7. Bluetooth温度モニター
  8. RDA5807付きミニステレオラジオ
  9. ジェスチャー制御ロック
  10. コンパニオンIC
  11. 反応時間を測定する