樹莓派控制高電平蜂鳴器(c語言+新手向)


  話不多說,先上代碼:

  

#include <wiringPi.h> 
#include <stdio.h>
#include <sys/time.h>
#define VOICE 0

void ultraInit(void){
    pinMode(VOICE,OUTPUT);//我們此處是用的是GPIO.0輸入輸出端口,所以pin=0 
}

void doVoice(void){
    digitalWrite(VOICE,LOW);//初始化引腳電平值為LOW 
    for(int i=1;i<=6;i++){
        printf("This is NO.%d\n",i);
        digitalWrite(VOICE,HIGH);//設置引腳傳出高電平 
        delay(500);
        digitalWrite(VOICE,LOW);//設置引腳傳出低電平 
        delay(1000);
    }
    digitalWrite(VOICE,LOW);
}

int main(){
    if(wiringPiSetup() == -1){                //初始化樹莓派 
        printf("setup wiringPi failed !");
        return 1;
    }
    
    ultraInit();                            //初始化端口 
    
    doVoice();                                //控制蜂鳴器發聲 
    
    printf("This is END\n");
    
    return 0;
}

  接下來我們來看一下這個實驗主要用到的模塊——高電平蜂鳴器。顧名思義,高電平蜂鳴器就是在引腳傳入HIGH電平時會發出時聲音,聲音的模式是bing~bing~。

  

  我們可以看到高電平蜂鳴器有三個引腳(使用母對母杜邦線):

    1.GND 接地引腳(接樹莓派14號引腳)

    2.I/O     輸入輸出引腳(接樹莓派11號引腳——GPIO.0)

    3.VCC  接電源引腳(接樹莓派4號引腳)

  程序的開始我們先用pinMode將GPIO.0引腳設置為OUTPUT(輸出)模式。

  因為該蜂鳴器的觸發模式是傳入一個高電平,所以在開始之前先將11號引腳的電平值設置為LOW,然后我們運用一個for循環控制蜂鳴器響的次數。

  在for循環中,我們首先設置11號引腳的電平值為HIGH,這個時候蜂鳴器開始發聲,然后用delay函數讓程序休眠500ms,要注意的是,引腳的電平值在改變后在下一次改變之前是不會改變的,在程序休眠的這500ms,11號引腳的輸出電平一直是HIGH。在休眠500ms后,我們修改11號引腳的電平值為LOW,蜂鳴器停止發聲。然后讓程序休眠1000ms,在這1s內,11號引腳的電平值一直為LOW。

  我在這里設置的for循環次數為6,所以蜂鳴器會發聲6次,每次500ms。之后程序結束。

  程序運行時還是先用gcc -Wall -o voice voice.c -lwiringPi編譯,然后用sudo ./voice運行。


免責聲明!

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



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