コード例 #1
0
ファイル: range_sensor.py プロジェクト: sveitser/i-am-emotion
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
コード例 #2
0
ファイル: rfm69.py プロジェクト: contactless/rfm69-linux
	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()
コード例 #3
0
    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()
コード例 #4
0
    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) ]
コード例 #5
0
ファイル: led.py プロジェクト: sveitser/i-am-emotion
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):
コード例 #6
0
    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()