設備與材料
個人電腦 × 1
arduino Uno × 1
麵包板 × 1
喇叭 × 1
電晶體 × 1
連接線 若干
實體接線圖
Arduino 發音函式
tone(pin,frequency,duration) ;
pin : 那一隻接腳要輸出方波
frequency : 方波的頻率
duration: 方波輸出的時間(ms)
tone(7,262,250);
表示在第7腳產生262Hz方波250ms
tone()指令執行後會立刻執行下一行指令,因此如果你寫以下指令可能不會有正確的結果。它並不會依序產生262Hz 250ms、294Hz 250ms 、 330Hz 250ms,你只會聽到 330Hz 250ms 。
tone(7,262,250);
tone(7,294,250);
tone(7,330,250);
你應該將你的程式修正如下tone(7,262,250);
delay(250);
tone(7,294,250);
delay(250);
tone(7,330,250);
delay(250);
tone()指令執行完,必需要delay()相對應的時間
tone(pin,frequency) ;
pin : 那一隻接腳要一直輸出方波
frequency : 方波的頻率
noTone(pin) ;
pin : 那一隻接腳要停止輸出方波
tone(7,262);
表示在第7腳一直產生262Hz方波,直到 noTone(7);指令
歌曲簡譜
簡譜相關知識
簡譜介紹
Do | |
高音Do | |
低音Do | |
1/2拍 | |
1/4拍 | |
1.5拍 |
參考程式
/***************************************************/
/* 送電即演奏小蜜蜂樂曲2小節後就停止 */
/***************************************************/
//喇叭控制接腳
const int speaker = 7;
//樂曲速度
int tempo=250;
//低音頻率表 lfreqs[1]=>低音Do
int lfreqs[] = {0,131,147,165,175,196,220,247};
//中音頻率表 freqs[1]=>Do
int freqs[] = {0,262,294,330,349,392,440,494};
//高8度音頻率表 hfreqs[1]=>高音Do
int hfreqs[] = {0,523,587,659,698,784,880,988};
//高16度音頻率表 shfreqs[1]=>高16度音Do
int shfreqs[] = {0,1046,1175,1318,1397,1568,1760,1976};
void setup() {
//設定喇叭接腳為輸出
pinMode(speaker,OUTPUT);
//輸入設定
}
void loop() {
//自己要加上按鈕判斷結構喔!
song1();
//演奏1次就停止演奏
//執行一次就停止,如果你加上按鈕判斷時,請取消 while 迴圈
while(1){
delay(1000);
}
}
//高音發音函式
//自己寫喔!
//中音發音函式
void music(byte scale,float bit){
tone(speaker,freqs[scale],bit*tempo);
delay(bit*tempo);
//中斷1/20拍
delay(tempo/20);
}
//低音發音函式
//自己寫喔!
//第一首歌
void song1 (){
//設定樂曲速度
tempo=250;
//小蜜蜂的部份發音
music(5,1); //5 1拍
music(3,1); //3 1拍
music(3,2); //3 2拍
music(4,1); //4 1拍
music(2,1); //2 1拍
music(2,2); //2 2拍
}
功能
1.按 S1 演奏 小蜜蜂歌曲
2.按 S2 演奏 歌曲2
3.按 S3 演奏 歌曲3
音階表
音階 | H1 | #H1 | H2 | #H2 | H3 | H4 | #H4 | H5 | #H5 | H6 | #H6 | H7 |
頻率(Hz) | 524 | 555 | 588 | 623 | 660 | 699 | 741 | 785 | 832 | 881 | 933 | 988 |
音階 | 1 | #1 | 2 | #2 | 3 | 4 | #4 | 5 | #5 | 6 | #6 | 7 |
頻率(Hz) | 262 | 278 | 295 | 313 | 332 | 352 | 373 | 395 | 418 | 443 | 469 | 497 |
音階 | L1 | #L1 | L2 | #L2 | L3 | L4 | #L4 | L5 | #L5 | L6 | #L6 | L7 |
頻率(Hz) | 131 | 139 | 147 | 156 | 165 | 175 | 185 | 196 | 208 | 220 | 233 | 247 |
相關知識
Arduino 輸出實習(單燈閃爍)
Arduino 輸出實習(跑馬燈-愚公移山)
Arduino 輸出實習(跑馬燈-for迴圈)
Arduino 數位輸入實習
Arduino 數位輸入實習(INPUT_PULLUP)
Arduino 類比輸入實習
Arduino PWM 實習 (呼吸燈)
Arduino PWM 實習 (光感應調光燈)
Arduino 8×8 LED Matrix MAX7219 實習
Arduino 紅綠燈小綠人 實習
Arduino 計時器 實習
Arduino 音樂盒
Arduino 電子琴(鍵盤掃描)
Arduino DHT11 溫濕度感應器
Arduino OLED 顯示
Arduino 超音波測距模組 HC-SR04
Arduino 執行時間實習
Arduino 電容測試器
Arduino 紅外線接收實習
Arduino 紅外線發射實習 EPSON 投影機控制
ESP-12F 網路智慧開關(MQTT)
ESP-12F 雲端記錄型 K-Type 溫度計(MQTT ThingSpeak)
ESP-12F 手機雲端紅外線控制
ESP-12F 網路電台收音機
ESP-12F 電子鼓