V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
SuT2i
V2EX  ›  Python

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

  •  
  •   SuT2i · 2016-06-03 07:01:56 +08:00 · 8931 次点击
    这是一个创建于 2883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小白第一次上手 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()
    
    42 条回复    2017-12-17 22:29:48 +08:00
    9hills
        1
    9hills  
       2016-06-03 07:03:16 +08:00
    def fwd(sleep_time)

    if distance > 20:
    fwd()

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

    如果楼主看不懂,去学英语!
    能看懂,去学做人。
    SuT2i
        6
    SuT2i  
    OP
       2016-06-03 07:52:48 +08:00
    @9hills Thx :)
    SuT2i
        7
    SuT2i  
    OP
       2016-06-03 07:54:44 +08:00
    @Perry 嗯。能看懂部分。。传过参数,出现了其他的问题,以为理解错误。。
    SuT2i
        8
    SuT2i  
    OP
       2016-06-03 07:59:13 +08:00
    @loading ┻━┻什么时候 v 站的戾气这么重了┻━┻
    ks3825
        9
    ks3825  
       2016-06-03 08:00:29 +08:00 via Android
    @loading 人家小白第一次上手,怎么就学做人了,做人有什么问题么
    SuT2i
        10
    SuT2i  
    OP
       2016-06-03 08:00:31 +08:00   ❤️ 1
    @xspoco 头像治好了我的脖子。。。
    ProfFan
        11
    ProfFan  
       2016-06-03 08:39:01 +08:00
    第一个明显是端口不对,或者 GPIO 模式不对。 LZ 可以先去官方 wiki 看看硬件,还有 doc 。小问题不要伸手。
    messyidea
        12
    messyidea  
       2016-06-03 08:53:26 +08:00 via Android
    看标题我还以为小车遇到蛇了。。
    ChinoMasker
        13
    ChinoMasker  
       2016-06-03 09:04:57 +08:00
    @messyidea 哈哈哈哈哈哈哈哈哈
    coddmajes
        14
    coddmajes  
       2016-06-03 09:05:42 +08:00
    @xspoco
    @SuT2i 治好脖子+1 我都听到了嘎巴一声
    SuT2i
        15
    SuT2i  
    OP
       2016-06-03 09:15:57 +08:00
    @ProfFan en 。我回去下再查下 GPIO 口, board 模式应该没错。
    busfool
        16
    busfool  
       2016-06-03 10:04:25 +08:00
    我去我们组也有人研究这个
    Patrick95
        17
    Patrick95  
       2016-06-03 10:51:17 +08:00
    智障小车萌到我了
    nobodybutme
        18
    nobodybutme  
       2016-06-03 11:49:53 +08:00
    while True 里的 fwd (), stop()要带参数, turnaround 函数中 rev() 也要带参数。
    subdued
        19
    subdued  
       2016-06-03 11:55:07 +08:00
    别人家的小白和我是小白,别人家的能做小车,我还在研究元组到底怎么回事
    julyclyde
        20
    julyclyde  
       2016-06-03 12:01:46 +08:00
    RuntimeWarning 为什么叫编译错误?
    morning
        21
    morning  
       2016-06-03 12:14:09 +08:00
    你这 智障小车 距离大于 20 的时候可以往前走多久?
    看起来数填错了就真变 智障小车 的样子~ (原谅我只是想用一下 智障小车)
    SuT2i
        22
    SuT2i  
    OP
       2016-06-03 12:25:02 +08:00 via Android
    @julyclyde 不知道找啥词好😂
    SuT2i
        23
    SuT2i  
    OP
       2016-06-03 12:26:31 +08:00 via Android
    @morning good morning~里面怎么填都…达不到效果。应该是代码的问题…
    morning
        24
    morning  
       2016-06-03 12:57:02 +08:00
    @SuT2i 嗯,首先确定接线是按 BOARD 方式 , 死循环之前 是不是应该先 init() 一下
    windfarer
        25
    windfarer  
       2016-06-03 12:59:24 +08:00 via Android
    智障小车。。嗯
    mdzz
        26
    mdzz  
       2016-06-03 13:05:27 +08:00
    给 sleep_time 参数加上默认值
    Fedor
        27
    Fedor  
       2016-06-03 13:09:22 +08:00
    @loading 后面一句是什么鬼
    loading
        28
    loading  
       2016-06-03 13:31:22 +08:00 via Android
    @SuT2i
    @Fedor

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

    可能我没表达好…
    HypoChen
        30
    HypoChen  
       2016-06-03 13:36:19 +08:00
    所以说 python 是最大的障喽 (手动斜眼
    ihciah
        31
    ihciah  
       2016-06-04 02:36:43 +08:00 via iPhone
    这标题好奇怪…………
    NullMan
        32
    NullMan  
       2016-06-04 09:57:48 +08:00
    @SuT2i 是你戾气重! 不思考! 浮躁!
    NullMan
        33
    NullMan  
       2016-06-04 09:58:30 +08:00
    @ks3825 小白就有理了? 小白就可以浮躁了! 小白就可以不动脑随便乱问呢?
    NullMan
        34
    NullMan  
       2016-06-04 10:00:25 +08:00
    @loading 不是你的错. 用不着妥协. 麻痹这么简单的错误提示都不好好看, 都来 V2EX 乱问, 麻痹标题都不取好.
    NovemberEleven
        35
    NovemberEleven  
       2016-06-04 11:40:04 +08:00
    我第一眼也看成智障了
    coldcoder
        36
    coldcoder  
       2016-06-04 14:28:52 +08:00
    你都知道是编译错误了…………哎
    SuT2i
        37
    SuT2i  
    OP
       2016-06-04 19:51:05 +08:00 via Android
    @NullMan 谢谢你的建议~发帖是来这里问下前辈们。也没有恶意…之前熬夜太多了,有点反应不过来,第一次技术提问帖…下次会注意的!
    irgil
        38
    irgil  
       2016-06-05 13:02:59 +08:00
    这是编译错误吗。。。。你看错误提示说得这么清楚。。。
    pierre1994
        39
    pierre1994  
       2016-06-06 11:26:03 +08:00
    这错误确实够低级的 ==
    SuT2i
        40
    SuT2i  
    OP
       2016-06-06 15:48:36 +08:00 via Android
    @pierre1994 跪…别吐槽我了ಥ_ಥ
    ResponYan
        41
    ResponYan  
       2017-12-17 22:29:10 +08:00
    楼主问题解决了吗?
    ResponYan
        42
    ResponYan  
       2017-12-17 22:29:48 +08:00
    可不可以请教楼主几个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3760 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:25 · PVG 12:25 · LAX 21:25 · JFK 00:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.