用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。