“蜂鸣器报警”的版本间的差异
(Created page with " {| style="width: 800px;" |- | ==目的== 本教程将教大家如何使用Microduino的蜂鸣器播放生日歌曲。 ==设备== *'''Microduino-CoreUSB/zh''' *'''Micr...") |
|||
第1行: | 第1行: | ||
− | + | {{Language| 蜂鸣器}} | |
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
第5行: | 第5行: | ||
==目的== | ==目的== | ||
− | + | 本教程将通过三个案例介绍如何使用Microduino蜂鸣器。 | |
+ | [[File:MicroduinoBuzzer.jpg|600px|center]] | ||
==设备== | ==设备== | ||
第11行: | 第12行: | ||
*'''[[Microduino-BUZZER/zh]]''' | *'''[[Microduino-BUZZER/zh]]''' | ||
*'''[[Microduino-Sensorhub/zh]]''' | *'''[[Microduino-Sensorhub/zh]]''' | ||
− | |||
*其他硬件设备 | *其他硬件设备 | ||
**USB数据连接线 一根 | **USB数据连接线 一根 | ||
+ | [[File:MicroduinoBuzzer-Equipment.jpg|600px|center]] | ||
+ | |||
+ | ==简介== | ||
+ | 一般蜂鸣器分为有源蜂鸣器和无源蜂鸣器。 | ||
+ | *有源蜂鸣器 | ||
+ | **内部有振荡、驱动电路。加电压信号(高电平)就可以响。 | ||
+ | ***优点:是用起来方便。 | ||
+ | ***缺点:频率固定了,就只一个单音。 | ||
+ | *无源蜂鸣器 | ||
+ | **无源内部不带震荡源,用直流信号无法令其鸣叫。必须用变化的电源信号才能驱动它。 | ||
+ | ***优点:声音频率可控,可以做出“多来米发索拉西”的效果。 | ||
+ | ***缺点:控制稍微复杂。 | ||
+ | |||
+ | ==实验一:让蜂鸣器响起来== | ||
+ | ===搭建模块电路=== | ||
+ | *Setup 1:用连接线将传感器安装到Hub模块的相应接口(6)上。 | ||
+ | [[File:MicroduinoBuzzer-D6.jpg|600px|center]] | ||
+ | *Setup 2:将Hub模块与CoreUSB模块无上下顺序叠加起来。 | ||
+ | [[File:MicroduinoBuzzer-hub-coreusb.jpg|600px|center]] | ||
− | == | + | ===调试=== |
− | + | *Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。 | |
+ | [[File:CoreUSB_Ble_pc.jpg|600px|center]] | ||
+ | * Setup 2:加载代码,将程序代买拷贝到IDE中。 | ||
+ | <source lang="cpp"> | ||
+ | #define buzzer_pin 6 //定义蜂鸣器驱动引脚 | ||
+ | #define buzzer_fre 600 //定义蜂鸣器输出频率 | ||
− | == | + | void setup() |
− | * | + | { |
+ | pinMode(buzzer_pin,OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | tone(buzzer_pin,buzzer_fre); //驱动蜂鸣器 | ||
+ | } | ||
+ | </source> | ||
+ | 在工具的板卡中选择Microduino-Core USB,端口中选择好对应的端口号(COMXX)。点击向右的箭头(—>)下载程序,出现上传完成提示,程序就已经写进CoreUSB模块中了。 | ||
+ | 成功之后可以听到蜂鸣器发出响声了。 | ||
+ | *“tone(pin,fre)”函数 | ||
+ | **指定引脚(pin)输出频率(fre)的信号。 | ||
+ | **用户可以更改buzzer_fre的值观察蜂鸣器有啥变化。 | ||
+ | ==实验二:蜂鸣器报警== | ||
+ | *将程序代重新拷贝到IDE中。并下载到Core板卡。 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | #define buzzer_pin 6 //定义蜂鸣器驱动引脚 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | void setup() { | + | void setup() |
− | for (int | + | { |
+ | pinMode(buzzer_pin,OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | for(int i=200;i<=800;i++) //用循环的方式将频率从200HZ 增加到800HZ | ||
+ | { | ||
+ | tone(buzzer_pin,i); //在四号端口输出频率 | ||
+ | delay(5); //该频率维持5毫秒 | ||
+ | } | ||
+ | delay(2000); //最高频率下维持2秒钟 | ||
+ | for(int i=800;i>=200;i--) | ||
{ | { | ||
− | + | tone(buzzer_pin,i); | |
− | tone( | + | delay(10); //该频率维持10毫秒 |
− | |||
− | delay( | ||
− | |||
} | } | ||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
+ | “for(int i=200;i<=800;i++)”说明:i的值开始为200,然后for函数执行一次i的值加1,直到i大于800时才退出for循环。用户可以更改相关参数观察蜂鸣器有啥变化。 | ||
+ | 实验采用用for循环的方式来更改频率,从而持续发出不同的声音,达到了报警的效果。 | ||
− | + | ==实验三:播放歌曲== | |
− | |||
− | |||
− | |||
− | = | + | *程序代码 |
+ | <source lang="cpp"> | ||
+ | #define buzzer_pin 6 //定义蜂鸣器驱动引脚 | ||
− | + | int song[] = { | |
− | + | 262, 262, 294, 262, 349, 330, | |
− | + | 262, 262, 294, 262, 392, 349, | |
+ | 262, 262, 523, 440, 349, 330, 294, | ||
+ | 494, 494, 440, 349, 392, 349 | ||
+ | }; | ||
− | + | int noteDurations[] = { | |
− | + | 4, 4, 2, 2, 2, 1, | |
− | + | 4, 4, 2, 2, 2, 1, | |
+ | 4, 4, 2, 2, 2, 2, 2, | ||
+ | 4, 4, 2, 2, 2, 1 | ||
+ | }; | ||
− | + | void setup() { | |
− | + | pinMode(buzzer_pin, OUTPUT); | |
− | + | } | |
+ | |||
+ | void loop() { | ||
+ | song_play(); | ||
+ | } | ||
− | == | + | void song_play() |
+ | { | ||
+ | for (int thisNote = 0; thisNote < 25; thisNote++) | ||
+ | { | ||
+ | int noteDuration = 1000 / noteDurations[thisNote]; | ||
+ | tone(buzzer_pin, song[thisNote], noteDuration); | ||
+ | int pauseBetweenNotes = noteDuration * 1.20; | ||
+ | delay(pauseBetweenNotes); | ||
+ | noTone(buzzer_pin); | ||
+ | } | ||
+ | }</source> | ||
+ | “song_play()”为播放音乐函数,“song[]”里面存放音调(频率),“noteDurations[]”为节拍。 | ||
+ | 音乐由tone()函数控制,改动该函数即可改变音乐旋律,代码有两种形式分别为:tone(pin, frequency, duration)或tone(pin, frequency) | ||
+ | 第一个函数中,pin代表连接扬声器的管脚,frequency代表发声频率,duration代表持续的时间,单位是毫秒。 | ||
+ | 如果用第二个函数,则还需另外的noTone()函数来控制音乐的停止noTone(pin)。 | ||
+ | 将激活后的电池盒与BM模块相连,将所有模块堆叠在一起,顺序随意,搭建完成。 | ||
+ | [[File:MicroduinoBuzzer-Equipment-ok.jpg|600px|center]] | ||
− | + | |} |
2015年9月6日 (日) 14:30的版本
Language | English |
---|
目的本教程将通过三个案例介绍如何使用Microduino蜂鸣器。 设备
简介一般蜂鸣器分为有源蜂鸣器和无源蜂鸣器。
实验一:让蜂鸣器响起来搭建模块电路
调试
#define buzzer_pin 6 //定义蜂鸣器驱动引脚
#define buzzer_fre 600 //定义蜂鸣器输出频率
void setup()
{
pinMode(buzzer_pin,OUTPUT);
}
void loop()
{
tone(buzzer_pin,buzzer_fre); //驱动蜂鸣器
}
在工具的板卡中选择Microduino-Core USB,端口中选择好对应的端口号(COMXX)。点击向右的箭头(—>)下载程序,出现上传完成提示,程序就已经写进CoreUSB模块中了。 成功之后可以听到蜂鸣器发出响声了。
实验二:蜂鸣器报警
#define buzzer_pin 6 //定义蜂鸣器驱动引脚
void setup()
{
pinMode(buzzer_pin,OUTPUT);
}
void loop()
{
for(int i=200;i<=800;i++) //用循环的方式将频率从200HZ 增加到800HZ
{
tone(buzzer_pin,i); //在四号端口输出频率
delay(5); //该频率维持5毫秒
}
delay(2000); //最高频率下维持2秒钟
for(int i=800;i>=200;i--)
{
tone(buzzer_pin,i);
delay(10); //该频率维持10毫秒
}
}
“for(int i=200;i<=800;i++)”说明:i的值开始为200,然后for函数执行一次i的值加1,直到i大于800时才退出for循环。用户可以更改相关参数观察蜂鸣器有啥变化。 实验采用用for循环的方式来更改频率,从而持续发出不同的声音,达到了报警的效果。 实验三:播放歌曲
#define buzzer_pin 6 //定义蜂鸣器驱动引脚
int song[] = {
262, 262, 294, 262, 349, 330,
262, 262, 294, 262, 392, 349,
262, 262, 523, 440, 349, 330, 294,
494, 494, 440, 349, 392, 349
};
int noteDurations[] = {
4, 4, 2, 2, 2, 1,
4, 4, 2, 2, 2, 1,
4, 4, 2, 2, 2, 2, 2,
4, 4, 2, 2, 2, 1
};
void setup() {
pinMode(buzzer_pin, OUTPUT);
}
void loop() {
song_play();
}
void song_play()
{
for (int thisNote = 0; thisNote < 25; thisNote++)
{
int noteDuration = 1000 / noteDurations[thisNote];
tone(buzzer_pin, song[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.20;
delay(pauseBetweenNotes);
noTone(buzzer_pin);
}
}
“song_play()”为播放音乐函数,“song[]”里面存放音调(频率),“noteDurations[]”为节拍。 音乐由tone()函数控制,改动该函数即可改变音乐旋律,代码有两种形式分别为:tone(pin, frequency, duration)或tone(pin, frequency) 第一个函数中,pin代表连接扬声器的管脚,frequency代表发声频率,duration代表持续的时间,单位是毫秒。 如果用第二个函数,则还需另外的noTone()函数来控制音乐的停止noTone(pin)。 将激活后的电池盒与BM模块相连,将所有模块堆叠在一起,顺序随意,搭建完成。 |