ブザーで音楽を鳴らす(Arduino編)
こんにちは!
今回は圧電ブザーを使い、音楽を鳴らしてみたいと思います!
結構簡単なので、是非、遊び感覚で作って頂けたらと思います^^
①「部品」
・ブザー(ピエゾブザーやスピーカーなど)
電子工作ステーション 190円+送料(500円以上で送料無料)
・Arduino UNO
電子工作ステーション 1255円(送料無料)(互換ボード)
※UNO以外の物でも大丈夫です。
・ジャンパーワイヤー(オス・メス)(2本)
電子工作ステーション 1セットで100円(送料500円以上で無料)
スピーカーをArduinoに繋ぐための線。
(モジュール化されてないスピーカーはArduinoに差せるようピンをはんだ付けするか、ミノムシなどでジャンパーワイヤー(オスオス)と結びつけるかです。)
②「配線」
ブザー(ピエゾブザーやスピーカーなど) | Arduino |
- (GND) | -(GND) |
S (もしくは赤線、または+極) | 13 |
③「プログラミング」
音は周波数で決まり、トーン関数を使用します。
トーン関数→tone()
まずは低いドレミファソラシを流してみましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
int PINNO = 13; // ブザーを接続したピン番号 #define NOTE_C3 131//ド #define NOTE_D3 147//レ #define NOTE_E3 165//ミ #define NOTE_F3 175//ファ #define NOTE_G3 196//ソ #define NOTE_A3 220//ラ #define NOTE_B3 247//シ void setup() { } //ドレミファソラシ void loop() { tone(PINNO, NOTE_C3, 100) ; delay(150); tone(PINNO, NOTE_D3, 100) ; delay(150); tone(PINNO, NOTE_E3, 100) ; delay(150); tone(PINNO, NOTE_F3, 100) ; delay(150); tone(PINNO, NOTE_G3, 100) ; delay(150); tone(PINNO, NOTE_A3, 100) ; delay(150); tone(PINNO, NOTE_B3, 100) ; delay(150); delay(10000); } |
上手くいけば低いドレミファソラシがスピーカーから聞こえてきます♪
次は音楽にしてみましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
int PINNO = 13; // ブザーを接続したピン番号 #define NOTE_C3 131//ド #define NOTE_CS3 139 #define NOTE_D3 147//レ #define NOTE_DS3 156 #define NOTE_E3 165//ミ #define NOTE_F3 175//ファ #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 NOTE_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_DS5 622 #define NOTE_E5 659 #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_DS6 1245 #define NOTE_E6 1319 #define 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 void setup() { } //エレクトリカルパレード void loop() { tone(PINNO, NOTE_G4, 300) ; delay(350); tone(PINNO, NOTE_G4, 100) ; delay(150); tone(PINNO, NOTE_G4, 100) ; delay(150); tone(PINNO, NOTE_G4, 800) ; delay(1150); tone(PINNO, NOTE_G4, 150) ; delay(200); tone(PINNO, NOTE_A4, 150) ; delay(200); tone(PINNO, NOTE_D4, 150) ; delay(200); tone(PINNO, NOTE_G4, 350) ; delay(550); tone(PINNO, NOTE_C5, 150) ; delay(200); tone(PINNO, NOTE_B4, 150) ; delay(200); tone(PINNO, NOTE_C5, 150) ; delay(200); tone(PINNO, NOTE_D5, 350) ; delay(500); tone(PINNO, NOTE_D5, 300) ; delay(350); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_D5, 150) ; delay(200); tone(PINNO, NOTE_E5, 150) ; delay(200); tone(PINNO, NOTE_C5, 150) ; delay(200); tone(PINNO, NOTE_D5, 350) ; delay(500); tone(PINNO, NOTE_G5, 300) ; delay(500); tone(PINNO, NOTE_G5, 150) ; delay(200); tone(PINNO, NOTE_A5, 150) ; delay(200); tone(PINNO, NOTE_FS5, 150) ; delay(200); tone(PINNO, NOTE_G5, 350) ; delay(500); tone(PINNO, NOTE_C6, 250) ; delay(300); tone(PINNO, NOTE_A5, 250) ; delay(300); tone(PINNO, NOTE_D6, 300) ; delay(350); tone(PINNO, NOTE_D6, 100) ; delay(150); tone(PINNO, NOTE_D6, 100) ; delay(150); tone(PINNO, NOTE_D6, 800) ; delay(950); delay(800); tone(PINNO, NOTE_G4, 550) ; delay(600); tone(PINNO, NOTE_D4, 550) ; delay(600); tone(PINNO, NOTE_G4, 550) ; delay(600); tone(PINNO, NOTE_D4, 550) ; delay(600); tone(PINNO, NOTE_G4, 550) ; delay(600); tone(PINNO, NOTE_D4, 550) ; delay(600); tone(PINNO, NOTE_G4, 280); delay(330); tone(PINNO, NOTE_D4, 240) ; delay(290); tone(PINNO, NOTE_E4, 240) ; delay(290); tone(PINNO, NOTE_FS4, 240) ; delay(290); //サビ tone(PINNO, NOTE_G5, 300) ; delay(350); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_C6, 100) ; delay(150); tone(PINNO, NOTE_D6, 300) ; delay(350); tone(PINNO, NOTE_G5, 300) ; delay(350); tone(PINNO, NOTE_E5 , 300) ; delay(350); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_E5 , 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_G5, 300) ; delay(350); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_E5 , 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_G5, 300) ; delay(350); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_C6, 100) ; delay(150); tone(PINNO, NOTE_D6, 300) ; delay(350); tone(PINNO, NOTE_G5, 300) ; delay(350); tone(PINNO, NOTE_E5 , 300) ; delay(350); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_E5 , 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_B5, 100) ; delay(150); tone(PINNO, NOTE_A5, 100) ; delay(150); tone(PINNO, NOTE_G5, 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_E5 , 100) ; delay(150); tone(PINNO, NOTE_FS5, 100) ; delay(150); tone(PINNO, NOTE_D5, 100) ; delay(150); tone(PINNO, NOTE_G5, 300) ; delay(350); delay(10000); } |
上手くいけば、あの有名なディズニーの曲が流れるはずです♪
③「仕組み」
圧電ブザーは電圧でブザーを振動させて音を出します。
1秒間にたくさん振動させると、音は高くなります。逆に回数を低くすると、音は低くなります。
つまり1秒間に262回振動させると「ド」の音になるそうです!
この1秒間に繰り返す波の数を「周波数」と言います。
プログラムのコードで言うと、
1 2 3 |
#define NOTE_C3 131//ド #define NOTE_D3 147//レ #define NOTE_E3 165//ミ |
131、147、165、が周波数の指定に値します^^
以上、ご閲覧ありがとうございました♪
是非、いろんなBGMを作ってみてください^^
ぅtd
wwwwwwwwwwwwww