def manualMode(self): """ Gére le mode "Manuel" de l'application. Le mode "Manuel" réalise les mouvements simples via l'IHM (Déplacement vert le Haut, la droite, allumer le laser...). """ for i in range(100): self.reading = self.uart.read() hPos = self.horizontalServo.getPosition() vPos = self.verticalServo.getPosition() if self.reading != "": if self.reading == "Up": vPos+=2 elif self.reading == "Left": hPos-=2 elif self.reading == "Right": hPos+=2 elif self.reading == "Down": vPos-=2 elif self.reading == "Center": hPos = 0 vPos = 0 elif self.reading == "Laser": if self.laser.getState() == "0": self.laser.ON() else: self.laser.OFF() else: break self.horizontalServo.setPosition(hPos) self.verticalServo.setPosition(vPos) Methods.sendData(self.uart, self.horizontalServo.getPosition(), self.verticalServo.getPosition(), self.laser.getState()) sleep(0.01)
def wiiMode(self): """ Gére le mode "Wii" de l'application. Le mode "Wii" réalise les actions via la manette nunchuk. """ buttons = self.nunchuk.getButtons() button_c = buttons[0] button_z = buttons[1] if button_z: self.laser.ON() else: self.laser.OFF() if button_c: axis = self.nunchuk.getAccelerometerAxis() hAngle = int(axis[0]*1.8-216.0)# Min=70 ; Max=170 vAngle = int(axis[1]*-1.8+225.0)# Min=175 ; Max=75 else: position = self.nunchuk.getJoystickPosition() hAngle = int(position[0]*0.93-123.58)# Min=36 ; Max=229 vAngle = int(position[1]*0.95-120.48)# Min=32 ; Max=221 self.horizontalServo.setPosition(hAngle) self.verticalServo.setPosition(vAngle) Methods.sendData(self.uart, self.horizontalServo.getPosition(), self.verticalServo.getPosition(), self.laser.getState()) sleep(0.01)
def initServos(self): """ Initialise les servomoteurs à la position 0,0 et éteint le laser. """ self.horizontalServo.setPosition(0) self.verticalServo.setPosition(0) Methods.sendData(self.uart, 0, 0, self.laser.getState())
def start(self, horizontalPositionTable, verticalPositionTable, laserStateTable): """ Dessine une forme personnalisé. Args: horizontalPositionTable (int[]): Tableau de toutes les positions du servomoteur qui gére l'axe horizontal. verticalPositionTable (int[]): Tableau de toutes les positions du servomoteur qui gére l'axe vertical. laserStateTable (str[]): Tableau de tout les états du laser. Les trois tableaux doivent être de même longueur ! """ if len(horizontalPositionTable) != len(verticalPositionTable): print "Erreur (Shape): Les tableau des 2 servos ne sont pas de même longueur !!!" return for i in range(0,len(horizontalPositionTable)): self.horizontalServo.setPosition(horizontalPositionTable[i]) self.verticalServo.setPosition(verticalPositionTable[i]) self.laser.setState(laserStateTable[i]) Methods.sendData(self.uart, horizontalPositionTable[i], verticalPositionTable[i], self.laser.getState()) sleep(0.01)