查看: 3040|回复: 4

[求助] 这段代码是什么意思,如何操作

[复制链接]

该用户从未签到

发表于 2014-12-9 17:28:25 | 显示全部楼层 |阅读模式
分享到:
  1. #!usr/bin/python
  2. import RPi.GPIO as GPIO
  3. import time
  4. import sys
  5. import getopt
  6. import string
  7. from distance.py import measure_average
  8. GPIO.setmode(GPIO.BCM)

  9. L1 = 5
  10. R1 = 6
  11. L2 = 23
  12. R2 = 24
  13. distance = 0

  14. GPIO.setup(L1,GPIO.OUT)
  15. GPIO.setup(R1,GPIO.OUT)
  16. GPIO.setup(L2,GPIO.OUT)
  17. GPIO.setup(R2,GPIO.OUT)

  18. def forward():
  19.     GPIO.output(L1,GPIO.LOW)
  20.     GPIO.output(R1,GPIO.HIGH)
  21.     GPIO.output(L2,GPIO.HIGH)
  22.     GPIO.output(R2,GPIO.LOW)
  23.    
  24. def backward():
  25.     GPIO.output(L1,GPIO.HIGH)
  26.     GPIO.output(R1,GPIO.LOW)
  27.     GPIO.output(L2,GPIO.LOW)
  28.     GPIO.output(R2,GPIO.HIGH)

  29. def turn_right():
  30.     GPIO.output(L1,GPIO.LOW)
  31.     GPIO.output(R1,GPIO.LOW)
  32.     GPIO.output(L2,GPIO.HIGH)
  33.     GPIO.output(R2,GPIO.LOW)
  34.    
  35. def turn_left():
  36.     GPIO.output(L1,GPIO.LOW)
  37.     GPIO.output(R1,GPIO.HIGH)
  38.     GPIO.output(L2,GPIO.LOW)
  39.     GPIO.output(R2,GPIO.LOW)
  40.    
  41. def stop():
  42.     GPIO.output(L1,GPIO.LOW)
  43.     GPIO.output(R1,GPIO.LOW)
  44.     GPIO.output(L2,GPIO.LOW)
  45.     GPIO.output(R2,GPIO.LOW)

  46. def main(argv):
  47.     try:
  48.         opts, args = getopt.getopt(argv[1:], "a:t:")
  49.     except getopt.GetoptError, err:
  50.         print str(err)
  51.         sys.exit(2)
  52.     for op,value in opts:
  53.         if op == "-a":
  54.             if value == "f":
  55.                 print "Foward..."
  56.                 stop()
  57.                 forward()
  58.             if value == "b":
  59.                 print "Backward..."
  60.                 stop()
  61.                 backward()
  62.             if value == "l":
  63.                 print "Turn left..."
  64.                 stop()
  65.                 turn_left()
  66.             if value == "r":
  67.                 print "Turn right..."
  68.                 stop()
  69.                 turn_right()
  70.             if value == "s":
  71.                 print "Stop..."
  72.                 stop()
  73.         if op == "-t":
  74.             time.sleep(string.atoi(value))   
  75.             
  76. def autoMove():
  77.                 while True:
  78.                                 distance = measure_average()
  79.                                 if distance > 10:
  80.                                                 print "Distance : %.1fcm" % distance
  81.                                     time.sleep(1)
  82.                                                 forward()
  83.                                 stop()
  84.                                 turn_left()

  85. if __name__ == '__main__':
  86.     print "Hi,I'm coprobot, ready to go"
  87.     autoMove()
  88. #    main(sys.argv)
  89. #    forward()
  90. #    time.sleep(2220)
  91. #    print "Turn right..."
  92. #    turn_right()
  93. #    time.sleep(200)
  94. #    print "Turn left..."
  95. #    turn_left()
  96. #    time.sleep(200)
  97. #    print "Forward..."
  98. #    backward()
  99. #    time.sleep(100)   
  100.     print "Byebye!"
  101.     stop()
  102.     GPIO.cleanup()
复制代码
中的一段代码
  1. ef main(argv):
  2.     try:
  3.         opts, args = getopt.getopt(argv[1:], "a:t:")
  4.     except getopt.GetoptError, err:
  5.         print str(err)
  6.         sys.exit(2)
  7.     for op,value in opts:
  8.         if op == "-a":
  9.             if value == "f":
  10.                 print "Foward..."
  11.                 stop()
  12.                 forward()
  13.             if value == "b":
  14.                 print "Backward..."
  15.                 stop()
  16.                 backward()
  17.             if value == "l":
  18.                 print "Turn left..."
  19.                 stop()
  20.                 turn_left()
  21.             if value == "r":
  22.                 print "Turn right..."
  23.                 stop()
  24.                 turn_right()
  25.             if value == "s":
  26.                 print "Stop..."
  27.                 stop()
  28.         if op == "-t":
  29.             time.sleep(string.atoi(value))   
  30.             
  31. def autoMove():
  32.                 while True:
  33.                                 distance = measure_average()
  34.                                 if distance > 10:
  35.                                                 print "Distance : %.1fcm" % distance
  36.                                     time.sleep(1)
  37.                                                 forward()
  38.                                 stop()
  39.                                 turn_left()

  40. if __name__ == '__main__':
  41.     print "Hi,I'm coprobot, ready to go"
  42.     autoMove()
  43. #    main(sys.argv)
  44. #    forward()
  45. #    time.sleep(2220)
  46. #    print "Turn right..."
  47. #    turn_right()
  48. #    time.sleep(200)
  49. #    print "Turn left..."
  50. #    turn_left()
  51. #    time.sleep(200)
  52. #    print "Forward..."
  53. #    backward()
  54. #    time.sleep(100)   
  55.     print "Byebye!"
  56.     stop()
  57.     GPIO.cleanup()
复制代码
是调用前面先后左转吗,这个py文件在树莓派里面打开以后,还要怎么操作才能让车走动,要打开网页吗?
回复

使用道具 举报

  • TA的每日心情
    开心
    2015-7-7 05:53
  • 签到天数: 550 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-12-10 03:32:35 | 显示全部楼层
    直接运行就可以了。不过autoMove()里逻辑上好像有问题。先检查一下python的缩进。distance 的值好像第一次赋值后就没有更新。if distance > 10 在第一次满足条件的话就会一直走下去
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-12-10 09:35:17 | 显示全部楼层
    kittka 发表于 2014-12-10 03:32
    直接运行就可以了。不过autoMove()里逻辑上好像有问题。先检查一下python的缩进。distance 的值好像第一 ...

    distance.py 提示没有这个文件,要新建一个吗,里面要填什么?还有就是直接运行后如何控制让车子前进 右转和移动呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-7-7 05:53
  • 签到天数: 550 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-12-11 04:26:17 | 显示全部楼层
    洋葱头_ 发表于 2014-12-10 09:35
    distance.py 提示没有这个文件,要新建一个吗,里面要填什么?还有就是直接运行后如何控制让车子前进 右 ...

    from distance.py import measure_average
    不知道你找的代码从哪来得。到底有没有distance.py.如果有检查一下import路劲,没有的话你找代码不全。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2014-12-11 08:58:04 | 显示全部楼层
    kittka 发表于 2014-12-11 04:26
    from distance.py import measure_average
    不知道你找的代码从哪来得。到底有没有distance.py.如果有检查 ...

    是论坛里一个人分享的,貌似没有distance.py
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 15:36 , Processed in 0.156075 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.