前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在全志H616核桃派1B开发板Python进行GPIO按键功能实现

在全志H616核桃派1B开发板Python进行GPIO按键功能实现

作者头像
阿志小管家
发布2024-05-09 08:02:27
820
发布2024-05-09 08:02:27
举报

前言?

按键是最简单也最常见的输入设备,很多产品都离不开按键,包括早期的iPhone,今天我们就来学习一下如何使用Python来编写按键程序。有了按键输入功能,我们就可以做很多好玩的东西了。

实验目的?

编程实现按键输入检测。

实验讲解?

核桃派板载一个按键,位于TYPE-C供电口旁边:

key1
key1

从核桃派原理图可以看到按键连接到主控引脚PC12, 没按下时输入高电平(1),按下接地输出低电平(0):

key2
key2

由于我们使用的是Python库,只需要知道库引脚名称即可。按键在Python库中的名称为board.KEY :

key3
key3

digitalio对象?

在CircuitPython中可以直接使用 digitalio(数字 IO)模块编程实现IO输入从而实现按键的输入电平检测。具体介绍如下表:

构造函数?
代码语言:javascript
复制
key=digitalio.DigitalInOut(pin)

参数说明:

  • pin 开发板引脚编号。例:board.PC8
使用方法?
代码语言:javascript
复制
key.direction = value

引脚定义输入/输出。value匹配值如下:

  • digitalio.Direction.INPUT :输入。
  • digitalio.Direction.OUTPUT :输出。
代码语言:javascript
复制
key.pull = value

设置上下拉电阻。value匹配值如下:

  • digitalio.Pull.UP :上拉。
  • digitalio.Pull.DOWN :下拉。
代码语言:javascript
复制
value = key.value

按键输入返回值。value返回值如下:

  • True1 :高电平。
  • False0 :低电平。

更多用法请阅读官方文档: digitalio – Basic digital pin support — Adafruit CircuitPython 9.1.0-beta.1 documentation

KEY跟上一节LED一样也是用到digitalio对象,只是从输出方式给改成了输入方式,我们可以通过代码实现当检测到按键被按下时(输入低电平)点亮LED蓝灯,松开时(输入高电平)熄灭LED蓝灯。

导入digitalio相关模块

构建key和led对象

检测按键是否被按下

按下点亮LED,否则熄灭

参考代码?

代码语言:javascript
复制
'''
实验名称:按键
实验平台:核桃派
'''

#导入相关模块
import board
from digitalio import DigitalInOut, Direction, Pull

#构建LED对象和初始化
led = DigitalInOut(board.LED) #定义引脚编号
led.direction = Direction.OUTPUT  #IO为输出

#构建按键对象和初始化
key = DigitalInOut(board.KEY) #定义引脚编号
key.direction = Direction.INPUT #IO为输入

while True:

    if key.value == 0: #按键被按下
        led.value = 1 #点亮LED

    else: #松开
        led.value = 0 #关闭LED

实验结果?

这里使用Thonny远程核桃派运行以上Python代码,关于核桃派运行python代码方法请参考: 运行Python代码

key4
key4

按下按键,LED点亮。

key5
key5

松开,LED熄灭

key6
key6

除了使用板载按键和LED外,你也可以自己搭建电路,注意修改代码中的GPIO引脚编号即可。

key7
key7

按键的本质也是GPIO操作,除了板载的LED和按键,你也可以通过杜邦线连接到核桃派其它GPIO(40P排针上)使用相关功能。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言?
  • 实验目的?
  • 实验讲解?
  • digitalio对象?
    • 构造函数?
      • 使用方法?
      • 参考代码?
      • 实验结果?
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com