美文网首页
按钮控制——wiringPi接口的使用

按钮控制——wiringPi接口的使用

作者: B_____b | 来源:发表于2019-03-28 11:20 被阅读0次

这里我们通过设置按钮 完成长按三秒 重启树莓派的功能。

代码

解析:

首先我们连接硬件:

按钮

G接 GND  S接GPIO端口  V接5V

根据引脚图连接硬件

#define KEY 23  设置引脚号

wiringPiSetupGpio()   初始化wiringPi 这里使用wiringPi编号

alarm(n)   表示 n 秒后 发送 一个 SIGALRM信号

alarm(0)   取消之前的alarm指令 即 取消n秒后的指令

signal(SIGALRM,handler)   设置收到SIGALRM信号后的处理函数

处理函数handler:接收到对应信号便重启树莓派,reboot为树莓派重启指令。

void handler(int signo)

{

printf("执行reboot\n");

system("sudo reboot");

}

按键抖动

通过usleep(int n) 规避抖动时间

睡眠 n 微秒       1秒 = 1 000 000 微秒

代码:

#include <stdio.h>

#include <wiringPi.h>

#include <unistd.h>

#include <stdlib.h>

#include <signal.h>

//指定引脚接口

#define KEY 23

void handler(int signo)

{

printf("执行reboot\n");

system("sudo reboot");

}

int main(int arg,char** argv)

{

if(-1==wiringPiSetupGpio())

{

return -1;

}

signal(SIGALRM,handler);

pinMode(KEY,INPUT);

//该按钮为低电平按钮 按下为低

while(1)

{

if(digitalRead(KEY)==LOW)

{

//跳过前沿抖动

usleep(20000);

//确认按下

if(digitalRead(KEY)==LOW)

{

alarm(3);

while(digitalRead(KEY)==LOW);

usleep(20000);//跳过后沿抖动

if(digitalRead(KEY)==HIGH)

{

alarm(0);

}

}

}

}

return 0;

}


相关文章

网友评论

      本文标题:按钮控制——wiringPi接口的使用

      本文链接:https://www.haomeiwen.com/subject/bdbfbqtx.html