PI PICO同时输出两个GPIO

用Python控制两个GPIO实现电位切换,做到无延时,如果用代码一条一条的执行会有18uS的延时比如:
Pin(14,1)
Pin(15,1)
这个时候GPIO14会先输出,GPIO15会延时18uS后再输出,会造成被控端误操作。


您好,可以使用多线程或者asyncio来实现同时控制两个GPIO的输出,避免串行执行造成的延迟。
使用多线程的例子:
python
import threading 

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM) 

GPIO.setup(14, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)

def set_gpio(gpio, value):
    GPIO.output(gpio, value)
    
t1 = threading.Thread(target=set_gpio, args=(14, 1))
t2 = threading.Thread(target=set_gpio, args=(15, 1))

t1.start()
t2.start()

t1.join()
t2.join()
使用asyncio的例子:
python
import asyncio
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(14, GPIO.OUT)
GPIO.setup(15, GPIO.OUT) 

async def set_gpio(gpio, value):
    GPIO.output(gpio, value)

loop = asyncio.get_event_loop()

coro1 = loop.create_task(set_gpio(14, 1))
coro2 = loop.create_task(set_gpio(15, 1))

loop.run_until_complete(asyncio.wait([coro1, coro2]))
loop.close() 
这两种方法可以避免串行执行造成的延迟,从而实现同时控制两个GPIO。