树莓派python游戏按键

编程入门 行业动态 更新时间:2024-10-09 14:27:38

树莓派python游戏<a href=https://www.elefans.com/category/jswz/34/1768597.html style=按键"/>

树莓派python游戏按键

序言:

树莓派作为时下流行的DIY平台,python作为流行的编程语言,玩树莓派是一种态度,写python代码是一种生活情趣。

周五是个好日子,因为周末来了。

忙碌了一周,周五休息一下,玩玩树莓派,学习python,让大脑放个假。

触控按键相较机械按钮而言,耐磨,使用起来非常方便。

购买树莓派套件里有单个触控按键,玩起来吧。

一、原理

触控按键外观如下,属于电容性触控按键,主控是JR223B(见图中U1)。手摸按键区域或悬浮表明,PCB触控区产生感应电容,触控IC处理后知道有触控事件,使SIG输出高电平;没有触控时,SIG输出低电平。

触控按键外观

树莓派通过一个GPIO连接SIG,通过监测触控模块的SIG引脚的电平,就可以知道按键是否按下。原理如下:

0->1(上升沿):表示按键按下(触摸)。

1->1:表示触摸一直都在(手没有离开,相当于长按)

1->0(下降沿):表示按键松开。

0->0:无触控

监测方法有二,一是循环查询SIG电平;二是利用GPIO中断。

因为触摸事件比较随机,而且不会很频繁,所以GPIO中断方式最有效。

利用RPi.GPIO库的add_event_dectect()函数和add_event_callback()函数

二、连线

触控模块与树莓派连线

三、编程

代码如下,把所有相关操作封装到函数里,既调用方便代码又简洁。

#!touchkey.py--触摸按键程序

#encoding == utf-8

import RPi.GPIO as GPIO

import time

touch_key = 12 # touchkey ---->GPIO12

#按键处理函数,参数self如果不加的话,会报错

#检测到按键上升沿事件,只执行一次。

#就算手指一直不放开,不会重复执行。

def mykeyprocess(self):

print("You touch the touch key!!!!!!!")

print("触控按键电平:",GPIO.input(touch_key))

#初始化函数

def init(keyhandler):

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.setup(touch_key,GPIO.IN)

GPIO.add_event_detect(touch_key,GPIO.RISING)

#最后一个参数为软件去抖时间,500ms

GPIO.add_event_callback(touch_key,keyhandler)

def destroy():

try:

GPIO.remove_event_detect(touch_key)

GPIO.cleanup()

except:

print("touchkey: GPIO cleanup fail.")

if(__name__=='__main__'):

try:

init(mykeyprocess)

while True:

print("waiting for your touch!!")

print("触控按键电平:",GPIO.input(touch_key))

time.sleep(1)

except:

destroy()

四、调试

mykeyprocess函数必须加上一个参数self,否则触摸时回调函数mykeyprocess无法正确执行,提示以下错误:

TypeError: mykeyprocess() takes 0 positional arguments but 1 was given

增加self参数后,执行正确。

触控驱动调试结果

参考资料:

更多推荐

树莓派python游戏按键

本文发布于:2024-02-27 19:42:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765867.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:按键   游戏   树莓派   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!