当前位置: 首页 > news >正文

从零开始的MicroPython(三) 按键与外部中断

上一篇:从零开始的MicroPython(二) GPIO及点灯代码

文章目录

    • 前言
    • 硬件原理
    • 软件原理
    • 注意
    • 代码编写
      • 轮询
      • 外部中断
      • 其他

前言

点灯是嵌入式GPIO输出的典型,按键则是输入的典型。

硬件原理

按键对角接通。

软件原理

如果是一端接高电平,一端接单片机,按下按键两端接通,单片机判断高电平则是按下。

一般来说是接地,接通则单片机读到低电平为按下按键。

注意

  1. 按键有上升沿与下降沿之分。
  2. 按键存在抖动现象,一般不能简单判断电平。

代码编写

轮询

上升沿

from machine import Pin
import timeled = Pin(2, Pin.OUT)button = Pin(23, Pin.IN, Pin.PULL_DOWN)led_state = 0
old_button_state = 0
new_button_state = 0while True:new_button_state = button.value()# 上升沿,从电平0到1if old_button_state == 0 and new_button_state == 1:led_state = led.value()led_state = not led_stateled.value(led_state)old_button_state = new_button_state

延时消抖:

from machine import Pin
import time# 定义引脚
button = Pin(2, Pin.IN, Pin.PULL_UP)  # 按钮连接到GPIO2,使用内部上拉电阻
led = Pin(16, Pin.OUT)  # LED连接到GPIO16while True:if button.value() == 0:  # 按钮按下时,按钮值为0led.value(not led.value())  # 切换LED状态time.sleep_ms(200)  # 延时200毫秒,防止抖动

消抖还有其他的一些写法,比如状态机,或者像这样写:基于C语言实现的一种按键软件消抖

外部中断

from machine import Pin, Timer
import utimeled = Pin(2, Pin.OUT)
button = Pin(23, Pin.IN, Pin.PULL_DOWN)
timer = Timer(-1)def button_callback(pin):led.value(not led.value())button.irq(trigger=Pin.IRQ_RISING, handler=button_callback)while True:utime.sleep(1)

在这个例子中,我们使用了machine模块中的Pin类来定义LED和按钮引脚。我们将LED连接到GPIO2,并将按钮连接到GPIO23。我们还使用了Timer类来创建一个定时器对象,用于处理外部中断事件。

button_callback函数中,我们切换LED的状态。当按钮被按下时,触发一个上升沿中断,并调用button_callback函数。这个函数会切换LED的状态(开或关)。

其他

还有基于时间片轮转、多线程、多任务的写法。

下一篇:串口

相关文章:

从零开始的MicroPython(三) 按键与外部中断

上一篇:从零开始的MicroPython(二) GPIO及点灯代码 文章目录 前言硬件原理软件原理注意代码编写轮询外部中断其他 前言 点灯是嵌入式GPIO输出的典型,按键则是输入的典型。 硬件原理 按键对角接通。 软件原理 如果是一端接高电平,一端接单…...

Windows下编译安装Kratos

Kratos是一款开源跨平台的多物理场有限元框架。本文记录在Windows下编译Kratos的流程。 Ref. from Kratos KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, a…...

汽车-腾讯2023笔试(codefun2000)

题目链接 汽车-腾讯2023笔试(codefun2000) 题目内容 现在塔子哥有 n 个汽车,所有的汽车都在数轴上,每个汽车有1.位置 pos 2.速度 v ,它们都以在数轴上以向右为正方向作匀速直线运动。 塔子哥可以进行任意次以下操作:选择两个汽车…...

软测面试二十问(最新面试)

1.软件测试的流程是什么 参加需求评审会,解决需求疑问---写测试用例---对测试用例进行评审---评审后开始执行测试---提交bug---追踪bug---关闭bug---回归测试---交叉测试---编写测试报告---冒烟测试 2.什么是黑盒测试和白盒测试?它们有何区别 黑盒测试…...

风吸杀虫灯采用新型技术 无公害诱虫捕虫

TH-FD2S】风吸杀虫灯利用害虫的趋光性和对特定波长的光源(如紫外光、蓝光)的敏感性,通过光波引诱害虫成虫扑灯。同时,内置的风扇产生强烈的气流,形成负压区,将害虫迅速吸入到收集器中。害虫在收集器内被风干…...

随手记录第十二话 -- JDK8-21版本的新增特性记录(Lambda,var,switch,instanceof,record,virtual虚拟线程等)

