第2个回答 2018-07-20
GV = 1
while True:
#传感器1
input_value3 = GPIO.input(31)
#传感器2
input_value4 = GPIO.input(29)
if input_value3 == False and input_value4 == True:
#电机反转
Backward()
GV = 0
if input_value4 == False and input_value3 == True:
#电机正转
Forward()
GV = 1
if input_value3 == True and input_value4 == True:
if GV == 0:
Backward()
if GV == 1:
Forward()
我先复述一下题主的问题:
两个传感器分别位于导轨的两端(用于检测导轨上的运动物体是否到达两端),当物体运动到A传感器时改变电机转向使物体向传感器B跑,同样当物体到达传感器B时,改变电机转向让物体向传感器A跑,以此循环,达到来回跑的目的?
代码解释:
while里面的前两个if好理解,分别是物体位于传感器A处和传感器B处时让电机改变转动方向,需要理解一下的是下面的if ---> if input_value3 == True and input_value4 == True:
这个if是当物体位于两个传感器之间的时候该向那个方向跑的控制逻辑,因为当物体位于中间的时候,物体有两种可能的运动方向(向传感器A跑或者向传感器B跑),所以我用了一个 GV这个变量,GV表示的意思是物体前一刻的运动方向,当物体位于中间的时候只需要判断一下物体前一时刻的运动方向就只到物体应该继续向那边跑了, 然后循环以上逻辑,物体就可以来回跑了。
代码使用python写的,应该还是比较清晰的(前两天用树莓派刚好做了这个功能,所有就发上来了)!