找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2980|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于自制的音樂(lè)播放器的一個(gè)小實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本實(shí)驗(yàn)用到的是無(wú)源蜂鳴器傳感器模塊(Arduino拓展板盾板以及杜邦線每個(gè)實(shí)驗(yàn)都要用,所以不再重復(fù)說(shuō)明)。
如下圖所示,我們將蜂鳴器模塊的GND、VCC、以及IO口與Arduino拓展盾板的GND.+5V以及串口6相連接。

                              
然后接上USB連接線,導(dǎo)入程序。
  1. int speakerPin = 9;

  2. int length = 15; // the number of notes
  3. char notes[] = "ccggaagffeeddc "; // a space represents a rest
  4. int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
  5. int tempo = 300;

  6. void playTone(int tone, int duration) {
  7.   for (long i = 0; i < duration * 1000L; i += tone * 2) {
  8.     digitalWrite(speakerPin, HIGH);
  9.     delayMicroseconds(tone);
  10.     digitalWrite(speakerPin, LOW);
  11.     delayMicroseconds(tone);
  12.   }
  13. }

  14. void playNote(char note, int duration) {
  15.   char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  16.   int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

  17.   // play the tone corresponding to the note name
  18.   for (int i = 0; i < 8; i++) {
  19.     if (names[i] == note) {
  20.       playTone(tones[i], duration);
  21.     }
  22.   }
  23. }

  24. void setup() {
  25.   pinMode(speakerPin, OUTPUT);
  26. }

  27. void loop() {
  28.   for (int i = 0; i < length; i++) {
  29.     if (notes[i] == ' ') {
  30.       delay(beats[i] * tempo); // rest
  31.     } else {
  32.       playNote(notes[i], beats[i] * tempo);
  33.     }

  34.     // pause between notes
  35.     delay(tempo / 2);
  36.   }
  37. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表