Advertisement
silver2row

grove_Range_Sensor

Dec 28th, 2024
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.28 KB | None | 0 0
  1. # Here lies a class for a "Ranger" sensor from Seeed Studio/Grove
  2. # It is from https://github.com/Seeed-Studio/grove.py/blob/master/grove/grove_ultrasonic_ranger.py
  3.  
  4. class GroveUltrasonicRanger(object):
  5.     def __init__(self, pin):
  6.         self.dio = GPIO(pin)
  7.  
  8.     def _get_distance(self):
  9.         self.dio.dir(GPIO.OUT)
  10.         self.dio.write(0)
  11.         usleep(2)
  12.         self.dio.write(1)
  13.         usleep(10)
  14.         self.dio.write(0)
  15.  
  16.         self.dio.dir(GPIO.IN)
  17.  
  18.         t0 = time.time()
  19.         count = 0
  20.         while count < _TIMEOUT1:
  21.             if self.dio.read():
  22.                 break
  23.             count += 1
  24.         if count >= _TIMEOUT1:
  25.             return None
  26.  
  27.         t1 = time.time()
  28.         count = 0
  29.         while count < _TIMEOUT2:
  30.             if not self.dio.read():
  31.                 break
  32.             count += 1
  33.         if count >= _TIMEOUT2:
  34.             return None
  35.  
  36.         t2 = time.time()
  37.  
  38.         dt = int((t1 - t0) * 1000000)
  39.         if dt > 530:
  40.             return None
  41.  
  42.         distance = ((t2 - t1) * 1000000 / 29 / 2)    # cm
  43.  
  44.         return distance
  45.  
  46.     def get_distance(self):
  47.         while True:
  48.             dist = self._get_distance()
  49.             if dist:
  50.                 return dist
  51.  
  52.  
  53. Grove = GroveUltrasonicRanger
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement