按键开关控制树莓派4B(GPIO)

获取树莓派引脚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!

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
树莓派4BGPIO_NUM对应地址如下: | GPIO_NUM | BCM GPIO | Physical Pin | Address (BCM2835) | | -------- | -------- | ------------ | ----------------- | | 2 | GPIO 2 | Pin 3 | 0x7e215008 | | 3 | GPIO 3 | Pin 5 | 0x7e21500c | | 4 | GPIO 4 | Pin 7 | 0x7e215010 | | 5 | GPIO 5 | Pin 29 | 0x7e215014 | | 6 | GPIO 6 | Pin 31 | 0x7e215018 | | 7 | GPIO 7 | Pin 26 | 0x7e21501c | | 8 | GPIO 8 | Pin 24 | 0x7e215020 | | 9 | GPIO 9 | Pin 21 | 0x7e215024 | | 10 | GPIO 10 | Pin 19 | 0x7e215028 | | 11 | GPIO 11 | Pin 23 | 0x7e21502c | | 12 | GPIO 12 | Pin 32 | 0x7e215030 | | 13 | GPIO 13 | Pin 33 | 0x7e215034 | | 14 | GPIO 14 | Pin 8 | 0x7e215038 | | 15 | GPIO 15 | Pin 10 | 0x7e21503c | | 16 | GPIO 16 | Pin 36 | 0x7e215040 | | 17 | GPIO 17 | Pin 11 | 0x7e215044 | | 18 | GPIO 18 | Pin 12 | 0x7e215048 | | 19 | GPIO 19 | Pin 35 | 0x7e21504c | | 20 | GPIO 20 | Pin 38 | 0x7e215050 | | 21 | GPIO 21 | Pin 40 | 0x7e215054 | | 22 | GPIO 22 | Pin 15 | 0x7e215058 | | 23 | GPIO 23 | Pin 16 | 0x7e21505c | | 24 | GPIO 24 | Pin 18 | 0x7e215060 | | 25 | GPIO 25 | Pin 22 | 0x7e215064 | | 26 | GPIO 26 | Pin 37 | 0x7e215068 | | 27 | GPIO 27 | Pin 13 | 0x7e21506c | | 28 | GPIO 28 | Pin 27 | 0x7e215070 | | 29 | GPIO 29 | Pin 28 | 0x7e215074 | | 30 | GPIO 30 | Pin 3 | 0x7e215078 | | 31 | GPIO 31 | Pin 5 | 0x7e21507c | 其中,BCM GPIO是BCM2835芯片上GPIO的编号,Physical Pin是树莓派4B上引脚的物理编号。地址是BCM2835芯片中GPIO寄存器的地址,可以通过访问这些地址来控制树莓派4BGPIO

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值