跳转至

04 蜂鸣器输出控制

说明

这个章节将讲述如何使用GPIO控制蜂鸣器的响和关闭。我们可以用蜂鸣器模拟一些报警的场景,比如什么值超过了一定量。

我设计的智能家居扩展板一共有1个普通的用GPIO口控制的蜂鸣器,BCM编号是16。

然后这个蜂鸣器电路就是一个三极管控制开关的电路,所以只需要控制引脚的高低电平就可以了。

代码

下面就是写了一个使用wiringPi的控制蜂鸣器端口高低电平变化的代码。使用BCM编码,16,c文件名我命名为main.c

#include <wiringPi.h>

#define BEEP 16

int main(void)
{
    if(wiringPiSetupGpio() < 0) 
        return 1;
    pinMode(BEEP,OUTPUT); //设置引脚为输出模式
    while (1)
    {
        digitalWrite(BEEP,1);
        delay(1000);//延时1000ms
        digitalWrite(BEEP,0);
        delay(1000);
    }
}

然后编译这段代码

cc -Wall -o main main.c -lwiringPi

-Wall 表示编译时显示所有警告,-lwiringPi 表示编译时动态加载 wiringPi 库

编译完成后调用生成的main文件

sudo ./main

然后可以就可以查看到板子上LED灯的变化。

想要停止这个程序,Ctrl+c即可。

分文件编写

想要将beep的驱动部分隔离出来,建立bsp_beep.c和bsp_beep.h文件。具体的写法参考开源代码。

分文件后,多文件的编译如下

cc -Wall -o main main.c bsp_led.c bsp_key.c bsp_beep.c -lwiringPi

把bsp_beep.c文件也加入进去。