求助树莓派避障小车,遇到 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()
8942 次点击
所在节点    Python
42 条回复
9hills
2016-06-03 07:03:16 +08:00
def fwd(sleep_time)

if distance > 20:
fwd()

调用 fwd 的时候要传参数啊,错误提示说的比较清楚了。
xspoco
2016-06-03 07:08:53 +08:00
树莓派竟然不是用来吃灰,差评!
qsun
2016-06-03 07:11:04 +08:00
智障小车
Perry
2016-06-03 07:19:13 +08:00
建议把英语学学好,这样错误提示就能看懂了
loading
2016-06-03 07:36:18 +08:00
TypeError: fwd() takes exactly 1 argument (0 given)

如果楼主看不懂,去学英语!
能看懂,去学做人。
SuT2i
2016-06-03 07:52:48 +08:00
@9hills Thx :)
SuT2i
2016-06-03 07:54:44 +08:00
@Perry 嗯。能看懂部分。。传过参数,出现了其他的问题,以为理解错误。。
SuT2i
2016-06-03 07:59:13 +08:00
@loading ┻━┻什么时候 v 站的戾气这么重了┻━┻
ks3825
2016-06-03 08:00:29 +08:00
@loading 人家小白第一次上手,怎么就学做人了,做人有什么问题么
SuT2i
2016-06-03 08:00:31 +08:00
@xspoco 头像治好了我的脖子。。。
ProfFan
2016-06-03 08:39:01 +08:00
第一个明显是端口不对,或者 GPIO 模式不对。 LZ 可以先去官方 wiki 看看硬件,还有 doc 。小问题不要伸手。
messyidea
2016-06-03 08:53:26 +08:00
看标题我还以为小车遇到蛇了。。
ChinoMasker
2016-06-03 09:04:57 +08:00
@messyidea 哈哈哈哈哈哈哈哈哈
coddmajes
2016-06-03 09:05:42 +08:00
@xspoco
@SuT2i 治好脖子+1 我都听到了嘎巴一声
SuT2i
2016-06-03 09:15:57 +08:00
@ProfFan en 。我回去下再查下 GPIO 口, board 模式应该没错。
busfool
2016-06-03 10:04:25 +08:00
我去我们组也有人研究这个
Patrick95
2016-06-03 10:51:17 +08:00
智障小车萌到我了
nobodybutme
2016-06-03 11:49:53 +08:00
while True 里的 fwd (), stop()要带参数, turnaround 函数中 rev() 也要带参数。
subdued
2016-06-03 11:55:07 +08:00
别人家的小白和我是小白,别人家的能做小车,我还在研究元组到底怎么回事
julyclyde
2016-06-03 12:01:46 +08:00
RuntimeWarning 为什么叫编译错误?

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

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

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

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

© 2021 V2EX