-
Notifications
You must be signed in to change notification settings - Fork 0
/
ultrasonic_distance.py
51 lines (40 loc) · 1.08 KB
/
ultrasonic_distance.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# A program that measues the distance between the front of a HC_SRQ4 ultrasonic sensor to a target within range
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
# Pins
echo = 40
trig = 38
GPIO.setup(trig, GPIO.OUT)
GPIO.setup(echo, GPIO.IN)
# Sends a trigger signal to the sensor requesting it to do it's magic
def sendTrigger():
GPIO.output(trig, 0)
time.sleep(2E-6)
GPIO.output(trig, 1)
time.sleep(10E-6)
GPIO.output(trig, 0)
# Returns the time delta of a round trip time for the sensor's signal
def delta() -> float:
while GPIO.input(echo) == 0:
pass
start = time.time()
while GPIO.input(echo) == 1:
pass
end = time.time()
return (end - start)
# Returns the distance between the sensor and the object in centimeters
def distance(delta: float) ->float:
# Halfing the time taken
delta *= 0.5
speed = 330 # 330m/s
# Converting the distance to centimeters
return (delta * speed) * 100
try:
while True:
sendTrigger()
print(distance(delta()), "cm")
time.sleep(.5)
except KeyboardInterrupt:
GPIO.cleanup()
print("\nExiting...\n")