中职扩展资源包资料树莓派系列教程9按键.docx

上传人:b****3 文档编号:1853140 上传时间:2022-10-24 格式:DOCX 页数:9 大小:16.61KB
下载 相关 举报
中职扩展资源包资料树莓派系列教程9按键.docx_第1页
第1页 / 共9页
中职扩展资源包资料树莓派系列教程9按键.docx_第2页
第2页 / 共9页
中职扩展资源包资料树莓派系列教程9按键.docx_第3页
第3页 / 共9页
中职扩展资源包资料树莓派系列教程9按键.docx_第4页
第4页 / 共9页
中职扩展资源包资料树莓派系列教程9按键.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

中职扩展资源包资料树莓派系列教程9按键.docx

《中职扩展资源包资料树莓派系列教程9按键.docx》由会员分享,可在线阅读,更多相关《中职扩展资源包资料树莓派系列教程9按键.docx(9页珍藏版)》请在冰豆网上搜索。

中职扩展资源包资料树莓派系列教程9按键.docx

中职扩展资源包资料树莓派系列教程9按键

上两章我们讲解了在树莓派上如何点亮一个LED灯,这一章我们讲解一下按键以及事件中断。

一、bcm2835

01

#include 

02

#include 

03

 

04

#define KEY 20

05

intmain(intargc,char**argv)

06

{

07

    if (!

bcm2835_init())return 1;

08

    bcm2835_gpio_fsel(KEY,BCM2835_GPIO_FSEL_INPT);

09

    bcm2835_gpio_set_pud(KEY,BCM2835_GPIO_PUD_UP);

10

    printf("KeyTestProgram!

!

!

!

\n");  

11

    while 

(1)

12

    {  

13

        if(bcm2835_gpio_lev(KEY)==0)

14

        {  

15

            printf("KEYPRESS\n");

16

            while(bcm2835_gpio_lev(KEY)==0)

17

                bcm2835_delay(100);

18

        }  

19

        bcm2835_delay(100);

20

    }  

21

    bcm2835_close();

22

    return 0;

23

}

编译并执行,按下按键会看到窗口显示”KEYPRESS”,按Ctrl+C结束程序。

1

gcc–Wallkey.c–okey–lbcm2835

2

 

3

sudo./key

注:

(1)bcm2835_gpio_fsel(KEY,BCM2835_GPIO_FSEL_INPT);设置管脚为输入模式

   

(2)bcm2835_gpio_set_pud(KEY,BCM2835_GPIO_PUD_UP);设置为上拉模式

   (3) bcm2835_gpio_lev(KEY);读取管脚状态

  二、wiringPi

01

#include 

02

#include

03

 

04

charKEY=29;

05

 

06

intmain()

07

{

08

    if (wiringPiSetup()<0)return 1;

09

    pinMode(KEY,INPUT);

10

    pullUpDnControl(KEY,PUD_UP);

11

    printf("KeyTestProgram!

!

!

\n");

12

    while

(1)

13

    {  

14

        if (digitalRead(KEY)==0) 

15

        {  

16

            printf("KEYPRESS\n");

17

            while(digitalRead(KEY)==0)

18

                delay(100);

19

        }  

20

        delay(100);

21

    }  

22

}

   编译并执行,按下按键会看到窗口显示”KEYPRESS”,按Ctrl+C结束程序。

1

gcc–Wallkey.c–okey–wiringPi

2

 

3

sudo./key

注:

(1)pinMode(KEY,INPUT);设置管脚为输入模式

   

(2)pullUpDnControl(KEY,PUD_UP);设置为上拉模式

   (3) digitalRead(KEY);读取管脚状态

通过中断的方式编程

01

#include 

02

#include 

03

 

04

#definebutton29

05

charflag=0;

06

voidmyInterrupt()

07

{

08

    flag++;

09

}

10

 

11

intmain()

12

{

13

    if(wiringPiSetup()<0)return 1;

14

    if(wiringPiISR(button,INT_EDGE_FALLING,&myInterrupt)<0)

15

    {  

16

        printf("UnabletosetupISR\n");

17

    }  

18

    printf("Interrupttestprogram\n");

19

    while

(1)

20

    {  

21

        if(flag)

22

        {  

23

            while(digitalRead(button)==0);

24

            printf("buttonpress\n");

25

            flag=0;

26

        }  

27

    }  

28

}

29

编译并执行

1

gcc–WallInterrupt.c–oInterrupt-lwirngPi

2

 

3

sudo./Interrupt

注:

(1)wiringPiISR(button,INT_EDGE_FALLING,&myInterrupt);设置中断下降沿触发,myInterrupt为中断处理函数。

   三、python

01

#!

/usr/bin/python

02

#-*-coding:

utf-8-*-

03

importRPi.GPIO as GPIO

04

importtime

05

 

06

KEY=26

07

 

08

GPIO.setmode(GPIO.BCM)

09

GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)

10

while True:

11

    time.sleep(0.05)

12

    if GPIO.input(KEY)==0:

13

        print("KEYPRESS")

14

        while GPIO.input(KEY)==0:

15

            time.sleep(0.01)

执行程序,按下按键会看到窗口显示”KEYPRESS”,按Ctrl+C结束程序。

1

sudopythonkey.py

注:

(1)GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP) 设置管脚为上拉输入模式

  

(2)GPIO.input(KEY) 读取管脚值

通过中断模式编程

01

#!

/usr/bin/python

02

#-*-coding:

utf-8-*-

03

importRPi.GPIO as GPIO

04

importtime

05

 

06

KEY=26

07

 

08

defMyInterrupt(KEY):

09

9pt;line-height:

25.2000007629395px;">   print("KEYPRESS")

10

 

11

GPIO.setmode(GPIO.BCM)

12

GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)

13

GPIO.add_event_detect(KEY,GPIO.FALLING,MyInterrupt,200)

14

 

15

while True:

16

9pt;line-height:

25.2000007629395px;">   time.sleep

(1)

注:

(1)defMyInterrupt(KEY):

 定义中断处理函数

 

(2)GPIO.add_event_detect(KEY,GPIO.FALLING,MyInterrupt,200) 增加事件检测,下降沿触发,忽略由于开关抖动引起的小于200ms的边缘操作。

关于树莓派事件中断编程请参考:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1