Esempio n. 1
0
	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)
Esempio n. 2
0
	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)
Esempio n. 3
0
	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())
Esempio n. 4
0
	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)