本文主要用于记录jdk8以来的新增特性及使用方法! 1.Java8 Lambda表达式(8) 1.1 方法引用 List<String> list List.of("1", "2", "3");list.forEach(i -> System.out.println(i));//方法引用list.forEach(System.out::println);1.2 接…...

SpringCloud网关 SpringBoot服务 HTTP/HTTPS路由/监听双支持

背景 一般来说SpringCloud Gateway到后面服务的路由属于内网交互&#xff0c;因此路由方式是否是Https就显得不是那么重要了。事实上也确实如此&#xff0c;大多数的应用开发时基本都是直接Http就过去了&#xff0c;不会一开始就是直接上Https。然而随着时间的推移&#xff0c…...

JavaScript做网页是否过期的处理

通过路由上的参数生成唯一md5和路由上token做验证_md5 token-CSDN博客 前言&#xff1a;基于这篇文章我们做网页是否超时&#xff0c;网页是否过期的处理。打开一个网页允许他在一定时间内可以访问&#xff0c;过了这个时间就不可以访问了&#xff0c;encrypt是h5加密方法&…...

python coding时遇到的问题

Q&#xff1a;只有cpu的时候加载模型 A&#xff1a;checkpoint torch.load(model_path, map_locationtorch.device(‘cpu’)) Q&#xff1a;vscode的文件路径和spyder的不一样 A&#xff1a;在vscode中&#xff0c;右键要用的文件&#xff0c;选择“文件相对路径”...

攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战

在数字化浪潮中&#xff0c;攻防演练成为了衡量网络安全防御力的核心标尺&#xff0c;其重要性与日俱增。这项由政府、行业监管或企业内部主导的安全活动&#xff0c;随着互联网普及而兴起&#xff0c;现已发展成为全球公认的检验网络安全体系效能的标准。它不仅关乎技术实力的…...

个人量化交易兴起!有什么好用的量化软件推荐?迅投QMT量化平台简介!

QMT是专门为机构、活跃投资者、高净值客户等专业投资者研发的智能量化交易终端&#xff0c;拥有高速行情、极速交易、策略交易、多维度风控等专业功能&#xff0c;满足专业投资者的特殊交易需求。覆盖业务范围广:沪深A股、港股通、两融、期权、期货。 适合用QMT的投资者&#x…...

SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。参考&#xff1a;SQL注入之Header注入_sqlmap header注入-CSDN博客 序言&#xff1a; 本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入&#xff0c…...

SAM 2: Segment Anything in Images and Videos

Introduction 提出的目的&#xff1a; 1.现有的应用像自动驾驶&#xff0c;AR等来说都是需要temporal localization beyond image-level segmentation&#xff08;时序定位而不仅是图片分割&#xff09; 2. 一个好的分割模型不应该仅仅局限于图片领域&#xff0c;而是图视频两…...

软件测试面试,如何自我介绍?

又是一年金九银十&#xff0c;相信不少小伙伴都在准备跳槽面试&#xff0c;而面试中一个必不可少的环节就是自我介绍&#xff0c;所以&#xff0c;今天我们就来聊一聊软件测试面试中如何自我介绍。 为什么要自我介绍 在讨论如何自我介绍之前&#xff0c;我们先来讨论一下为…...

力扣第四十七题——全排列II

内容介绍 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],…...

Springer旗下中科院2区TOP,国人优势大!

关注GZH【欧亚科睿学术】&#xff0c;第一时间了解期刊最新动态&#xff01; 1 通信网络类 【期刊简介】IF&#xff1a;4.0-5.0&#xff0c;JCR1区&#xff0c;中科院3区 【出版社】ELSEVIER出版社 【检索情况】SCIE&EI双检&#xff0c;CCF-C类 【征稿领域】通信网络的…...

【C++】C++入门知识详解(下)

大家好~我们接着【C】C入门知识详解&#xff08;上&#xff09;-CSDN博客来介绍另一些C入门基础知识。 1.缺省值和缺省参数 缺省参数就是声明或定义函数时为函数的参数指定一个缺省参数。在调用该函数时&#xff0c;如果没有指定实参&#xff0c;则采用该形参的缺省值&#xf…...

分压电阻方式的ADC电压校准

无人机有个流程是电池电压校准。具体做法是:让你用万用表测量一下电池两端的电压,然后输入到文本框中,电机计算能重新计算出电压分压器的值,从而获得电池电压值。 这种方法实现的原理是这样的: 电阻分压检测电压原理,以上图为例: 当电路确定时,R2/(R1+R2)是一个定值R,…...

使用Postman测试API短轮询机制:深入指南

