簡易有源蜂鳴器——樹莓派基於C語言編程


蜂鳴器模塊功能實現
  1. 驅動方式:
慣用驅動蜂鳴器的方式有兩種:一種是 PWM 輸出口直接驅動,另一種是利用I/O 定時翻轉電平產生驅動波形對蜂鳴器進行驅動。
PWM 輸出口直接驅動是利用 PWM 輸出口本身可以輸出一定的方波來直接驅動蜂鳴器。在單片機的軟件設置中有幾個系統寄存器是用來設置 PWM 口的輸出的,可以設置占空比、周期等等,通過設置這些寄存器產生符合蜂鳴器要求的頻率的波形之后,只要打開 PWM 輸出, PWM 輸出口就能輸出該頻率的方波,這個時候利用這個波形就可以驅動蜂鳴器了。比如頻率為 2000Hz的蜂鳴器的驅動,可以知道周期為 500μs,這樣只需要把 PWM 的周期設置為 500μs,占空比電平設置為 250μs,就能產生一個頻率為 2000Hz 的方波,通過這個方波再利用三極管就可以去驅動這個蜂鳴器了。
而利用 I/O 定時翻轉電平來產生驅動波形的方式會比較麻煩一點,必須利用定時器來做定時,通過定時翻轉電平產生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅動蜂鳴器了。比如為 2500Hz 的蜂鳴器的驅動,可以知道周期為 400μs,這樣只需要驅動蜂鳴器的 I/O 口,每 200μs 翻轉一次電平就可以產生一個頻率為2500Hz,占空比為 1/2duty 的方波,再通過三極管放大就可以驅動這個蜂鳴器了。
  1. 簡易有源蜂鳴器實現功能:每100ms響一下而后停100ms蜂鳴器
  1. 程序頭文件和引腳宏定義
  1. 對於main函數,需先調用int wiringPiSetup (void)函數來初始化樹莓派引腳,若該函數返回值為-1則說明初始化失敗
  1. 引腳配置使用pinMode (int pin, int mode)
Pin:配置的引腳
Mode:指定引腳的IO模式,可取的值:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK
  1. 使用void digitalWrite (int pin, int value)
Value:引腳輸出的電平值,可取值:HIGH代表輸出高電平,LOW代表輸出低電平
  1. 程序編寫完成后,接下來就是編譯問題,若使用c++編寫的代碼則使用第一條語句,若使用c編寫則使用第二條語句
g++ -Wall -o test test.cpp  -lwiringPi    
//使用C++編程 , -Wall 是為了使能所有警告,以便發現程序中的問題
gcc -Wall -o test test.c   -lwiringPi    
//使用C語言編程, -lwiringPi是鏈接wiringPi庫, -lpthread是鏈接softPwm
  8、 編譯完之后,並將模塊相應引腳接到樹莓派上,執行命令./test,則可以實現程序中相應功能
 1 #include <stdio.h>
 2 #include <wiringPi.h>
 3 
 4 #define voice_pin 1  //定義蜂鳴器引腳
 5 
 6 int main()
 7 {
 8     if(wiringPiSetup() == -1)   //初始化樹莓派引腳
 9     {
10         printf("Error!\n");
11         return 1;
12     }
13     pinMode(voice_pin, OUTPUT);  //配置引腳為輸出模式
14     while(1)
15     {
16         digitalWrite(voice_pin, HIGH);  //高電平
17         delay(100);
18         digitalWrite(voice_pin, LOW);   //低電平
19         delay(100);
20     }
21 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM