GPIO之边缘检测

GPIO之边缘检测

实验目的:应用一种新的电压检测方式,更精准更灵活的检测到传感器电压变化,从而获得传感器被触发或者被释放的状态。
边缘检测也是一种传感器状态检测的方式,不同的是通过内置的函数进行;比如wait_for_edge()或者event_detected(),它们和平常我们用的while循环有相同之处,都是用来检测传感器状态,不同的地方在与前者更精准,不会由于while内的time.sleep时无法获得CPU而导致状态获取失败,具体可见如下实验。
#接线效果如图
触摸开关传感器(默认低电压,触摸触发高电压)
#传统while获取方式(以触摸开关传感器为例):
while方式检测
while方式检测
#传统while检测会存在丢失现象,如果time.sleep(2)的时候主线程阻塞从而导致进程挂起,此时正好触发传感器,由于没有其他线程所以导致进程检测不到,出现结果丢失现象。
#wait_for_edge()函数,会在检测到指定的升高或者降低或者两者的状态时阻塞进程,直到检测到状态。

具体可见文章:http://www.shumeijiang.com/2020/03/15/gpio之wait_for_edge函数/
#event_detected()函数,不会阻塞进程,在while循环中检测到状态变化,不会影响主线程继续执行,而是通过其他线程同步检测到的状态,同时还能触发回调多个函数,同步触发其他任务。

具体可见文章:http://www.shumeijiang.com/2020/03/15/gpio之event_detected系列函数/

jiujiang

评论已关闭。