中职扩展资源包资料:树莓派系列教程9:按键_第1页
中职扩展资源包资料:树莓派系列教程9:按键_第2页
中职扩展资源包资料:树莓派系列教程9:按键_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上两章我们讲解了在树莓派上如何点亮一个LED灯,这一章我们讲解一下按键以及事件中断。一、bcm283501 #in elude <bcm2835.h>02 #i nclude <stdio.h>0304 #defi ne KEY 2005 int main (i nt argc, char *argv)06 07if (!bcm2835_i nit()return 1;08 bcm2835_gpio_fsel(KEY, BCM2835_GPIO_FSEL_INPT);09 bcm2835_gpio_set_pud(KEY, BCM2835_GPIO_PUD_UP);10

2、 prin tf("Key Test Program!n");11 while (1)12 13 if(bcm2835_gpio_lev(KEY) = 0)14 15 printf ("KEY PRESS'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 </stdio.h>v/bcm2835.h>编译并执行,按下按键会看到窗口显示”K

3、EY PRSStS+C,结陳程序。1 gcc -Wall key.c key Tbcm28353 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);读取管脚状态二、wiringPi01 #in clude <stdio.h>02 #in clude<wiri ngpi.h>0304 char KEY = 29;

4、0506 int mai n()if (wiri ngPiSetup() < O)return 1 ; pinM ode (KEY,INPUT); pullUpD nCon trol(KEY, PUD_UP); prin tf("Key Test Program!n"); while(1)08091011121314151617181920if (digitalRead(KEY) = 0)printf ("KEY PRESS'n");while(digitalRead(KEY) = 0) delay(100); delay(100);21

5、22 </wiri ngpi.h></stdio.h>编译并执行,按下按键会看到窗口显示”KEY PRESS+C,纟按束程序。1 gcc -Wall key.c key -viringPi3 sudo ./key注:(1)pinMode (KEY,INPUT); 设置管脚为输入模式(2) pullUpDnControl(KEY, PUD_UP);设置为上拉模式(3) digitalRead(KEY);读取管脚状态通过中断的方式编程01 #i nclude <stdio.h>02 #in elude <wiri ngpi.h>0304 #defi

6、ne button 2905 char flag = 0;06 void myl nterrupt()07 08 flag +;09 1011 int mai n()12 13 if(wiri ngPiSetup() < 0)return 1;14 if(wiri ngPilSR(butt on ,INT_EDGE_FALLING,&myln terrupt) < 0)15 16 prin tf("U nable to setup ISR n");17 18 prin tf(" In terrupt test program' n&qu

7、ot;);19 while20 21 if(flag)22 0);23 while(digitalRead(butto n)=24 prin tf("button pressn");25 flag = 0;26 27 28 29 </wiri ngpi.h></stdio.h>编译并执行1 gcc -Wall Interrupt.c Interrupt -IwirngPi3 sudo ./In terrupt;设置中断下降沿触发,myInterrupt注: ( 1 ) wiringPilSR(button,INT_EDGE_FALLING,&

8、mylnterrupt)为中断处理函数。三、python01 #!/usr/bi n/pyth on02 # -*- codi ng:utf-8 -*-03 import RPi.GPIO as GPIO04 import time0506 KEY = 260708 GPIO.setmode(GPIO.BCM)09 GPIO.setup(KEY,GPION,GPIO.PUD_UP)10 while True:11 time.sleep(0.05)12 if GPIO.i nput(KEY) = 0:13 prin t("KEY PRESS")14 while GPIO.i

9、nput(KEY) = 0:15 time.sleep(0.01)执行程序,按下按键会看到窗口显示”KEY PRECSI+” ,按束程序。1 sudo pytho n key.py注:(1 ) GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)设置管脚为上拉输入模式(2)GPIO.input(KEY )读取管脚值通过中断模式编程01 #!/usr/bi n/pyth on02 # -*- codi ng:utf-8 -*-03 import RPi.GPIO as GPIO04 import time0506 KEY = 260708 def MyI nterrupt(KE

10、Y):<spa n style="fo nt-size: 9pt; li ne-height:0925.2000007629395px;"></spa n>pri nt("KEY PRESS")1011 GPIO.setmode(GPIO.BCM)12 GPIO.setup(KEY,GPION,GPIO.PUD_UP)13 GPIO.add_eve nt_detect(KEY,GPIO.FALLING,Myl nterrupt,200)15 while True:<spa n style="fo nt-size: 9pt; li ne-height:1625.2000007629395px;"> </spa n>t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论