4*4薄膜键盘的电路连接和驱动(树莓派)

一、电路连接

        4*4薄膜键盘模块分别有8个传输口,不需要供电,如图2-5的右侧所示。八个接口利用公对母杜邦线接入树莓派任意八个没有占用的GPIO口即可,连接效果如图2-5。 

图2-5 4*4薄膜键盘电路连接图

二、工作原理

        利用逐行(或列)扫描查询法识别按键。

        1.判断键盘中是否有键,按下键,将所有y0-y0行设置为低电平,然后检测列行的状态。只要一列的级别较低,就意味着按下了键盘上的一个键,闭合键位于由低级别线和四行线交叉的四个键中。如果所有列都是高电平,则不按键盘上的任何键。
        2.判断键盘中关闭键的所在位置。当已知按下某个键后,就可以进入关闭特定键的流程。方法如下:依次将一行设置为低电平,即当一行设置为低电平时,其他行设置为高电平。确定行的位置为低电平后,逐行检测每个列的电平状态。如果列为low,则列线与设置为low level的行线相交处的键为closed键。

三、驱动代码

        导入GPIO库,设定好编码格式和DHT温湿度模块所连接的管脚并开启。将每列与每行上的高低电平相连接,行列皆为高电平则表示按下的是行列相交交点值。

import RPi.GPIO as GPIO#导入GPIO库

import time#导入time库

L1 = 5 #GPIO5控制第一行

L2 = 6 #GPIO6控制第二行

L3 = 13 #GPIO13控制第三行

L4 = 19 #GPIO19控制第四行

C1 = 1 #GPIO1控制第一列

C2 = 12 #GPIO12控制第二列

C3 = 20 #GPIO20控制第三列

C4 = 21 #GPIO21 控制第四列

GPIO.setwarnings(False)#代码禁用警告

GPIO.setmode(GPIO.BCM)#设置模式

GPIO.setup(L1,GPIO.OUT)#L1设为输出口

GPIO.setup(L2,GPIO.OUT)#L2设为输出口

GPIO.setup(L3,GPIO.OUT)#L3设为输出口

GPIO.setup(L4,GPIO.OUT)#L4设为输出口

GPIO.setup(C1,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)#设置某一瞬间的C1信号

GPIO.setup(C2,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)#设置某一瞬间的C2信号

GPIO.setup(C3,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)#设置某一瞬间的C3信号

GPIO.setup(C4,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)#设置某一瞬间的C4信号

def readLine(line,characters):

GPIO.output(line,GPIO.HIGH)

if(GPIO.input(C1) == 1):

print(characters[0])

if(GPIO.input(C2) == 1):

    print(characters[1])

if(GPIO.input(C3) == 1):

    print(characters[2])

if(GPIO.input(C4) == 1):

    print(characters[3])

GPIO.output(line,GPIO.LOW)

try:

    while true:

    #读数

        readLine(L2,[“1”,”2”,”3”,”A”])

        readLine(L1,[“4”,”5”,”6”,”B”])

        readLine(L3,[“7”,”8”,”9”,”C”])

        readLine(L4,[“*”,”0”,”#”,”D”])

        time.sleep(0.1)

except KeyboardInterrupt:

print(“\nAPP stopped!”)

四、驱动结果描述

        测试程序包含一个名为readLine的方法。readLine方法将脉冲发送到单行,然后检查在将该行拉高时按下了哪个按钮。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值