Published on

读取GPIO输入

import Jetson.GPIO as GPIO
import time

pins = [31, 32, 33]

GPIO.setmode(GPIO.BOARD)

for pin in pins:
    GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

print("开始检测引脚 31, 32, 33 的电平状态...")
print("提示:用杜邦线将引脚连接到 3.3V 或 GND 测试")
print("=" * 50)

# 记录上一次的状态
last_state = {31: None, 32: None, 33: None}

try:
    while True:
        # 读取当前状态
        val31 = GPIO.input(31)
        val32 = GPIO.input(32)
        val33 = GPIO.input(33)
        
        # 检查是否有变化
        changed = False
        if val31 != last_state[31]:
            last_state[31] = val31
            changed = True
        if val32 != last_state[32]:
            last_state[32] = val32
            changed = True
        if val33 != last_state[33]:
            last_state[33] = val33
            changed = True
        
        # 只在变化时打印,或持续刷新(二选一)
        # 方式1:持续刷新(同一行)
        print(f"\rPin31: {val31} | Pin32: {val32} | Pin33: {val33}", end="", flush=True)
        
        # 方式2:只在变化时打印(取消注释下面,注释上面)
        # if changed:
        #     print(f"\n{time.strftime('%H:%M:%S')} - Pin31: {val31} | Pin32: {val32} | Pin33: {val33}")
        
        time.sleep(0.1)
        
except KeyboardInterrupt:
    print("\n\n检测结束")
    GPIO.cleanup()
    print("GPIO 资源已释放")

THE END