ocrobot:alpha:kitone:tutorial13
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
ocrobot:alpha:kitone:tutorial13 [2019/07/15 02:34] – [搭建电路] 董凯萍 | ocrobot:alpha:kitone:tutorial13 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ~~NOTOC~~ | ||
+ | ====== | ||
+ | <WRAP left round info 100%> | ||
+ | 这个例子演示了怎样使用tone函数来产生音符。播放一小段你之前可能听过的乐曲。 | ||
+ | </ | ||
+ | |||
+ | ===== ALPHA MEGA328-U核心 ===== | ||
+ | ==== 硬件 ==== | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | ==== 搭建电路 ==== | ||
+ | |||
+ | - ALPHA 蜂鸣器模块插入并行扩展版1号槽位。 | ||
+ | - ALPHA MEGA328-U模块插入并行扩展板2号槽位。 | ||
+ | - USB线连接计算机与ALPHA MEGA328-U。 | ||
+ | {{: | ||
+ | ==== 代码 ==== | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | /* | ||
+ | Melody | ||
+ | 播放音乐 | ||
+ | */ | ||
+ | #include " | ||
+ | |||
+ | int melody[] = { // 乐曲中的音符: | ||
+ | NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 | ||
+ | }; | ||
+ | int noteDurations[] = { | ||
+ | 4, 8, 8, 4, 4, 4, 4, 4 | ||
+ | }; | ||
+ | |||
+ | void setup() { // 遍历音符 | ||
+ | dy: | ||
+ | for (int thisNote = 0; thisNote < 8; thisNote++) { // 为了计算音符长度,用一秒除以音符类型. | ||
+ | int noteDuration = 1000 / noteDurations[thisNote]; | ||
+ | tone(8, melody[thisNote], | ||
+ | int pauseBetweenNotes = noteDuration * 1.30; // 为了区分音符,在它们之间设置最小时间 | ||
+ | delay(pauseBetweenNotes); | ||
+ | noTone(8); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // 不需要重复. | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | 上面的代码用到了pitches.h文件。这个文件包含了典型单音音高的值。例如NOTE_C4是中音c,NOTE_FS4是高音F。这个音符表是Brett Hagman原创的,tone命令就是基于此。当你想创作音乐的时候你会发现它太有用了。 | ||
+ | 为了得到pitches.h 文件,点击右上角的new Tab按钮 | ||
+ | 然后粘贴以下的代码 | ||
+ | |||
+ | <code cpp>/ | ||
+ | * Public Constants | ||
+ | | ||
+ | |||
+ | #define NOTE_B0 | ||
+ | #define NOTE_C1 | ||
+ | #define NOTE_CS1 35 | ||
+ | #define NOTE_D1 | ||
+ | #define NOTE_DS1 39 | ||
+ | #define NOTE_E1 | ||
+ | #define NOTE_F1 | ||
+ | #define NOTE_FS1 46 | ||
+ | #define NOTE_G1 | ||
+ | #define NOTE_GS1 52 | ||
+ | #define NOTE_A1 | ||
+ | #define NOTE_AS1 58 | ||
+ | #define NOTE_B1 | ||
+ | #define NOTE_C2 | ||
+ | #define NOTE_CS2 69 | ||
+ | #define NOTE_D2 | ||
+ | #define NOTE_DS2 78 | ||
+ | #define NOTE_E2 | ||
+ | #define NOTE_F2 | ||
+ | #define NOTE_FS2 93 | ||
+ | #define NOTE_G2 | ||
+ | #define NOTE_GS2 104 | ||
+ | #define NOTE_A2 | ||
+ | #define NOTE_AS2 117 | ||
+ | #define NOTE_B2 | ||
+ | #define NOTE_C3 | ||
+ | #define NOTE_CS3 139 | ||
+ | #define NOTE_D3 | ||
+ | #define NOTE_DS3 156 | ||
+ | #define NOTE_E3 | ||
+ | #define NOTE_F3 | ||
+ | #define NOTE_FS3 185 | ||
+ | #define NOTE_G3 | ||
+ | #define NOTE_GS3 208 | ||
+ | #define NOTE_A3 | ||
+ | #define NOTE_AS3 233 | ||
+ | #define NOTE_B3 | ||
+ | #define NOTE_C4 | ||
+ | #define NOTE_CS4 277 | ||
+ | #define NOTE_D4 | ||
+ | #define NOTE_DS4 311 | ||
+ | #define NOTE_E4 | ||
+ | #define NOTE_F4 | ||
+ | #define NOTE_FS4 370 | ||
+ | #define NOTE_G4 | ||
+ | #define NOTE_GS4 415 | ||
+ | #define NOTE_A4 | ||
+ | #define NOTE_AS4 466 | ||
+ | #define NOTE_B4 | ||
+ | #define NOTE_C5 | ||
+ | #define NOTE_CS5 554 | ||
+ | #define NOTE_D5 | ||
+ | #define NOTE_DS5 622 | ||
+ | #define NOTE_E5 | ||
+ | #define NOTE_F5 | ||
+ | #define NOTE_FS5 740 | ||
+ | #define NOTE_G5 | ||
+ | #define NOTE_GS5 831 | ||
+ | #define NOTE_A5 | ||
+ | #define NOTE_AS5 932 | ||
+ | #define NOTE_B5 | ||
+ | #define NOTE_C6 | ||
+ | #define NOTE_CS6 1109 | ||
+ | #define NOTE_D6 | ||
+ | #define NOTE_DS6 1245 | ||
+ | #define NOTE_E6 | ||
+ | #define NOTE_F6 | ||
+ | #define NOTE_FS6 1480 | ||
+ | #define NOTE_G6 | ||
+ | #define NOTE_GS6 1661 | ||
+ | #define NOTE_A6 | ||
+ | #define NOTE_AS6 1865 | ||
+ | #define NOTE_B6 | ||
+ | #define NOTE_C7 | ||
+ | #define NOTE_CS7 2217 | ||
+ | #define NOTE_D7 | ||
+ | #define NOTE_DS7 2489 | ||
+ | #define NOTE_E7 | ||
+ | #define NOTE_F7 | ||
+ | #define NOTE_FS7 2960 | ||
+ | #define NOTE_G7 | ||
+ | #define NOTE_GS7 3322 | ||
+ | #define NOTE_A7 | ||
+ | #define NOTE_AS7 3729 | ||
+ | #define NOTE_B7 | ||
+ | #define NOTE_C8 | ||
+ | #define NOTE_CS8 4435 | ||
+ | #define NOTE_D8 | ||
+ | #define NOTE_DS8 4978 | ||
+ | </ | ||
+ | |||
+ | 保存并重命名为 pitches.h | ||
+ | |||
+ | |||
+ | <WRAP left round tip 100%> | ||
+ | 这个例子中我们使用了一个新函数:[[reference: | ||
+ | |||
+ | </ | ||
+ | |||
+ | [[ocrobot: |
ocrobot/alpha/kitone/tutorial13.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1