Exemple #1
0
 def __init__(self):
     QMainWindow.__init__(self)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setGeometry(QApplication.desktop().availableGeometry())
     self.setFixedSize(320, 240)
     self.setupUi(self)
     self._init_events()
     self._g = GPIO(Config())
     self._init_buttons()
     self._init_leds()
     self._pin_servo = 26
     self._servo_dc = 50
     self._pin_dimmer = 22
     self._dimmer_dc = 50
     self._g.pwm_init(self._pin_servo, 20000000, 1500000)
     self._g.pwm_init(self._pin_dimmer, 1000000, 500000)
 def __init__(self):
     QMainWindow.__init__(self)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setGeometry(QApplication.desktop().availableGeometry())
     self.setFixedSize(320, 240)
     self.setupUi(self)
     self._init_events()
     self._g = GPIO(Config())
     self._init_buttons()
     self._init_leds()
     self._pin_servo = 26
     self._servo_dc = 50
     self._pin_dimmer = 22
     self._dimmer_dc = 50
     self._g.pwm_init(self._pin_servo, 20000000, 1500000)
     self._g.pwm_init(self._pin_dimmer, 1000000, 500000)
Exemple #3
0
class Demo(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setGeometry(QApplication.desktop().availableGeometry())
        self.setFixedSize(320, 240)
        self.setupUi(self)
        self._init_events()
        self._g = GPIO(Config())
        self._init_buttons()
        self._init_leds()
        self._pin_servo = 26
        self._servo_dc = 50
        self._pin_dimmer = 22
        self._dimmer_dc = 50
        self._g.pwm_init(self._pin_servo, 20000000, 1500000)
        self._g.pwm_init(self._pin_dimmer, 1000000, 500000)

    def _exit(self):
        self._close_servo()
        self._close_dimmer()
        self._close_leds()
        self._close_buttons()
        exit()

    def _init_events(self):
        self.tab_demo.currentChanged.connect(self._tab_changer)
        self.btn_exit.clicked.connect(self._exit)
        self.dial_servo.valueChanged.connect(self._servo_dial)
        self.dial_dimmer.valueChanged.connect(self._dimmer_dial)
        self.rbox_1.clicked.connect(self._rbox1_handler)
        self.rbox_2.clicked.connect(self._rbox2_handler)
        self.rbox_3.clicked.connect(self._rbox3_handler)

    def _tab_changer(self, index):
        if index == 0:
            pass
        elif index == 1:
            self._g.pwm_stop(self._pin_servo)
            self._init_dimmer()
            self.dial_dimmer.setValue(self._dimmer_dc)

        elif index == 2:
            self._g.pwm_stop(self._pin_dimmer)
            # See above comment about setting period in ns.
            self._init_servo()
            self.dial_servo.setValue(self._servo_dc)

    def _init_leds(self):
        self._toggling = False
        self._l1 = 11
        self._l2 = 13
        self._g.gpio_init(self._l1, 'out')
        self._g.gpio_init(self._l2, 'out')
        self._g.gpio_write(self._l1, 1)

    def _rbox1_handler(self):
        self._toggling = False
        self._g.gpio_write(self._l2, 0)
        self._g.gpio_write(self._l1, 1)

    def _rbox2_handler(self):
        self._toggling = False
        self._g.gpio_write(self._l1, 0)
        self._g.gpio_write(self._l2, 1)

    def _rbox3_handler(self):
        self._toggling = True
        r3 = threading.Thread(target=self._led_toggler)
        r3.daemon = True
        r3.start()

    def _led_toggler(self):
        led = False
        while self._toggling:
            led = not led
            if led:
                self._g.gpio_write(self._l1, 0)
                self._g.gpio_write(self._l2, 1)
            else:
                self._g.gpio_write(self._l2, 0)
                self._g.gpio_write(self._l1, 1)
            sleep(1)

    def _close_leds(self):
        self._toggling = False
        sleep(.2)
        self._g.gpio_close(self._l1)
        self._g.gpio_close(self._l2)

    def _init_buttons(self):
        self._button_running = True
        b1 = threading.Thread(target=self._button_press,
                              args=(29, self.lbl_btn_1))
        b1.daemon = True
        b1.start()
        b2 = threading.Thread(target=self._button_press,
                              args=(15, self.lbl_btn_2))
        b2.daemon = True
        b2.start()

    def _button_press(self, pin, btn):
        self._g.eint_init(pin, 'high')
        btn_on = False

        while self._button_running:
            if self._g.eint_event(pin):
                self._g.eint_clear(pin)
                if not btn_on:
                    btn.setText('ON')
                    btn_on = True
            else:
                if btn_on:
                    btn.setText('OFF')
                    btn_on = False
            sleep(.05)

        self._g.eint_close(pin)

    def _close_buttons(self):
        self._button_running = False
        sleep(.2)

    def _init_dimmer(self):
        self.dial_dimmer.setEnabled(True)
        self._g.pwm_period(self._pin_dimmer, 1000000)
        self._g.pwm_start(self._pin_dimmer)

    def _close_dimmer(self):
        self.dial_dimmer.setEnabled(False)
        try:
            self._g.pwm_close(self._pin_dimmer)
        except:
            pass

    def _dimmer_dial(self, value):
        base_dc = 0
        max_dc = 1000000
        new_dc = base_dc + (value * 10000)

        if new_dc > max_dc:
            new_dc = max_dc

        self._dimmer_dc = value
        self._g.pwm_duty_cycle(self._pin_dimmer, new_dc)

    def _init_servo(self):
        self.dial_servo.setEnabled(True)
        self._g.pwm_period(self._pin_servo, 20000000)
        self._g.pwm_start(self._pin_servo)

    def _close_servo(self):
        self.dial_servo.setEnabled(False)
        try:
            self._g.pwm_close(self._pin_servo)
        except:
            pass

    def _servo_dial(self, value):
        base_dc = 1000000
        max_dc = 2000000
        new_dc = base_dc + (value * (base_dc / 100))

        if new_dc > max_dc:
            new_dc = max_dc

        self._servo_dc = value
        self._g.pwm_duty_cycle(self._pin_servo, new_dc)
class Demo(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setGeometry(QApplication.desktop().availableGeometry())
        self.setFixedSize(320, 240)
        self.setupUi(self)
        self._init_events()
        self._g = GPIO(Config())
        self._init_buttons()
        self._init_leds()
        self._pin_servo = 26
        self._servo_dc = 50
        self._pin_dimmer = 22
        self._dimmer_dc = 50
        self._g.pwm_init(self._pin_servo, 20000000, 1500000)
        self._g.pwm_init(self._pin_dimmer, 1000000, 500000)

    def _exit(self):
        self._close_servo()
        self._close_dimmer()
        self._close_leds()
        self._close_buttons()
        exit()

    def _init_events(self):
        self.tab_demo.currentChanged.connect(self._tab_changer)
        self.btn_exit.clicked.connect(self._exit)
        self.dial_servo.valueChanged.connect(self._servo_dial)
        self.dial_dimmer.valueChanged.connect(self._dimmer_dial)
        self.rbox_1.clicked.connect(self._rbox1_handler)
        self.rbox_2.clicked.connect(self._rbox2_handler)
        self.rbox_3.clicked.connect(self._rbox3_handler)

    def _tab_changer(self, index):
        if index == 0:
            pass
        elif index == 1:
            self._g.pwm_stop(self._pin_servo)
            self._init_dimmer()
            self.dial_dimmer.setValue(self._dimmer_dc)

        elif index == 2:
            self._g.pwm_stop(self._pin_dimmer)
            # See above comment about setting period in ns.
            self._init_servo()
            self.dial_servo.setValue(self._servo_dc)

    def _init_leds(self):
        self._toggling = False
        self._l1 = 11
        self._l2 = 13
        self._g.gpio_init(self._l1, 'out')
        self._g.gpio_init(self._l2, 'out')
        self._g.gpio_write(self._l1, 1)

    def _rbox1_handler(self):
        self._toggling = False
        self._g.gpio_write(self._l2, 0)
        self._g.gpio_write(self._l1, 1)

    def _rbox2_handler(self):
        self._toggling = False
        self._g.gpio_write(self._l1, 0)
        self._g.gpio_write(self._l2, 1)

    def _rbox3_handler(self):
        self._toggling = True
        r3 = threading.Thread(target=self._led_toggler)
        r3.daemon = True
        r3.start()

    def _led_toggler(self):
        led = False
        while self._toggling:
            led = not led
            if led :
                self._g.gpio_write(self._l1, 0)
                self._g.gpio_write(self._l2, 1)
            else:
                self._g.gpio_write(self._l2, 0)
                self._g.gpio_write(self._l1, 1)
            sleep(1)

    def _close_leds(self):
        self._toggling = False
        sleep(.2)
        self._g.gpio_close(self._l1)
        self._g.gpio_close(self._l2)

    def _init_buttons(self):
        self._button_running = True
        b1 = threading.Thread(target=self._button_press, args=(29, self.lbl_btn_1))
        b1.daemon = True
        b1.start()
        b2 = threading.Thread(target=self._button_press, args=(15, self.lbl_btn_2))
        b2.daemon = True
        b2.start()

    def _button_press(self, pin, btn):
        self._g.eint_init(pin, 'high')
        btn_on = False

        while self._button_running:
            if self._g.eint_event(pin):
                self._g.eint_clear(pin)
                if not btn_on:
                    btn.setText('ON')
                    btn_on = True
            else:
                if btn_on:
                    btn.setText('OFF')
                    btn_on = False
            sleep(.05)

        self._g.eint_close(pin)

    def _close_buttons(self):
        self._button_running = False
        sleep(.2)

    def _init_dimmer(self):
        self.dial_dimmer.setEnabled(True)
        self._g.pwm_period(self._pin_dimmer, 1000000)
        self._g.pwm_start(self._pin_dimmer)

    def _close_dimmer(self):
        self.dial_dimmer.setEnabled(False)
        try:
            self._g.pwm_close(self._pin_dimmer)
        except:
            pass

    def _dimmer_dial(self, value):
        base_dc = 0
        max_dc  = 1000000
        new_dc = base_dc + (value*10000)

        if new_dc > max_dc:
            new_dc = max_dc

        self._dimmer_dc = value
        self._g.pwm_duty_cycle(self._pin_dimmer, new_dc)

    def _init_servo(self):
        self.dial_servo.setEnabled(True)
        self._g.pwm_period(self._pin_servo, 20000000)
        self._g.pwm_start(self._pin_servo)

    def _close_servo(self):
        self.dial_servo.setEnabled(False)
        try:
            self._g.pwm_close(self._pin_servo)
        except:
            pass

    def _servo_dial(self, value):
        base_dc = 1000000
        max_dc  = 2000000
        new_dc = base_dc + (value*(base_dc/100))

        if new_dc > max_dc:
            new_dc = max_dc

        self._servo_dc = value
        self._g.pwm_duty_cycle(self._pin_servo, new_dc)