]> rtime.felk.cvut.cz Git - hubacji1/autiminipoci.git/blob - go-and-stop.py
Add basic stop-if-near module
[hubacji1/autiminipoci.git] / go-and-stop.py
1 # -*- coding: utf-8 -*-
2 """Run the car and stop if distance to obstacle is < 40cm."""
3 from _thread import start_new_thread
4 from machine import Pin, PWM
5 from utime import sleep_us, ticks_us
6
7 TRIG = Pin(5, Pin.OUT)
8 ECHO = Pin(4, Pin.IN)
9 SPEED = PWM(Pin(12), freq=1000)
10
11 dist = 4
12
13 def get_dist():
14     """Read data from ultrasonic sensor."""
15     global dist
16     nc = ticks_us()
17     while True:
18         TRIG.off()
19         sleep_us(2)
20         TRIG.on()
21         sleep_us(10)
22         TRIG.off()
23         while ECHO.value() == 0:
24             pass
25         t1 = ticks_us()
26         while ECHO.value() == 1:
27             pass
28         t2 = ticks_us()
29         dist = (t2 - t1) / 58.0
30         nc += 20000
31         sleep_us(nc - ticks_us())
32     return
33
34 def set_speed():
35     """Set PWM to control car speed."""
36     nc = ticks_us()
37     while True:
38         if dist < 20:
39             SPEED.duty(1023)
40         else:
41             SPEED.duty(0)
42         nc += 200000
43         sleep_us(nc - ticks_us())
44     return
45
46 if __name__ == "__main__":
47     start_new_thread(get_dist, ())
48     start_new_thread(set_speed, ())
49     while True:
50         pass