Arduinoマリオブラザーズテーマソング:4ステップ

Arduinoマリオブラザーズテーマソング:4ステップ

目次:

Anonim

さて、このプロジェクトでは、有名なSUPER MARIO BROSを再作成します。テーマソング!!!!私たちはこれをarduinoとピエゾスピーカーを使ってやっているでしょう、楽しんでください!

用品:

ステップ1:必要なもの

このプロジェクトのためにあなたは必要となるでしょう:

Arduino

ジャンパー線

ワニ口クリップ

arduinoのピエゾスピーカー

ブレッドボード(オプション)

あなたのA - GAME

注:このプロジェクトではブレッドボードを使用しません

ステップ2:設定

あなたのarduinoでは、あなたは1つのジャンパーの一方の端をD3に、そしてもう一方の端をGround(GND)に接続するでしょう。

次に、ワニ口クリップを使います。各クリップの一方の端をD3ジャンパまたはGNDジャンパのもう一方の端にクリップで留めます。

GNDに接続されたワニ口クリップのもう一方の側はスピーカーの下部にある銀色の部分の右側(図のように)にクリップされ、D3に接続されたクリップのもう一方の側は左側にクリップされます。銀の部分

それからarduinoをコンピュータに接続し、arduino IDEを開いてコードを書く準備をしてください。

ステップ3:コーディング

