說明: 我們已經在第十六講介紹過有源蜂鳴器,因此這里只介紹無源蜂鳴器。 無源蜂鳴器沒有震蕩源,因此需要通過脈寬調制(PWM)輸入特定的方波電壓信號來發聲。PWM原理可在其他教程中查找,本系列主要介紹傳感器。 演奏一首音樂,最重要的每個音的音調(頻率)和節拍(時長)。 C調音符對應的音調頻率如下圖:(每兩個音調頻率相差 )
我們可以通過tone(pin,frequnce)函數來控制無源蜂鳴器的振動頻率,利用delay()來控制節拍,利用noTone(pin)來終止振動。
實驗目的:控制無源蜂鳴器演奏《天空之城》。天空之城是C調,一拍為四分之一音符長度,每一小節為四拍。 黑點在上為高音,在下為低音,沒有為中音樂。而每兩個豎杠之間為一小節,每一小節共有四個四分之一拍。下面如果畫了一條橫線,則是四分之一拍的二分之一,即八分之一拍;畫了兩條橫線,則是四分之一的四分之一,即十六分之一拍。音符后面的橫線則是前一音符的延續。
器材:Stduino UNO/Nano、杜邦線、無源蜂鳴器模塊
電路連接:
代碼展示: #define C0 (2)
#define C1_LOW (262)
#define C2_LOW (294)
#define C3_LOW (330)
#define C4_LOW (349)
#define C5_LOW (392)
#define C6_LOW (440)
#define C7_LOW (494)
#define C1 (523)
#define C2 (587)
#define C3 (659)
#define C4 (698)
#define C4S (740)//C4#
#define C5 (784)
#define C5S (831)//C5#
#define C6 (880)
#define C7 (988)
#define C1_HIGH (1046)
#define C2_HIGH (1175)
#define C3_HIGH (1318)
#define C4_HIGH (1397)
#define C5_HIGH (1568)
#define C6_HIGH (1760)
#define C7_HIGH (1976)
#define WHOLE (1)
#define HALF (0.5)
#define QUARTER (0.25)
#define EIGHTH (0.125)
#define SIXTEENTH (0.0625)
int tune[]= //根據簡譜列出各頻率
{
C6,C7,
C1_HIGH,C7,C1_HIGH,C3_HIGH,//
C7,C3,C3,
C6,C5,C6,C1_HIGH,
C5,C0,C3,C3,
C4,C3,C4,C1_HIGH,
C3,C0,C1_HIGH,C1_HIGH,C1_HIGH,
C7,C4S,C4S,C7,
C7,C0,C6,C7,//
C1_HIGH,C7,C1_HIGH,C3_HIGH,
C7,C0,C3,C3,
C6,C5,C6,C1_HIGH,
C5,C0,C3,
C4,C1_HIGH,C7,C7,C1_HIGH,
C2_HIGH,C2_HIGH,C3_HIGH,C1_HIGH,C0,
C1_HIGH,C7,C6,C6,C7,C5S,//
C6,C0,C1_HIGH,C2_HIGH,
C3_HIGH,C2_HIGH,C3_HIGH,C5_HIGH,
C2_HIGH,C0,C5,C5,
C1_HIGH,C7,C1_HIGH,C3_HIGH,C0,C0,
C6,C7,C1_HIGH,C7,C2_HIGH,C2_HIGH,
C1,C5,C5,C0,
C4_HIGH,C3_HIGH,C2_HIGH,C1_HIGH,//
C3_HIGH,
C3_HIGH,C0,C3_HIGH,
C6_HIGH,C5_HIGH,C5_HIGH,
C3_HIGH,C2_HIGH,C1_HIGH,C0,C1_HIGH,
C2_HIGH,C1_HIGH,C2_HIGH,C2_HIGH,C5_HIGH,
C3_HIGH,C0,C3_HIGH,
C6_HIGH,C5_HIGH,
C3_HIGH,C2_HIGH,C1_HIGH,C0,C1_HIGH,
C2_HIGH,C1_HIGH,C2_HIGH,C2_HIGH,C7,
C6,C0,C6,C7,
C6
};
float durt[]= //根據簡譜列出各節拍
{
EIGHTH,EIGHTH,
QUARTER + EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER + QUARTER + QUARTER,EIGHTH,EIGHTH,
QUARTER + EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER + QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER + EIGHTH,EIGHTH,EIGHTH,QUARTER+EIGHTH,
QUARTER + QUARTER,QUARTER,EIGHTH,EIGHTH,EIGHTH,
QUARTER + EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER+EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER+EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER+QUARTER+QUARTER,EIGHTH,EIGHTH,
QUARTER,EIGHTH,EIGHTH,EIGHTH,QUARTER,
EIGHTH,EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER,EIGHTH,EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER+EIGHTH,QUARTER,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,EIGHTH,EIGHTH,
EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,QUARTER,
EIGHTH,EIGHTH,QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER+EIGHTH,EIGHTH,QUARTER,QUARTER,
QUARTER,QUARTER,QUARTER,QUARTER,
QUARTER+QUARTER+QUARTER,
QUARTER+QUARTER,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER,QUARTER,
EIGHTH,EIGHTH,QUARTER,EIGHTH,EIGHTH,
QUARTER,EIGHTH,EIGHTH,EIGHTH,QUARTER,
QUARTER+QUARTER,QUARTER,QUARTER,
QUARTER+QUARTER,QUARTER+QUARTER,
EIGHTH,EIGHTH,QUARTER+QUARTER,EIGHTH,EIGHTH,
QUARTER,EIGHTH,EIGHTH,EIGHTH,QUARTER,
QUARTER+QUARTER,QUARTER,EIGHTH,EIGHTH,
QUARTER+QUARTER+QUARTER
};
int Time = 2000;
int BUZZER = A0;
int length;
void setup()
{
// put your setup code here, to run once:
length=sizeof(tune)/sizeof(tune[0]); //計算長度
}
void loop()
{
// put your main code here, to run repeatedly:
for(int i=0;i<length;i++)
{
if(tune[ i]!=0)
{
tone(BUZZER,tune[ i]);
}
else
{
noTone(BUZZER);
}
delay(Time*durt[ i]); //這里用來樂曲速度。
}
delay(2000);
} Stduino IDE是一款面向32位處理器快速入門學習的集成開發平臺,目前已經支持Arduino_Core_STM32框架,集聚快捷、高效、免費、開源、易得于一身,軟件還集成了GDB調試功能。
IDE當前支持的功能有: - GDB調試
- 封裝庫下載安裝
- 代碼自動補全提示
- 中英文模式
- UTF-8\GBK編碼格式
- 代碼快速格式化
- SWD\串口程序下載&調試(已驗證)
- DFU程序下載方式(待驗證)
- USB HID程序下載方式(待驗證)
- maple DFU程序下載方式(待驗證)
- maple DFU2程序下載方式(待驗證)
- MassStorage程序下載方式(待驗證)
更多功能細節請登錄圖片上水印顯示的網址進行了解 已經支持的芯片&板型列表: - Stduino UNO&Nano
- Nucleo 144 boards
- Nucleo 64 boards
- Nucleo 32 boards
- Discovery boards
- Eval boards
- STM32MP1 series coprocessor boards
- Generic STM32F0 boards
- Generic STM32F1 boards
- Generic STM32F3 boards
- Generic STM32F4 boards
- Generic STM32H7 boards
- Generic STM32L0 boards
- 3D printer boards
- LoRa boards
- Electronic Speed Controller boards
- Generic flight controllers
- Garatronics boards
- Midatronics boards
更多功能集成正在進行中~ |