-
Notifications
You must be signed in to change notification settings - Fork 2
Pin API
Micropython 使用 machine.Pin 類別提供 General Purpose Input/Output (GPIO) 功能;
意即使用者可設定指定號碼的針腳,讀取/輸出電壓值 HIGH/LOW、設定
外部中斷(External Interrupt)功能。
mt7697 board 上 machine.Pin 類別可控制的針腳號碼為
2 ~ 17
有提供外部中斷功能的腳位為
2, 3, 6 (USR-BTN)
宣告 Pin 物件,需代入指定針腳號碼與輸出或輸入模式(Pin.IN or Pin.OUT)
Example:
匯入 Pin 類別並且宣告 p6 為 Pin 物件,指定 P6 針腳為輸入模式並不提供上上拉電阻。
from machine import Pin
p6 = Pin(6, Pin.IN, Pin.PULL_DISABLE)
# 讀取電壓 HIGH(1) / LOW(0) 值
print( p6.value() )
print( p6() )
宣告 p7 為 Pin 物件並設定為輸出模式,指定 P7 針腳為輸出模式
from machine import Pin
p7 = Pin(7, Pin.OUT)
# 電壓輸出 HIGH (1)
p7(1)
# 電壓輸出 LOW (1)
p7(0)
# 電壓輸出 HIGH/LOW 切換
p7.toggle()
重新設定輸出模式(OUTPUT)或是輸入模式(INPUT)、上下拉電阻。代入參數:
mode 代入類別常數 Pin.IN 設定為輸入模式(INPUT),Pin.OUT 設定
為輸出模式(OUTPUT)。預設為 Pin.IN。
pull 代入類別常數 Pin.PULL_DISABLE 關閉上下拉電阻,Pin.PULL_UP 設定
上拉電阻,Pin.PULL_DOWN 設定下拉電阻。預設為關閉 Pin.PULL_DISABLE。
上下拉電阻功能要在輸入模式(INPUT)下才會有作用。
讀取電壓值或設定輸出電壓 HIGH/LOW。代入參數:
在輸出模式(OUTPUT)下: v 代入整數值 0 或 布林值 False,設定輸出電壓為 LOW。
代入布林值 True 或整數值 1 或其他非 0 整數值,設定輸出電壓為 HIGH。
v 不代入任何值會讀取電壓值並回傳整數值 1 (HIGH) 或 0 (LOW)。
在輸出模式下,切換輸出電壓的 HIGH/LOW 。意即,當輸出為 HIGH 時呼叫 toggle()
後輸出電壓會變為 LOW,在輸出為 LOW 時呼叫 toggle() 後輸出會變為 HIGH 。
設定針腳的中斷功能。當該針腳的輸入電壓發生指定變化(RISING/FALLING)時,自動執行 指定的 handler function。代入參數:
RISING 指的是 "輸入電壓由 LOW 變為 HIGH",而 FALLING 指的是 "輸入電壓由 HIGH 變為 LOW"。
handler 代入一個 function,在電壓發生指定變化(RISING/FALLING) 時系統會去呼叫它。
trigger 指定觸發的電壓變化形式,由 HIGH 變為 LOW (Pin.IRQ_FALLING) 或是
由 LOW 變為 HIGH (Pin.IRQ_RISING)。
debounce 代入一個整數值,單位為 milli second (ms),表示用來消除機械彈跳的時間。
預設為 0
Example:
設定針腳 P6 當偵測到電壓由 LOW 變為 HIGH 的時候呼叫指定 function:
# 定義指定 function "f_cb(x)"
def f_cb(x):
print('hello ')
print(x)
p6 = Pin(6, Pin.IN)
p6.irq(f_cb, Pin.IRQ_RISING)
如果要 debounce time 設為 50 ms:
p6.irq(f_cb, Pin.IRQ_RISING, 50)
Pin.IN, Pin.OUT 使用在設定 Pin 的 mode 為輸入或輸出模式用。
Pin.IRQ_HIGH, Pin.IRQ_LOW 使用在設定 Pin 的輸出電壓為 HIGH 或是 LOW。
Pin.PULL_UP, Pin.PULL_DOWN, Pin.PULL_DISABLE 使用在設定 Pin 的 pull
為上拉電阻、下拉電阻或無上下拉電阻。
Pin.IRQ_RISING, Pin.IRQ_FALLING, Pin.IRQ_FALLING_AND_RISING 使用在設定
中斷功能的電壓變化觸發形式 trigger 為 LOW-to-HIGH、 HIGH-to-LOW 或是兩者都
會觸發。
設定 P6 (USR-BTN) 為 INPUT
from machine import Pin
p6 = Pin(6, Pin.IN)
讀取 P6 的電壓值
lv = p6.value()
lv = p6()
設定 P7 (USR-LED) 為 OUTPUT
p7 = Pin(7, Pin.OUT)
P7 輸出電壓為 HIGH,此時 USR-LED 為亮。
p7(1)
p7.value(1)
P7 輸出電壓為 LOW,此時 USR-LED 為暗。
p7(0)
p7.value(0)
設定使用 USR-BTN 切換 USR-LED 的亮暗,並且用 50 ms 來消除按鈕的機械彈跳:
def f_cb(x):
p7.toggle()
p6.irq(f_cb, Pin.IRQ_RISING, 50)

- Pin (machine module)
- I2C (machine module)
- PWM (machine module)
- WDT (machine module)
- RTC (machine module)
- Timer (machine module)
- ADC (machine module)
- SPI (machine module)
- UART (machine module)
- BLE (Peripheral)
- LinkIt Remote
- cmath (Builtin functions)
- gc (Builtin functions)
- math (Builtin functions)
- sys (Builtin functions)
- uarray (Builtin functions)
- ubinascii (Builtin functions)
- ucollections (Builtin functions)
- uerrno (Builtin functions)
- uhashlib (Builtin functions)
- uheapq (Builtin functions)
- uio (Builtin functions)
- ujson (Builtin functions)
- uos (Builtin functions)
- ure (Builtin functions)
- uselect (Builtin functions)
- usocket (Builtin functions)
- ussl (Builtin functions)
- ustruct (Builtin functions)
- utime (Builtin functions)
- uzlib (Builtin functions)
- []