短轮询是一种Web开发中常用的技术&#xff0c;用于在客户端和服务器之间定期检查更新。与长轮询或WebSockets等技术相比&#xff0c;短轮询简单易实现&#xff0c;但可能带来较多的HTTP请求&#xff0c;从而增加服务器负担。Postman作为一个强大的API测试工具&#xff0c;可以用…...

明清进士人数数据

明清进士人数数据 指标&#xff1a;省份名称、城市名称、区县名称、明清各省进士人数、明清各城市进士人数、明清各县区进士人数 指标说明&#xff1a; Province[省份名称]-统计数据所属省份 City[城市名称]-统计数据所属地级市 Region[区县名称]-统计数据所属区县 MQpro…...

RTK内置电台:如何能撬动消费电子万亿市场|深圳海导科技navynav

在测绘、农业、智能交通等领域&#xff0c;厘米级甚至毫米级的高精度定位需求正推动着定位技术的持续革新。作为实时动态载波相位差分技术的核心组件&#xff0c;RTK内置电台凭借其无需外接设备、抗干扰能力强、部署灵活等优势&#xff0c;已成为高精度定位系统的“神经中枢”。…...

3种方法快速激活Beyond Compare 5:完整密钥生成实战指南

3种方法快速激活Beyond Compare 5&#xff1a;完整密钥生成实战指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5是一款功能强大的专业文件对比工具&#xff0c;但30天评估期…...

Cursor Pro免费终极指南:一键破解限制,永久解锁AI编程助手完整功能

Cursor Pro免费终极指南&#xff1a;一键破解限制&#xff0c;永久解锁AI编程助手完整功能 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能:…...

Midjourney Minwa风格终极调试手册:7类常见失效场景(水墨晕染失真、线条断裂、文化符号错位)及对应--stylize动态补偿值

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Minwa风格的本质解构与美学基因图谱 Minwa&#xff08;民画&#xff09;风格源自朝鲜半岛传统民间绘画&#xff0c;其核心并非写实再现&#xff0c;而是以象征性构图、平涂色块、非透视空间…...

5分钟快速上手Sonar CNES Report:让代码质量报告变得简单高效

5分钟快速上手Sonar CNES Report&#xff1a;让代码质量报告变得简单高效 【免费下载链接】sonar-cnes-report Generates analysis reports from SonarQube web API. 项目地址: https://gitcode.com/gh_mirrors/so/sonar-cnes-report 你是否经历过这样的场景&#xff1f…...

3步快速上手:用dupeGuru轻松清理重复文件,释放宝贵磁盘空间

3步快速上手&#xff1a;用dupeGuru轻松清理重复文件&#xff0c;释放宝贵磁盘空间 【免费下载链接】dupeguru Find duplicate files 项目地址: https://gitcode.com/gh_mirrors/du/dupeguru 你是否经常为电脑中堆积如山的重复文件而烦恼&#xff1f;照片、文档、音乐文…...

一句话就能“劫持”你的AI?DZS 分层式自适应提示词注入攻击的防御机制框架 (HAA)来了!

本文所展示的提示词技术已在Research square 发表论文预印本。DOI&#xff1a;https://doi.org/10.21203/rs.3.rs-9653510/v1 作者“抖知书&#xff08;douzhishu&#xff09;&#xff0c;涉及到相关测试数据是本人自行测试的&#xff0c;并未通过多专家评审&#xff0c;所以仅…...

基于LLM的邮件智能体:从语义理解到自动化工作流实战

1. 项目概述&#xff1a;一个能“思考”的邮件智能体 最近在折腾一个挺有意思的开源项目&#xff0c;叫 XueJourney/mail-agent 。简单来说&#xff0c;它不是一个简单的邮件收发工具&#xff0c;而是一个能帮你“思考”和“行动”的邮件智能体。想象一下&#xff0c;你每天被…...

SKILLS All-in-one:开源AI Agent技能库,标准化Prompt与工具函数,提升开发效率

1. 项目定位与核心价值如果你和我一样&#xff0c;在过去一年里深度使用过 Claude Code、ChatGPT 或者尝试搭建自己的 AI Agent 工作流&#xff0c;那你一定遇到过这个痛点&#xff1a;每次想给 AI 装个新“技能”&#xff0c;都得自己从头写 Prompt、设计工具调用逻辑、处理错…...

通过Taotoken用量看板清晰掌握团队API成本与模型使用偏好

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken用量看板清晰掌握团队API成本与模型使用偏好 对于项目负责人或技术管理者而言&#xff0c;在引入大模型能力后&#x…...