获取树莓派引脚GPIO信号,利用获得的信号来执行一些控制操作。
关于使用按键开关控制树莓派上某GPIO引脚的信号,参考:树莓派 GPIO按钮开关 原理与实现 | 鱼儿的博客 (yuerblog.cc)
而关于树莓派GPIO的介绍,可以看:树莓派 GPIO 控制 - 树莓派使用指南 - 极客学院Wiki (jikexueyuan.com),里面介绍了不同IO操作库的安装使用方法。
这里我们选择wiringPi,因为它支持c++,库函数的介绍以及4B中引脚的定义参考:树莓派wiringPi库详解 - lulipro - 博客园 (cnblogs.com)。
首先在树莓派4B上面安装wiringPi库,这里用的系统是它官方的系统raspbain,打开终端执行:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
安装后执行
gpio -v
gpio readall
就可以查看树莓派引脚信息。
然后编写gpioTest.cpp来测试一下:
#include<iostream>
#include<cstdlib>
#include<wiringPi.h>
const int pin=1; //定义GPIO(wirintPI编码的1号引脚)
int main()
{
if(wiringPiSetup()==-1)
{
std::cout<<"setup error\n";
exit(-1);
}
pinMode(pin,INPUT); //定义pin引脚的io模式为输入模式
pullUpDnControl(pin,PUD_DOWN); //对INPUT的输入引脚设置下拉电阻模式
while(1){
if(digitalRead(pin))//当检测到pin引脚接收信号为高电平(开关连通,另一端连接3.3V电源)
std::cout<<"open!"<<std::endl;
else //当检测到pin引脚接收信号为低电平(开关断开,接地)
std::cout<<"close!"<<std::endl;
delay(10); //延时10ms再检测
}
return 0;
}
在gpioTest.cpp所在目录下,打开终端执行命令:
g++ -Wall -o gpioTest gpioTest.cpp -lwiringPi
生成可执行文件gpioTest之后,再./gpioTest运行。
准备按键开关 ,两根杜邦线,按键开关一头通过杜邦线连接树莓派的17号物理引脚(board编码),另一头通过杜邦线连接连接树莓派的12号物理引脚(board编码),它对应wirintPI编码的1号引脚。开关按下时,./gpioTest输出open!,开关弹起时./gpioTest输出close!