需要帮助将两个代码合并在一起

时间:2019-06-20 09:17:58

标签: python

我正在尝试制造一种具有线传感器和超声波传感器的自动驾驶汽车。如果激活了左侧和右侧的线传感器,则汽车必须向前行驶

0

上面的代码工作正常。我已经完成了将线条传感器和超声波传感器集成在一起的代码。完成的代码如下:

if pin16.read_digital == 1 & pin 15.read_digital == 1
   pin2.write_anlog(180)

这很好用,但是当我尝试将左右放进去时,它不起作用。我该如何解决 ?左右的代码在

from microbit import *
from neopixel import NeoPixel
import time
import machine

def setup():
    display.off()
    np = NeoPixel(pin0, 5)
    np.clear()

    pin4.set_pull(pin4.PULL_UP)
    pin1.set_analog_period(20)
    pin2.set_analog_period(20)

    pin15.set_pull(pin15.PULL_UP)
    pin16.set_pull(pin16.PULL_UP)

def distance():
    pin3.write_digital(0)
    time.sleep_us(2)

    pin3.write_digital(1)

    time.sleep_us(10)
    pin3.write_digital(0)

    output = machine.time_pulse_us(pin4, 1)

    return output * 0.034 / 2

def forward():
    pin2.write_analog(1)

def backward():
    pin2.write_analog(180)

def stop():
    pin2.write_analog(90)

def line():
    if pin15.read_digital() == 1 & pin16.read_digital() == 1:
        return True
else:
    return False

setup()
# pin1.write_analog(90)
sleep(200)
# pin1.write_analog(70) right
# pin1.write_analog(150) right


while True:
    if (distance() > 5) & line():
        forward()
    else:
        stop()

2 个答案:

答案 0 :(得分:0)

您应该使用and而不是&&按位和,绑定比==强,而and逻辑和,绑定比{{1 }}。

==

与您的>>> a, b = 0, 1 >>> a == 0 and b == 1 True >>> a == 0 & b == 1 False 语句相对应的后一个示例被解析为if,即a == (0 & 1) == 1(通过Python比较链,这不是 0 == 0 == 1,其计算结果为(0 == 0) == 1,但True)。

对于(0 == 0) and (0 == 1),这不是问题,但是在所有其他情况下,它的行为都会异常。

a == 1 & b == 1

答案 1 :(得分:0)

我既不是Arduino的专家,也不是Neopixel库的专家。但是,难道您在第三段代码中不遗漏了向前的情况吗?另外,最好使用and而不是&,因为&是按位运算符,并且在运算符优先级规则中的排名高于==,如tobias_k所说(您可以使用括号)如果需要,可以解决此问题,但是为什么要选择按位运算符呢?)。顺便说一句,不需要==运算符。如果整数为0,则在if语句中自动将其评估为False,否则将为True:

while True:
    read_left, read_right = pin15.read_digital(), pin16.read_digital()
    if read_left and read_right:
        # your code to go forward
    elif read_left and not read_right:
        # your code to turn left
    elif not read_left and read_right:
        # your code to turn right
    else:
        # your code when no line is detected, if you want to handle this case