改变PWM的音调,可以输出Do re mi fa so la si do这样的7个音符,还可以输出不同音调的Do re mi fa so la si do。

在实例程序里面,我定义了低中高三个音阶。音符的频率则是mbed提供的。已经宏定义好了。

只要改变PWM的输出周期,即可发出不同的音调(频率是周期的倒数)。

为了方便起见,写了一个音阶类(Pitch),虚基类。里面有一个perform函数,参数是音符和持续时间。例如要发出Do这个声音,持续0.5s,只要perform(1,0.5)就好。

还有一个Stop函数,停止响声0.5s则stop(0.5),无参数则直接停止。后面的Low、Mid、High类则是派生类,实现了Pitch的虚函数。

程序里面包括:

1、发出低中高三个声调的Do re mi fa so la si do音。

2、中音版的小星星。

3、低音版的小星星。

#include “mbed.h”

#define NOTE_B031

#define NOTE_C133

#define NOTE_CS1 35

#define NOTE_D137

#define NOTE_DS1 39

#define NOTE_E141

#define NOTE_F144

#define NOTE_FS1 46

#define NOTE_G149

#define NOTE_GS1 52

#define NOTE_A155

#define NOTE_AS1 58

#define NOTE_B162

#define NOTE_C265

#define NOTE_CS2 69

#define NOTE_D273

#define NOTE_DS2 78

#define NOTE_E282

#define NOTE_F287

#define NOTE_FS2 93

#define NOTE_G298

#define NOTE_GS2 104

#define NOTE_A2110

#define NOTE_AS2 117

#define NOTE_B2123

#define NOTE_C3131

#define NOTE_CS3 139

#define NOTE_D3147

#define NOTE_DS3 156

#define NOTE_E3165

#define NOTE_F3175

#define NOTE_FS3 185

#define NOTE_G3196

#define NOTE_GS3 208

#define NOTE_A3220

#define NOTE_AS3 233

#define NOTE_B3247

#define NOTE_C4262

#define NOTE_CS4 277

#define NOTE_D4294

#define NOTE_DS4 311

#define NOTE_E4330

#define NOTE_F4349

#define NOTE_FS4 370

#define NOTE_G4392

#define NOTE_GS4 415

#define NOTE_A4440

#define NOTE_AS4 466

#define NOTE_B4494

#define NOTE_C5523

#define NOTE_CS5 554

#define NOTE_D5587

#define NOTE_DS5 622

#define NOTE_E5659

#define NOTE_F5698

#define NOTE_FS5 740

#define NOTE_G5784

#define NOTE_GS5 831

#define NOTE_A5880

#define NOTE_AS5 932

#define NOTE_B5988

#define NOTE_C61047

#define NOTE_CS6 1109

#define NOTE_D61175

#define NOTE_DS6 1245

#define NOTE_E61319

#define NOTE_F61397

#define NOTE_FS6 1480

#define NOTE_G61568

#define NOTE_GS6 1661

#define NOTE_A61760

#define NOTE_AS6 1865

#define NOTE_B61976

#define NOTE_C72093

#define NOTE_CS7 2217

#define NOTE_D72349

#define NOTE_DS7 2489

#define NOTE_E72637

#define NOTE_F72794

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查