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

embedded/2024/9/23 4:42:07/

前言​

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

实验目的​

编程实现按键输入检测。

实验讲解​

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

key1


 

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

key2


 

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

key3


 

digitalio对象​

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

构造函数​

key=digitalio.DigitalInOut(pin)

参数说明:

  • pin 开发板引脚编号。例:board.PC8

使用方法​

key.direction = value

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

  • digitalio.Direction.INPUT :输入。
  • digitalio.Direction.OUTPUT :输出。

key.pull = value

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

  • digitalio.Pull.UP :上拉。
  • digitalio.Pull.DOWN :下拉。

value = key.value

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

  • True 或 1 :高电平。
  • False 或 0 :低电平。

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

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

导入digitalio相关模块

构建key和led对象

检测按键是否被按下

按下点亮LED,否则熄灭

参考代码​

'''
实验名称:按键
实验平台:核桃派
'''#导入相关模块
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 #点亮LEDelse: #松开led.value = 0 #关闭LED

实验结果​

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

key4

按下按键,LED点亮。

key5

松开,LED熄灭

key6

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

key7

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


http://www.ppmy.cn/embedded/38044.html

相关文章

go解析含passphrase的pem秘钥

背景 在编写TLS配置时需要用到需要用到一串包含passphrase的RSA秘钥,本想通过官方库的方式解析使用,但由于安全因素,官方已经禁用了DecryptPEMBlock、EncryptPEMBlock、IsEncryptedPEMBlock等函数,导致无法通过官方库去实现这个需…

vue快速入门(五十)重定向

注释很详细,直接上代码 上一篇 本篇建立在之前篇目前提下针对重定向进行演示 新增内容 路由重定向写法 源码 src/router/index.js //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import myMusic from "/v…

三层交换机与防火墙连通上网实验

防火墙是一种网络安全设备,用于监控和控制网络流量。它可以帮助防止未经授权的访问,保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量,例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…

学习大数据,所需更要的shell基础(2)

文章目录 read读取控制台输入函数系统函数bashnamedirname 自定义函数Shell工具(重点)cutawk 正则表达式入门常规匹配常用特殊字符 read读取控制台输入 1)基本语法 read (选项) (参数) ①选项: -p:指定读取值时的提示…

SARscape操作:GF3 数据预处理

1、设置 Prefrences 参数 点击 SARscape->Preferences->Preferences specific,弹出如下图所示的对话框; 点击 Load Preferences,在弹出的菜单栏中选择适用于GF3影像处理的 MR(between 10m and 30m) 模式; 点击 General p…

DAY 3

1. #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWindowTitle("盗版QQ");//窗口图标this->setWindowIcon(QIcon("E:\\qq\\pictrue\\pi…

onedrive下載zip檔案有20G限制,如何解決

一般來說,OneDrive網頁版對文件下載大小的限制如下圖所示,更多資訊,請您參考這篇文章:OneDrive 和 SharePoint 中的限制 - Microsoft Support 因此我們推薦您使用OneDrive同步用戶端來同步到本地電腦,您也可以選擇只同…

C盘下.m2文件名夹,以及文件详解

${user.home}/.m2/repository文件夹 是maven默认的本地仓库地址 maven仓库分为远程仓库和本地仓库,当你在pom里配置依赖项目后,maven首先会从本地仓库查找该项目,如果没有找到则通过配置的地址或默认地址(如果没有配置远程仓库地…