咸鱼ZTMR实例—按键用法

咸鱼ZTMR实例—按键用法

在pyboard上,有一个用户按键。MicroPython已经预先定义好了按键的类,按键可以这样使用:
定义按键

sw = pyb.Switch() 

读取按键状态

sw() 

定义按键回调函数

sw.callback(lambda:pyb.LED(1).toggle()) 

禁用按键回调函数

sw.callback(None) 

更复杂的使用回调函数(按键后翻转LED3)点击测试按键观看效果

import pyb

sw = pyb.Switch() 
pyb.LED(3).on()

def f():
 pyb.LED(4).toggle()

sw.callback(f)

当然还可以直接当作GPIO使用:

import pyb from Pin

sw=Pin("X17", Pin.IN, Pin.PULL_UP)
sw()

板载中断按键可以理解成外接按键,用法如下
使用方法
调用外中断模块

from pyb import ExtInt

定义中断

from pyb import Pin, ExtInt

pyb.ExtInt(pin, mode, pull, callback)    #定义中断 
'''
pin 
	中断使用的GPIO,可以是pin对象或者已经定义GPIO的名称  
mode 
	ExtInt.IRQ_RISING                上升沿 
	ExtInt.IRQ_FALLING               下降沿 
	ExtInt.IRQ_RISING_FALLING        上升下降沿 
pull 
	pyb.Pin.PULL_NONE                无 
	pyb.Pin.PULL_UP                  上拉电阻 
	pyb.Pin.PULL_DOWN                下拉电阻
callback
	回调函数 
'''

上升沿, 下降沿:上升沿等于是接通的瞬间给个瞬发信号,相当与通电信号。下降沿等于是断开的瞬间给个瞬发信号,相当与断电信号。
在这里插入图片描述
上升沿脉冲相当于你按开关,开关一接通的那一瞬间动作,之后就再也没有输入信号;下降沿脉冲则是一按了开关一松手,开关断开的那一瞬间动作,其他时间都没输入信号。

上下拉电阻:上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。
上拉是对器件输入电流,下拉是输出电流;强弱只是上拉电阻的阻值不同,没有什么严格区分;对于非集电极(或漏极)开路输出型电路(如普通门电路)提供电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。

callback = lambda e: print("0")          #定义按键回调
函数 说明
extint.disable() 禁止中断
extint.enable() 允许中断
extint.line() 返回中断映射的行号
extint.swint() 软件触发中断
ExtInt.regs() 中断寄存器值

案例1 按钮在串口工具输出定义字符

# main.py -- put your code here!


from pyb import Pin    #引入引脚
from pyb import ExtInt #引入中断

callback = lambda e: print("xianyu")   #定义按键回调触发输出"xianyu"


sw2 = ExtInt(Pin('X18'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback) #点击中断按键返回xianyu

在这里插入图片描述
例程2 按钮控制LED

# main.py -- put your code here!


from pyb import Pin    #引入引脚
from pyb import ExtInt,LED #引入中断

#控制LED状态  toggle()翻转LED,状态是开,变为关;原来是关,变为开。
callback = lambda e: LED(2).toggle()    


#点击按钮返回
sw2  = ExtInt(Pin('X18'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback) 
发布了166 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/105436407
今日推荐