树莓派python写简单程序_在树莓派上用python编写单个触控按键驱动

序言:

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

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

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

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

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

一、原理

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

76ae43f017ec

触控按键外观

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

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

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

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

0->0:无触控

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

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

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

二、连线

76ae43f017ec

触控模块与树莓派连线

三、编程

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

#!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参数后,执行正确。

76ae43f017ec

触控驱动调试结果

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值