/*

Arduino Mario BrosがPiezoブザーとPWMで調整するブザーのプラス側をピン3に接続し、次にマイナス側を1kΩの抵抗に接続します。 1kΩ抵抗のもう一方の側をArduinoのグランド(GND)ピンに接続します。投稿者:Dipto Pratyaksa最終更新日:31/3/13 * / / ***************************************** ************** *パブリック定数********************************* **************** / #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46#定義NOTE_G1 49#定義NOTE_GS1 52#定義NOTE_A1 55#定義NOTE_B1 62#定義NOTE_C2 65#定義NOTE_CS2 69#定義NOTE_D2 73#定義NOTE_DS2 78#定義NOTE_E2 82#定義NOTE_F2################ 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_F3 175 #define NOTE_F3 175 #define NOTE_F2 175 #define NOTE_F2 175 #define NOTE_AS2 117定義NOTE_GS3 208#定義NOTE_A3 220#定義NOTE_AS3 233#定義NOTE_B3 247#定義NOTE_C4 262#定義NOTE_CS4 277#定義NOTE_D4 294#定義NOTE_DS4 311#定義NOTE_E4 33 0#NOTE_F4を定義349#NOTE_FS4を定義370##NOTE_GS4を定義415#NOTE_A4を定義440#NOTE_AS4を定義466#NOTE_B4を定義#4 C4##NOTE_CS5を定義#55####################DEFINE NOTE_F4 347定義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 1106####################DEFINE NOTE_F5 740 #define NOTE_FS5 740 #define NOTE_G5 784 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1660 #define NOTE_A6 1760 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_7#26##27 #define#27 #define 27 #define 277 #define 277 #define 277 #define 277 #define 277 #define 277 #define 277 #define 277 #define 272 #define 277 #define 272 #define 277 #define 277 #define 277 #define 277 #define 237 #define 277 #define 271 define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_B7 3929 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 46de #define NOTEde DS78 lodyPin 3 //マリオメインテーマmelody int melody = {NOTE_E7、NOTE_E7、0、NOTE_E7、0、NOTE_C7、NOTE_G7、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_AS6、NOTE_A6、0、NOTE_G6、NOTE_E7、NOTE_G7、NOTE_A7、0、NOTE_F7、0、NOTE_C7、0 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_G7、NOTE_A7、0、 NOTE_F7、NOTE_G7、0、NOTE_E7、0、NOTE_C7、NOTE_D7、NOTE_B6、0、0}。 //マリオメインのテンポint int = {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、9、9、9、12、12、12、 12、12、12、12、12、12、12、12、12、}; 12、12、12、12、12、12、12。 // Underworldメロディint underworld_melody = {NOTE_C4、NOTE_C5、NOTE_A4、NOTE_AS3、NOTE_AS4、0、0、NOTE_C4、NOTE_C5、NOTE_A3、NOTE_A4、NOTE_AS4、0、0、NOTE_F4、NOTE_D3、NOTE_D3、NOTE_D4、NOTE_D3、NOTE_D3 NOTE_DS3、NOTE_DS4、0、0、NOTE_F3、NOTE_F4、NOTE_D4、NOTE_DS3、NOTE_DS4、0、0、NOTE_CS4、NOTE_D4、NOTE_CS4、NOTE_DS4、NOTE_GS4、NOTE_GS4、NOTE_G4、NOTE_CS4、NOTE_C4、NOTE_4、N​​OTE_4、N​​OTE_4、N​​OTE_4 NOTE_AS4、NOTE_A4、NOTE_GS4、NOTE_DS4、NOTE_B3、NOTE_AS3、NOTE_A3、NOTE_GS3、0、0、0}。 // underwolrd tempo int underworld_tempo = {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、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}。 void setup(void){pinMode(3、OUTPUT); //ブザーpinMode(13、OUTPUT); //音符を歌うときのLEDインジケータ} void loop(){//曲を歌うsing(1);歌う(1);歌う(2); int song = 0; void sing(int s){//メロディの音を繰り返します。song = s; if(song == 2){Serial.println( "'Underworld Theme'"); int size = sizeof(アンダーワールドメロディ)/ sizeof(int); for(int thisNote = 0; thisNote <size; thisNote ++){//音符の長さを計算するには、1秒を//音符タイプで割った値を取ります。 //例えば。 4分音符= 1000 / 4、8分音符= 1000/8など。int noteDuration = 1000 / underworld_tempo thisNote;バズ(melodyPin、underworld_melody thisNote、noteDuration); //音符を区別するために、それらの間の最小時間を設定します。 // pauseBetweenNotes = noteDuration * 1.30; //ノートの長さ+ 30%はうまく機能するようです。遅延(pauseBetweenNotes); //トーンの再生を停止します。buzz(melodyPin、0、noteDuration); else {Serial.println( "'Mario Theme'"); int size = sizeof(メロディ)/ sizeof(int); for(int thisNote = 0; thisNote <size; thisNote ++){//音符の長さを計算するには、1秒を//音符タイプで割った値を取ります。 //例えば。 4分音符= 1000 / 4、8分音符= 1000/8など。int noteDuration = 1000 /テンポthisNote;バズ(melodyPin、メロディーthisNote、noteDuration); //音符を区別するために、それらの間の最小時間を設定します。 // pauseBetweenNotes = noteDuration * 1.30; //ノートの長さ+ 30%はうまく機能するようです。遅延(pauseBetweenNotes); //トーンの再生を停止します。buzz(melodyPin、0、noteDuration); void buzz(int targetPin、long frequency、long length){digitalWrite(13、HIGH);}長いdelayValue = 100000 /頻度/ 2。 //遷移間の遅延値を計算する// // 1秒分のマイクロ秒を周波数で除算し、次に1/2に分割する。// //各サイクルに2つのフェーズがある。long numCycles = frequency * length / 1000; // //適切なタイミングのサイクル数を計算する// //実際の1秒あたりのサイクル数に、// //の合計サイクル数を求めるための秒数を掛けます(long i = 0; i <numCycles; i ++){//計算された時間の長さ… digitalWrite(targetPin、HIGH); //ダイアフラムdelayMicroseconds(delayValue)を押し出すためにブザーピンをハイに書き込みます。 //計算された遅延値digitalWrite(targetPin、LOW)を待ちます。 //ダイアフラムdelayMicroseconds(delayValue)を引き戻すには、ブザーピンをローに書き込みます。 //再度待つか、計算された遅延値} digitalWrite(13、LOW); }

注:上のコードではLEDが使用されていますが、必要に応じてそれを実行することもできます。

ステップ4:終了!

うわー、あなたはそれをやった!背面に大きなパットを付けて、マリオのサウンドトラックを楽しんでください。