用Mixly与Arduino Uno,让无源蜂鸣器奏响〈歌唱祖国〉!附代码与注意事项
Mixly是一款图形化编程软件,方便初学者进行Arduino开发。要在Arduino Uno开发板上使用无源蜂鸣器播放《歌唱祖国》的简谱,需要将简谱转换为音符频率和持续时间。 以下是对应的Mixly图形化编程思路以及对应的代码(可以在Mixly中手动将代码转换为图形化模块): ```cpp // 定义音符频率 #define NOTE_C4 262 #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_D5 587 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_G5 784 #define NOTE_A5 880 #define NOTE_B5 988 // 《歌唱祖国》部分简谱音符数组 int melody[] = { NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_D4, NOTE_G3, NOTE_C4 }; // 每个音符的持续时间(单位:毫秒) int noteDurations[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 4, 4, 4, 2 }; // 定义蜂鸣器引脚 const int buzzerPin = 8; void setup() { // 设置蜂鸣器引脚为输出模式 pinMode(buzzerPin, OUTPUT); } void loop() { // 遍历音符数组 for (int thisNote = 0; thisNote < sizeof(melody) / sizeof(melody[0]); thisNote++) { // 计算每个音符的持续时间 int noteDuration = 1000 / noteDurations[thisNote]; // 播放当前音符 tone(buzzerPin, melody[thisNote], noteDuration); // 音符之间的间隔时间 int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // 停止播放声音 noTone(buzzerPin); } // 歌曲播放完后暂停一段时间再重新播放 delay(2000); } ``` 需要小心的地方: 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 简谱转换为音符频率和持续时间时要确保准确,否则播放的歌曲可能不准确。 2. 注意蜂鸣器的引脚连接,要和代码中定义的引脚一致。 3. 音符之间的间隔时间设置要合适,太短会使音符听起来连在一起,太长会使歌曲节奏不流畅。 ######[AI写代码神器 | 821点数解答 | 2025-09-11 15:20:37]
- 代码纠错:从“std::uno”笔误到完整 C++ 网络程序的修正与优化(阿里通义 | 465点数解答 | 2024-11-23 20:41:37)244
- 基于 LPC1114 的多功能电子钟:强大功能+完整代码揭秘!(字节豆包 | 787点数解答 | 2025-05-11 21:01:44)229
- 基于 LPC1114 的多功能电子钟:从功能设计到代码框架全揭秘(字节豆包 | 532点数解答 | 2025-05-15 08:32:18)151
- 基于LPC1114的多功能电子钟:从设计方案到完整代码大揭秘!(字节豆包 | 3363点数解答 | 2025-05-15 23:37:14)249
- 基于LPC1114的多功能电子钟:设计方案、硬件框图与完整代码大揭秘(字节豆包 | 561点数解答 | 2025-05-22 17:56:20)162
- 用Arduino实现光敏电阻控制<500亮、按钮开启的流水灯,附硬件连接与代码示例 ( | 987点数解答 | 2024-06-20 20:05:00)186
- Java:设计圆类与圆柱体类并计算属性及体积表面积(字节豆包 | 470点数解答 | 2024-10-20 10:03:11)185
- Java 实现矩形与长方体类,精准计算底面积与体积(字节豆包 | 319点数解答 | 2024-10-20 10:25:46)292
- Java 实现矩形与长方体类,轻松计算底面积和体积(字节豆包 | 308点数解答 | 2024-10-20 10:34:27)274
- Java 实现矩形与长方体类:计算底面积与体积的完整代码示例(字节豆包 | 306点数解答 | 2024-10-20 18:34:47)277
- 云南 8 日摄影行程表 HTML 代码优化与逻辑注意点揭秘(字节豆包 | 217点数解答 | 2025-03-09 13:19:03)269
- Arduino UNO+0.96寸OLED屏+摇杆模块:超详细贪吃蛇小游戏代码、注解与连线图(字节豆包 | 1745点数解答 | 2025-07-06 15:59:00)125