コード例 #1
0
ファイル: gpio_write.py プロジェクト: hANSIc99/Pythonic
class Element(Function):
    def __init__(self, id, config, inputData, return_queue, cmd_queue):
        super().__init__(id, config, inputData, return_queue, cmd_queue)

    def execute(self):

        #####################################
        #                                   #
        #     REFERENCE IMPLEMENTATION      #
        #                                   #
        #####################################
        specificConfig = self.config.get('SpecificConfig')

        if not specificConfig:
            self.return_queue.put(
                Record(None,
                       message='Trigger: {:04d}'.format(
                           self.config['Identifier'])))
            return

        gpioName = None
        mainMode = None
        subModeLED = None
        subModePWMLED = None
        gpioWorker = None
        cmd = None

        self.gpio = None
        self.initFlag = False

        for attrs in specificConfig:
            if attrs['Name'] == 'GPIO':
                gpioName = attrs['Data']
            if attrs['Name'] == 'MainMode':
                mainMode = attrs['Data']
            elif attrs['Name'] == 'SubModeLED':
                subModeLED = attrs['Data']
            elif attrs['Name'] == 'SubModePWMLED':
                subModePWMLED = attrs['Data']

        if mainMode == 'LED':

            self.gpio = LED(gpioName, initial_value=False)

            if subModeLED == 'Toggle on input':

                gpioWorker = self.ledWorkerToggle
                self.gpio.toggle()
                self.logLEDstate()

            elif subModeLED == 'Control on Input':

                gpioWorker = self.ledWorkerCtrl
                # set initial state
                if self.inputData is not None:
                    if self.inputData:
                        self.gpio.on()
                    else:
                        self.gpio.off()

                    self.logLEDstate()

            elif subModeLED == 'Blink':

                def a(cmd=None):
                    pass

                gpioWorker = a  # assign an empty function
                self.gpio.blink()
                self.return_queue.put(
                    Record(
                        None, 'Start LED Blink Mode on GPIO{}'.format(
                            self.gpio.pin.number)))

        elif mainMode == 'PWMLED':

            self.gpio = PWMLED(gpioName, initial_value=False)

            if subModePWMLED == 'Control on Input':

                gpioWorker = self.pwmLedWorkerCtrl

                if self.inputData is not None:
                    self.gpio.value = self.inputData
                    self.return_queue.put(
                        Record(
                            None, 'PWMLED: Set brightness on GPIO{} to {:.2f}'.
                            format(self.gpio.pin.number, self.inputData)))

            elif subModePWMLED == 'Pulse':

                def a(cmd=None):
                    pass

                gpioWorker = a  # assign an empty function
                self.gpio.pulse()
                self.return_queue.put(
                    Record(
                        None, 'Start PWMLED Pulse Mode on GPIO{}'.format(
                            self.gpio.pin.number)))

        #####################################
        #                                   #
        #     Start of the infinite loop    #
        #                                   #
        #####################################

        while (True):

            # Example code: Do something

            try:
                # Block for 1 second and wait for incoming commands
                cmd = None
                cmd = self.cmd_queue.get(block=True, timeout=1)
            except queue.Empty:
                pass

            if isinstance(cmd, ProcCMD):
                if cmd.bStop:
                    # Stop command received, exit
                    self.return_queue.put(
                        Record(None,
                               'GPIO{} closed'.format(self.gpio.pin.number)))
                    self.gpio.close()
                    return

            gpioWorker(cmd)

    def logLEDstate(self):
        self.return_queue.put(
            Record(
                None,
                'Switch LED on GPIO{} to {}'.format(self.gpio.pin.number,
                                                    self.gpio.is_active)))

    def ledWorkerToggle(self, cmd=None):

        if cmd is None:
            return

        self.gpio.toggle()
        self.logLEDstate()

    def ledWorkerCtrl(self, cmd=None):

        if cmd is None:
            return

        if cmd.data:
            self.gpio.on()
        else:
            self.gpio.off()

        self.logLEDstate()

    def pwmLedWorkerCtrl(self, cmd=None):

        if cmd is None:
            return
        try:
            self.gpio.value = cmd.data
        except Exception:
            self.gpio.close()
            raise
        self.return_queue.put(
            Record(
                None, 'PWMLED: Set brightness on GPIO{} to {:.2f}'.format(
                    self.gpio.pin.number, cmd.data)))
コード例 #2
0
bright = Button(pin=24,
                pull_up=False,
                bounce_time=None,
                hold_time=1,
                hold_repeat=False,
                pin_factory=None)
dim = Button(pin=25,
             pull_up=False,
             bounce_time=None,
             hold_time=1,
             hold_repeat=False,
             pin_factory=None)

while True:
    while (on_off.is_pressed):
        led.toggle()
        time.sleep(1)
    while (bright.is_pressed):
        if (led._read() == 1.0):
            led.toggle()
        elif (led._read() == 0.0):
            led._write(-0.1)
            led.toggle()
        else:
            duty_cycle = led._read()
            duty_cycle -= 0.1
            led._write(duty_cycle)
            led.toggle()
        time.sleep(1)
    while (dim.is_pressed):
        if (led._read() == 0.0):
コード例 #3
0
ファイル: main.py プロジェクト: lochbika/recording_box
         record_led.off()
         standard_screen()
 while len(play) > 0:
     item = play.popleft()
     if item == 0 and menu and MainMenu.CurrentItem.startswith('0.') and not playing:
         selectedrecording = int(MainMenu.CurrentItem.split('.')[MainMenu.CurrentLevel])
         custom_chars.load_progress()
         player = AudioIO.Player(channels=output_channels, rate=output_rate, device=output_device)
         player_stream = player.open(reclist[1][selectedrecording])
         player_stream.start_playing()
         play_screen = dsphlp.display_screen(lcd)
         play_led.on()
         playing = True
     elif playing:
         player_stream.toggle()
         play_led.toggle()
 while len(loop) > 0:
     item = loop.popleft()
     if item == 0 and menu and not playing:
         if MainMenu.CurrentLevel == 0:
             standard_screen()
             idle = True
             menu = False
         else:
             MainMenu.levelAscent()
             dsphlp.dspwrite(lcd, MainMenu.AllItems[MainMenu.CurrentItem])
     elif item == 0 and idle and not shutdown_bit:
         shutdown_bit = True
         shutdown_start_time = time.time()
         dsphlp.dspwrite(lcd, clear=1)
         shutdown_screen = dsphlp.display_screen(lcd)