相关商品

  • Arduino Leonardo 莱昂纳多控制器 原装进口
  • Arduino 水蒸气传感器 雨水探测器 液位开关 湿度传感器 电子积木
  • 1602液晶扩展板 v2.0 Arduino LCD 1602 Keypad Shield
  • Arduino 魔法书 实现梦想的工具和技术
  • Arduino UNO R3 控制器 ATmega328P-PU+ATmega16U2 arduino 原装进口
  • 原装进口 Arduino Mega ADK 2560 开发板 Arduino uno R3 控制器
  • Arduino 蜂鸣器发声模块 有源蜂鸣器 电磁式蜂鸣器 电子积木
  • Arduino Due ARM控制器 Arduino原装进口 32bit CortexM3
  • Arduino Yun Arduino官方原装 Arduino Yún WiFi Linux
  • MP3 Player Shield MP3模块 Arduino 解码器 Sparkfun 原装进口
  • Serial Controlled Motor Driver 电机驱动板 Sparkfun 原装进口
  • Arduino Mini 05 Sparkfun原装进口 ATmega328 控制器
  • Arduino UNO R3 SMD 控制器 ATmega16U2 开发版 单片机 sparkfun原装进口
  • RedBot控制器 RedBot Mainboard Arduino开发板 Sparkfun原装进口
  • ArduPilot 固定翼 飞控 多旋翼 Arduino 控制器 Sparkfun原装进口
  • A-Star 32u4 Mini LV 可编程模块 ATmega32U4开发板 pololu原装
  • A-Star 32U4 Mini ULV 可编程模块 ATmega32U4开发板 Pololu原装
  • Arduino 直流电机驱动板 MiniMoto DRV8830 IIC/I2C Sparkfun原装
  • Arduino Intel Galileo Gen 2 伽利略开发板 官方授权
  • XBee Explorer Regulated Arduino力荐 Adapter Sparkfun原装进口
  • Arduino扩展板 Danger Shield for Arduino Sparkfun 原装进口
  • Starduino UNO R3 控制器 ATmega328P-PU+ATmega32U2 (直插) 兼容Arduino
  • Arduino 声音传感器 Sound Detector 声音检测模块 Sparkfun原装
  • 动手玩转 Arduino 爱上 Arduino 互动电子入门套件 Arduino必备教材
  • 4WD机器人调试助手v2.0软件 智能小车 Arduino 履带 WiFi蓝牙小车
  • SparkFun原装进口 Block for Intel® Edison 扩展板 Arduino扩展
  • 机智云开发板 Arduino UNO 传感器扩展板 GoKit智能硬件
  • 学Arduino玩转机器人制作 爱上 Arduino套件 爱上制作图书 机器人制作知识大全 爱上机器人
  • Arduino 电流传感器 电流检测模块 过流保护模块 交流电检测
  • Arduino Yun Mini 控制器 ATmega32U4开发板 WIFI Linux原装限量
  • Arduino 9 Axes Motion Shield 9轴运动扩展板 三轴加速度计
  • Arduino M0 Pro 电路板 ATSAMD21G18 Arduino UNO 升级 原装
  • 基于Arduino UNO R3开发板 乐高外壳 UNO保护外壳 透明盒子 注塑外壳
  • 官方版 完美图解物联网IoT实操第二册:ESP8266 Arduino Cordova物联网书籍
  • 当前位置: 首页 > 应用教程 > 【创客学堂】听!Arduino在唱歌

    【创客学堂】听!Arduino在唱歌

    编辑:Xtm2014-08-25 浏览次数:1201

     Arduino音频发声器

     制作人:frenzy

     制作时间: 2小时
           制作难度: ★★★☆☆
           极客指数: ★★★★☆


        Arduino,是一块基于开放源代码的USB接口Simple I/O接口板,或者可以诠释为一种开源硬件和开源软件相结合的创新,它能实现的功能相当丰富。
    首先要介绍的是如何利用Arduino板发出简单的声音,即如何把Arduino板做成一个迷你的音频发生器。

     

    1. 工具和材料

    2. 如何产生音乐

    3. Tone函数

    4. 制作简易键盘

    5. 震撼出笼!

     

    1 工具和材料

    ●  1个8欧姆的小扬声器

    ●  1块Arduino实验板

    ●  1个按钮

    ● 1个阻值10k的电阻

    ● 以及导线若干。

    Adafruit ProtoShield原型扩展板来搭建测试电路

    这里用一块Adafruit ProtoShield原型扩展板来搭建测试电路

     

    2 如何产生音乐

    Arduino电路搭建

     

    在开始动手制作之前,我们最好先提前运行一下音乐程序,这样对搭建出的Arduino电路应该发出什么音乐就能做到心中有数。你可以从Arduino集成开发环境中获得相应的音乐程序。

    为方便起见在这里直接给出了一段音乐程序代码 :

     

    #include "pitches.h"
    // notes in the melody:
    int melody[] = {
    NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};
    // note durations: 4 = quarter note, 8 = eighth note, etc.:
    int noteDurations[] = {
    4, 8, 8, 4,4,4,4,4 };
    void setup() {
    // iterate over the notes of the melody:
    for (int thisNote = 0; thisNote
    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);
    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
    }
    }
    void loop() {
    // no need to repeat the melody.
    }
    }

     

    另外还需要一个文件来定义基本音调,这个文件也能在集成开发环境中找到,在此也给出了这段代码,你只需将其保存为.h格式,并放到程序目录下即可:

    /***************** Public Constants ********************/
    #define NOTE_B0 31
    #define NOTE_C1 33
    #define NOTE_CS1 35
    #define NOTE_D1 37
    #define NOTE_DS1 39
    #define NOTE_E1 41
    #define NOTE_F1 44
    #define NOTE_FS1 46
    #define NOTE_G1 49
    #define NOTE_GS1 52
    #define NOTE_A1 55
    #define NOTE_AS1 58
    #define NOTE_B1 62
    #define NOTE_C2 65
    #define NOTE_CS2 69
    #define NOTE_D2 73
    #define NOTE_DS2 78
    #define NOTE_E2 82
    #define NOTE_F2 87
    #define NOTE_FS2 93
    #define NOTE_G2 98
    #define NOTE_GS2 104
    #define NOTE_A2 110
    #define NOTE_AS2 117
    #define NOTE_B2 123
    #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
    #define NOTE_C7 2093
    #define NOTE_CS7 2217
    #define NOTE_D7 2349
    #define NOTE_DS7 2489
    #define NOTE_E7 2637
    #define NOTE_F7 2794
    #define NOTE_FS7 2960
    #define NOTE_G7 3136
    #define NOTE_GS7 3322
    #define NOTE_A7 3520
    #define NOTE_AS7 3729
    #define NOTE_B7 3951
    #define NOTE_C8 4186
    #define NOTE_CS8 4435
    #define NOTE_D8 4699
    #define NOTE_DS8 4978

    按照上图所示连接扬声器并烧入程序,电源正极连接8脚,负极连接接地脚,不出意外的话,这样就能听到一小段曲子了。

    如果想尝试换成其他音乐,还可以从 这里 下载相应代码。

     3   Tone函数

    ● Arduino板上产生的音乐由tone()函数控制,改动该函数即可改变音乐旋律,代码有两种形式分别为:tone(pin, frequency, duration)或tone(pin, frequency)

    ● 第一个函数中,pin代表连接扬声器的管脚,frequency代表发声频率,duration代表持续的时间,单位是毫秒。

    ● 如果用第二个函数,则还需另外的noTone()函数来控制音乐的停止noTone(pin)

    ● 在上一步音乐程序中,还需包括一个pitches.h文件。该文件的作用是根据声音频率改变自动得出相应变量,这样我们就无需自己计算基本音调,有了这个功能,我们这些菜鸟级的作曲家也有机会推出自己的作品了。

    4   制作简易键盘

    ● 接下来我们要制作一个简易的单键键盘,这一步工作主要是把电路各个部分组合起来,并使其在按键控制下正常发声。

    ● 下面两张图片分别是实际接线图接线示意图

    Arduino实际接线图

    实际接线图

    Arduino接线示意图

    接线示意图

    ● 下面是单个音调的程序代码,将其添加到tone函数中,另外千万不要忘记pitches.h文件:

    #include "pitches.h"

    const int buttonPin = 2; // the number of the pushbutton pin

    int note1 = NOTE_C4; // define note sound

    // variables will change:

    int buttonState = 0; // variable for reading the pushbutton status

     

    void setup() {

    // initialize the pushbutton pin as an input:

    pinMode(buttonPin, INPUT);

    }

    void loop(){

    // read the state of the pushbutton value:

    buttonState = digitalRead(buttonPin);

    // check if the pushbutton is pressed.

    // if it is, the buttonState is HIGH:

    if (buttonState == HIGH) {

    // sound tone

    tone(8, note1);

    }

    else {

    //turn off sound

    noTone(8);

    }

    }

    ● 连接好电路并载入上面这段代码,按下按键后听到的声音应该是C调。

    5   震撼出笼!

    Arduino音乐作品揭晓的时刻

    ● 作品揭晓的时刻到啦!看爱出镜的制作者自HIGH的摸样是不是很有感染力?!

    Arduino音乐作品揭晓的时刻

    ● 如果你觉得音调不够丰富,想添加更多音调,那么只需继续增加按键和相应代码。

    Arduino音乐作品揭晓的时刻

    ● 让我们来期待更多的arduino基本应用吧!

    本文转自果壳网

    • 用户评价

    暂时还没有任何用户评论

    总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
    用户名: 匿名用户
    E-mail:
    评价等级:
    评论内容:
    验证码:
    captcha

    Hi,大家好,我是小奥!

    欢迎来到奥松机器人的世界!

    需要咨询服务请点小奥哦!

    • 销售咨询: 销售咨询
    • 销售咨询: 销售咨询
    • 技术支持: 技术支持
    • 咨询电话:
      0451-86628691
    Top