☛ 功能说明
利用 Arduino Uno 开发板输出电话声音。如下图所示电话声波是由两种不同频率的信号组合成一次振铃 ( ringer ),经过多次振铃后,再静音一段时间,重复不断。
☛ 使用材料
Arduino UNO R3 开发板 × 1、10 μF/16V 电容 × 1、 喇叭或蜂鸣器 × 1。
☛ 电路图及面包板接线图
☛ 程式码
const int speaker = 2; // 数位接脚 2 连接至喇叭 void setup() { } void loop() { for(int i=0;i<10;i++) // 振铃 10 次 { tone(speaker,1000); // 输出 1000 Hz 音调 delay(50); // 延迟 50ms tone(speaker,500); // 输出 500 Hz 音调 delay(50); // 延迟 50ms } noTone(speaker); // 静音 2 秒 delay(2000); }
☛ 练习
⑴ 设计 Arduino 程式,输出由低至高的警报声音。
const int speaker = 2; // 数位接脚 2 连接至喇叭 int fequency1 =1000; // 声音频率 1 int fequency2 =500; // 声音频率 2 void setup() { } void loop() { soundWoring(); // 警报声音副程序 noTone(speaker); // 静音 2 秒 delay(2000); fequency1 += 500; // fequency1 每次递增 500 Hz fequency2 += 500; // fequency2 每次递增 500 Hz if (fequency1 == 4500 ) // 当 fequency1 频率为 4500 Hz, 就恢复至初始值 { fequency1 = 1000; fequency2 = 500; } } void soundWoring() { for(int i=0;i<10;i++) // 振铃 10 次 { tone(speaker,fequency1); // 输出 fequency1 音调 delay(50); // 延迟 50ms tone(speaker,fequency2); // 输出 fequency2 音调 delay(50); // 延迟 50ms } }
⑵ 设计 Arduino 程式,输出哔!哔!哔!警报声音。
const int speaker = 2; // 数位接脚 2 连接至喇叭 void setup() { } void loop() { for(int i=0;i<10;i++) // 振铃 10 次 { tone(speaker,2000); // 输出 2000 Hz 音调 delay(50); // 延迟 50ms tone(speaker,500); // 输出 500 Hz 音调 delay(50); // 延迟 50ms } noTone(speaker); // 静音 2 秒 delay(2000); }
⑶ 设计 Arduino 程式,输出警车警报声音。
float sinVal; int toneVal; int speaker = 2; // 数位接脚 2 接至喇叭 void setup() { } void loop() { for(int x=0;x<180;x++) { sinVal = (sin(x*(3.1412/180))); // 角度转化为弧度 toneVal = 2000+(int(sinVal*1000)); // 相加时,要将 sinVal 转化为整数 tone(speaker,toneVal); delay(2); // 延迟 2 ms } }