树莓派控制高电平蜂鸣器(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运行。

posted @ 2018-04-22 11:07  月沫  阅读(4025)  评论(0编辑  收藏  举报