首页 > 嗟来之食 > 树莓派控制高电平蜂鸣器(c语言+新手向)
2020
01-20

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

最后编辑:
作者:
这个作者貌似有点懒,什么都没有留下。

留下一个回复