def get_distance(): # print("Distance Measurement In Progress") if isinstance(GPIO, MockGPIO): time.sleep(2) return 15 GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) GPIO.output(TRIG, False) # print("Waiting For Sensor To Settle") time.sleep(1) GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) while GPIO.input(ECHO) == 0: pulse_start = time.time() while GPIO.input(ECHO) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round(distance, 2) print("Distance:", distance, "cm") return distance
def __init__(self, spi_major = 0, spi_minor = 5, spi_speed = 500000, irq_gpio = 36): self._mode = None self.__payloadlen = 0 self.spi = spidev.SPI() self.spi.open(spi_major, spi_minor) self.spi.msh = spi_speed self.irq_gpio = irq_gpio GPIO.setup(self.irq_gpio, GPIO.IN) self.data_event = Event() self.lock = threading.RLock()
def __init__(self, spi_major=0, spi_minor=5, spi_speed=500000, irq_gpio=36): self._mode = None self.__payloadlen = 0 self.spi = spidev.SPI() self.spi.open(spi_major, spi_minor) self.spi.msh = spi_speed self.irq_gpio = irq_gpio GPIO.setup(self.irq_gpio, GPIO.IN) self.data_event = Event() self.lock = threading.RLock()
def __init__(self, name, pins, min_angle=-5, max_angle=365, positive=1, vend=4500, vstart=20, skewness=.75, accel_steps=4000, skewnessbra=.9, bra_steps=500): def _accel_velocity(x): """ calculate the acceleration/deceleration velocity in the interval [0,1] """ return (.5-.5*cos(x*pi))*(vend-vstart)+vstart def _accel_skewing(x): """ skew the velocity cosine by a parabolic function """ return pow(x, skewness)/pow(accel_steps, skewness) def _bra_skewing(x): """ skew the velocity cosine by a parabolic function """ return pow(x, skewnessbra)/pow(bra_steps, skewnessbra) self.name = name self.PUL, self.DIR, self.ENBL = pins self._steps_per_rev = 0 self._enabled = True self._angle = 0 self._min_angle = min_angle self._max_angle = max_angle self._steps = 0 self._stop = True self._delay = 1./vend self._positive = positive self._brake_steps = accel_steps for p in pins: GPIO.setup(p, GPIO.OUT) GPIO.output(p, False) self._accel_curve = [ 1./_accel_velocity(_accel_skewing(x)) \ for x in xrange(accel_steps) ] self._bra_curve = [ 1./_accel_velocity(_bra_skewing(x)) \ for x in xrange(bra_steps) ]
import trio from gpio import GPIO GPIO.setmode(GPIO.BOARD) # 15 RED # 16 GREEN # 36 BLUE GPIO.setup(15, GPIO.OUT) GPIO.setup(16, GPIO.OUT) GPIO.setup(36, GPIO.OUT) p1 = GPIO.PWM(15, 500) # channel=12 frequency=50Hz p2 = GPIO.PWM(16, 500) # channel=12 frequency=50Hz p3 = GPIO.PWM(36, 500) # channel=12 frequency=50Hz async def breathe(r, g, b): p1.start(0) p2.start(0) p3.start(0) print("starting breathing ...") while True: for dc in range(0, 101, 2): p1.ChangeDutyCycle(dc * r) p2.ChangeDutyCycle(dc * g) p3.ChangeDutyCycle(dc * b) await trio.sleep(0.04) for dc in range(100, -1, -2):
def __init__(self): LoggableClass.__init__(self, name = "Board") #: Aktueller Zustand der Tür. #: Kann einen der folgenden Werte annehmen: #: #: - :data:`config.DOOR_NOT_MOVING`: Quasi ein unbekannter Zustand, da die #: Tür im Stillstand entweder geschlossen oder offen sein sollte. #: - :data:`config.DOOR_MOVING_UP`: Tür bewegt sich nach oben #: - :data:`config.DOOR_MOVING_DOWN`: Tür bewegt sich nach unten #: - :data:`config.DOOR_OPEN`: Tür ist offen #: - :data:`config.DOOR_CLOSED`: Tür ist geschlossen #: #: Zur Abfrage, ob sich die Tür bewegt, existiert ausserdem noch die Konstante #: :data:`config.DOOR_MOVING`, die als ODER-Ergebnis aus :data:`config.DOOR_MOVING_DOWN` #: und :data:`config.DOOR_MOVING_UP` zur Maskierung des Bewegungszustands #: verwendet werden kann: #: #: .. code-block:: python #: #: door_is_moving = bool(door_state & DOOR_MOVING) self.door_state = DOOR_NOT_MOVING #: Zustand der Innenbeleuchtung (``True`` = an) #: #: .. seealso:: #: :meth:`SwitchIndoorLight` #: :attr:`light_state_indoor` self.light_state_indoor = False #: Zustand der Außenbeleuchtung (``True`` = an) #: #: .. seealso:: #: :meth:`SwitchOutdoorLight` #: :attr:`light_state_indoor` self.light_state_outdoor = False #: Zeitpunkt, an dem der Shutdown-Button gedrückt wurde. #: Wird in :meth:`OnShutdownButtonPressed` benutzt um zu ermitteln, wie lange der Knopf #: gedrückt wurde (und Fehlsignalisierung auszuschließen) self.shutdown_btn_time = 0 #: Referenz auf ein Callable, welches bei Änderung des Board-Status #: gerufen wird. #: #: .. seealso:: #: :meth:`CallStateChangeHandler` #: :meth:`SetStateChangeHandler` self.state_change_handler = None #: Pfad der Datei, in der der Status gespeichert wird. #: #: .. seealso:: #: :meth:`Load` #: :meth:`Save` self.state_file = resource_path.joinpath(BOARDFILE) GPIO.setmode(GPIO.BOARD) self.logger.debug("Settings pins %s to OUT.", OUTPUT_PINS) GPIO.setup(OUTPUT_PINS, GPIO.OUT, initial = RELAIS_OFF) self.logger.debug("Settings pins %s to IN.", INPUT_PINS) GPIO.setup(INPUT_PINS, GPIO.IN) GPIO.add_event_detect( SHUTDOWN_BUTTON, GPIO.BOTH, self.OnShutdownButtonPressed, bouncetime = 200) #: Instanz von :class:`Sensors` zum Auslesen der Temperatur #: und Helligkeitswerte. self.sensor = Sensors() self.CheckInitialState()