美文网首页
按钮控制——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