Esempio n. 1
0
class ServoApp(QtGui.QMainWindow):
    # This looks valid for TowerPro SG90 9G
    START_POSITION = 800
    END_POSITION = 2000
    CURRENT_POSITION = None

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.left, QtCore.SIGNAL("pressed()"),
                               self.move_left)
        QtCore.QObject.connect(self.ui.right, QtCore.SIGNAL("pressed()"),
                               self.move_right)
        self.mcu = pymcu.mcuModule()
        self._prepare_servo()

    def _prepare_servo(self):
        self.mcu.pulseOut(1, self.START_POSITION, 40)
        self.CURRENT_POSITION = self.START_POSITION
        self.ui.label.setText(str(self.CURRENT_POSITION))
        self._handle_edge_positions(self.CURRENT_POSITION)

    def move_left(self):
        self._move_servo(100)

    def move_right(self):
        self._move_servo(-100)

    def _move_servo(self, modifier):
        position = self._get_new_position(modifier)
        if self._position_allowed(position):
            self.mcu.pulseOut(1, position, 2)
            self._update_current_position(position)

    def _get_new_position(self, modifier):
        return self.CURRENT_POSITION + modifier

    def _update_current_position(self, position):
        self.CURRENT_POSITION = position
        self.ui.label.setText(str(position))
        self._handle_edge_positions(position)

    def _handle_edge_positions(self, position):
        if position == self.START_POSITION:
            self.ui.right.setEnabled(False)
        else:
            self.ui.right.setEnabled(True)

        if position == self.END_POSITION:
            self.ui.left.setEnabled(False)
        else:
            self.ui.left.setEnabled(True)

    def _position_allowed(self, position):
        return self.START_POSITION <= position <= self.END_POSITION
Esempio n. 2
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     QtCore.QObject.connect(self.ui.left, QtCore.SIGNAL("pressed()"),
                            self.move_left)
     QtCore.QObject.connect(self.ui.right, QtCore.SIGNAL("pressed()"),
                            self.move_right)
     self.mcu = pymcu.mcuModule()
     self._prepare_servo()
Esempio n. 3
0
class ServoApp(QtGui.QMainWindow):
    # This looks valid for TowerPro SG90 9G
    START_POSITION = 800
    END_POSITION = 2000
    CURRENT_POSITION = None

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.left, QtCore.SIGNAL("pressed()"), self.move_left)
        QtCore.QObject.connect(self.ui.right, QtCore.SIGNAL("pressed()"), self.move_right)
        self.mcu = pymcu.mcuModule()
        self._prepare_servo()

    def _prepare_servo(self):
        self.mcu.pulseOut(1, self.START_POSITION, 40)
        self.CURRENT_POSITION = self.START_POSITION
        self.ui.label.setText(str(self.CURRENT_POSITION))
        self._handle_edge_positions(self.CURRENT_POSITION)

    def move_left(self):
        self._move_servo(100)

    def move_right(self):
        self._move_servo(-100)

    def _move_servo(self, modifier):
        position = self._get_new_position(modifier)
        if self._position_allowed(position):
            self.mcu.pulseOut(1, position, 2)
            self._update_current_position(position)

    def _get_new_position(self, modifier):
        return self.CURRENT_POSITION + modifier

    def _update_current_position(self, position):
        self.CURRENT_POSITION = position
        self.ui.label.setText(str(position))
        self._handle_edge_positions(position)

    def _handle_edge_positions(self, position):
        if position == self.START_POSITION:
            self.ui.right.setEnabled(False)
        else:
            self.ui.right.setEnabled(True)

        if position == self.END_POSITION:
            self.ui.left.setEnabled(False)
        else:
            self.ui.left.setEnabled(True)

    def _position_allowed(self, position):
        return self.START_POSITION <= position <= self.END_POSITION
Esempio n. 4
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     QtCore.QObject.connect(self.ui.left, QtCore.SIGNAL("pressed()"), self.move_left)
     QtCore.QObject.connect(self.ui.right, QtCore.SIGNAL("pressed()"), self.move_right)
     self.mcu = pymcu.mcuModule()
     self._prepare_servo()