Advertisement
matt1987

Untitled

Nov 27th, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. import RPi.GPIO as GPIO
  2. from time import sleep
  3. from time import time
  4. import os
  5.  
  6. GPIO.setmode(GPIO.BCM)
  7.  
  8. GPIO.setup(9,GPIO.OUT)
  9. GPIO.setup(10,GPIO.OUT)
  10. GPIO.setup(11,GPIO.OUT)
  11.  
  12. Motor1 = GPIO.PWM(11, 50)
  13. Motor1.start(0)
  14.  
  15. Echo = 17
  16. Steer = 4
  17.  
  18. def forward(speed):
  19.   GPIO.output(9,GPIO.HIGH)
  20.   GPIO.output(10,GPIO.LOW)
  21.   Motor1.ChangeDutyCycle(speed)
  22.  
  23.  
  24. def backward(speed):
  25.   GPIO.output(9,GPIO.LOW)
  26.   GPIO.output(10,GPIO.HIGH)
  27.   Motor1.ChangeDutyCycle(speed)
  28.  
  29.  
  30. def left(speed):
  31.  
  32.   string = "echo 0=110 > /dev/servoblaster"
  33.   os.system(string)
  34.   sleep(1)
  35.   GPIO.output(9,GPIO.LOW)
  36.   GPIO.output(10,GPIO.HIGH)
  37.   Motor1.ChangeDutyCycle(speed)
  38.  
  39.  
  40. def right(speed):
  41.  
  42.   string = "echo 0=190 > /dev/servoblaster"
  43.   os.system(string)
  44.   sleep(1)
  45.   GPIO.output(9,GPIO.LOW)
  46.   GPIO.output(10,GPIO.HIGH)
  47.   Motor1.ChangeDutyCycle(speed)
  48.  
  49.  
  50. def stop():
  51.   Motor1.ChangeDutyCycle(0)
  52.  
  53.  
  54.  
  55. def get_range():
  56.   GPIO.setup(Echo,GPIO.OUT)
  57.   GPIO.output(Echo, 0)
  58.   sleep(0.1)
  59.   GPIO.output(Echo,1)
  60.   sleep(0.00001)
  61.   GPIO.output(Echo,0)
  62.  
  63.   GPIO.setup(Echo,GPIO.IN)
  64.   while GPIO.input(Echo) == 0:
  65.     pass
  66.   start = time()
  67.   while GPIO.input(Echo) == 1:
  68.     pass
  69.   stop = time()
  70.   elapsed = stop - start
  71.   distance = elapsed * 17000
  72.   return distance
  73.  
  74.  
  75. while True:
  76.   distance = get_range()
  77.   if distance < 30:
  78.     print "Distance %.1f " % distance
  79.     stop()
  80.     string = "echo 0=110 > /dev/servoblaster"
  81.     os.system(string)
  82.     sleep(1)
  83.     disleft = get_range()
  84.     print "Left %.1f " % disleft
  85.  
  86.     string = "echo 0=190 > /dev/servoblaster"
  87.     os.system(string)
  88.     sleep(1)
  89.     disright = get_range()
  90.     print "Right %.1f " % disright
  91.  
  92.     if disleft < disright:
  93.       print "Turn right"
  94.       left(100)
  95.       sleep(2)
  96.     else:
  97.       print "Turn left"
  98.       right(100)
  99.       sleep(2)
  100.  
  101.     os.system("echo 0=150 > /dev/servoblaster")
  102.  
  103.   else:
  104.     forward(80)
  105.     print "Distance %.1f " % distance
  106.  
  107.   sleep(0.5)
  108.  
  109. GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement