求助树莓派避障小车,遇到 python 了。。

2016-06-03 07:01:56 +08:00
 SuT2i

小白第一次上手 python ,用树莓派,红外和超声波传感器做智障小车。 编译错误:

RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(trip,GPIO.OUT)
Traceback (most recent call last):
 File "xiaochetest.py", line 82, in <module>
    fwd()
TypeError: fwd() takes exactly 1 argument (0 given)

下面是小车的代码:

import  RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)

m1_fwd = 12
m1_rev = 11
m2_fwd = 13
m2_rev = 15
red_left = 07
red_right = 16
trip = 38
echo = 37
def init():
    GPIO.setup(m1_fwd,GPIO.OUT)
    GPIO.setup(m1_rev,GPIO.OUT)
    GPIO.setup(m2_fwd,GPIO.OUT)
    GPIO.setup(m2_rev,GPIO.OUT)
def stop(sleep_time):
    GPIO.output(m1_fwd,False)
    GPIO.output(m1_rev,False)
    GPIO.output(m2_fwd,False)
    GPIO.output(m2_rev,False)
    time.sleep(sleep_time)
    GPIO.cleanup()
def fwd(sleep_time):
    GPIO.output(m1_fwd,GPIO.HIGH)
    GPIO.output(m1_rev,GPIO.LOW)
    GPIO.output(m2_fwd,GPIO.HIGH)
    GPIO.output(m2_rev,GPIO.LOW)
    time.sleep(sleep_time)
    GPIO.cleanup()
def rev(sleep_time):
    GPIO.output(m1_fwd,GPIO.LOW)
    GPIO.output(m1_rev,GPIO.HIGH)
    GPIO.output(m2_fwd,GPIO.LOW)
    GPIO.output(m2_rev,GPIO.HIGH)
    time.sleep(sleep_time)
    GPIO.cleanup()
def right(sleep_time):
    GPIO.output(m1_fwd,GPIO.HIGH)
    GPIO.output(m1_rev,GPIO.LOW)
    GPIO.output(m2_fwd,False)
    GPIO.output(m2_rev,False)
    time.sleep(sleep_time)
    GPIO.cleanup()
def left(sleep_time):
    GPIO.output(m1_fwd,False)
    GPIO.output(m1_rev,False)
    GPIO.output(m2_fwd,GPIO.HIGH)
    GPIO.output(m2_rev,GPIO.LOW)
    time.sleep(sleep_time)
    GPIO.cleanup()
def get_distance():
    GPIO.setup(trip,GPIO.OUT)
    GPIO.setup(echo,GPIO.IN)
    GPIO.output(trip,GPIO.HIGH)
    time.sleep(0.000015)
    GPIO.output(trip,GPIO.LOW)
    while not GPIO.input(echo):
        pass
    t1 = time.time()
    while GPIO.input(echo):
            pass
    t2 = time.time()
    return (t2-t1)*34300/2
def turnaround():
    GPIO.setup(red_left,GPIO.IN)
    GPIO.setup(red_right,GPIO.IN)
    while GPIO.input(red_left) and GPIO.input(red_right)==0:
        rev()
        if GPIO.input(red_left)==1:
            left(1)
        else:
            right(1)
    GPIO.cleanup()
        

while True:
    distance = get_distance()
    time.sleep(0.5)
    if distance > 20:
        fwd()
    elif distance == 20:
        stop()

    else:
        stop()
        turnaround()
9116 次点击
所在节点    Python
42 条回复
morning
2016-06-03 12:14:09 +08:00
你这 智障小车 距离大于 20 的时候可以往前走多久?
看起来数填错了就真变 智障小车 的样子~ (原谅我只是想用一下 智障小车)
SuT2i
2016-06-03 12:25:02 +08:00
@julyclyde 不知道找啥词好😂
SuT2i
2016-06-03 12:26:31 +08:00
@morning good morning~里面怎么填都…达不到效果。应该是代码的问题…
morning
2016-06-03 12:57:02 +08:00
@SuT2i 嗯,首先确定接线是按 BOARD 方式 , 死循环之前 是不是应该先 init() 一下
windfarer
2016-06-03 12:59:24 +08:00
智障小车。。嗯
mdzz
2016-06-03 13:05:27 +08:00
给 sleep_time 参数加上默认值
Fedor
2016-06-03 13:09:22 +08:00
@loading 后面一句是什么鬼
loading
2016-06-03 13:31:22 +08:00
@SuT2i
@Fedor

请不要跳过判断部分进行理解!
loading
2016-06-03 13:33:29 +08:00
@ks3825 如果错误提示都看懂了,还要问,我也就只能这样回答了…

可能我没表达好…
HypoChen
2016-06-03 13:36:19 +08:00
所以说 python 是最大的障喽 (手动斜眼
ihciah
2016-06-04 02:36:43 +08:00
这标题好奇怪…………
NullMan
2016-06-04 09:57:48 +08:00
@SuT2i 是你戾气重! 不思考! 浮躁!
NullMan
2016-06-04 09:58:30 +08:00
@ks3825 小白就有理了? 小白就可以浮躁了! 小白就可以不动脑随便乱问呢?
NullMan
2016-06-04 10:00:25 +08:00
@loading 不是你的错. 用不着妥协. 麻痹这么简单的错误提示都不好好看, 都来 V2EX 乱问, 麻痹标题都不取好.
NovemberEleven
2016-06-04 11:40:04 +08:00
我第一眼也看成智障了
coldcoder
2016-06-04 14:28:52 +08:00
你都知道是编译错误了…………哎
SuT2i
2016-06-04 19:51:05 +08:00
@NullMan 谢谢你的建议~发帖是来这里问下前辈们。也没有恶意…之前熬夜太多了,有点反应不过来,第一次技术提问帖…下次会注意的!
irgil
2016-06-05 13:02:59 +08:00
这是编译错误吗。。。。你看错误提示说得这么清楚。。。
pierre1994
2016-06-06 11:26:03 +08:00
这错误确实够低级的 ==
SuT2i
2016-06-06 15:48:36 +08:00
@pierre1994 跪…别吐槽我了ಥ_ಥ

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX