鹹魚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)