标题: 关于自制的音乐播放器的一个小实验 [打印本页]

作者: ren931228    时间: 2016-5-19 09:28
标题: 关于自制的音乐播放器的一个小实验
本实验用到的是无源蜂鸣器传感器模块(Arduino拓展板盾板以及杜邦线每个实验都要用,所以不再重复说明)。
如下图所示,我们将蜂鸣器模块的GND、VCC、以及IO口与Arduino拓展盾板的GND.+5V以及串口6相连接。

                              
然后接上USB连接线,导入程序。
  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. }
复制代码






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1