Beispiel #1
0
	def setState(self, state):
		"""
		Permet d'e changer l'état du laser (allumé ou éteint).

		Args:
			state (str): État du laser. "0" pour éteint, "1" pour allumé.
		"""
		self.state = state
		Methods.writeFile("/sys/class/gpio/gpio"+str(self.nb)+"/value", self.state, "w")
Beispiel #2
0
	def __init__(self, nb):
		"""
		Initialise le laser

		Args:
			nb (int): Numéro de la GPIO utilisé.
		"""
		self.nb = nb

		self.state = "0"
		Methods.writeFile("/sys/class/gpio/gpio"+str(self.nb)+"/direction", "high", "w")
		self.OFF()
Beispiel #3
0
	def __init__(self, led1, led2):
		"""
		Initialise les GPIO des LEDs

		Args:
			led1 (int): Numéro de la GPIO de la LED 1.
			led2 (int): Numéro de la GPIO de la LED 2.
		"""
		self.led1 = led1
		self.led2 = led2
		self.mode = ""
		self.shutdownThread = threading.Event()

		Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/direction", "high", "w")
		Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/direction", "high", "w")
Beispiel #4
0
	def blink(self):
		"""
		Fait clignoter les LEDs alternativement.
		"""
		while not self.shutdownThread.is_set():
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/value", "0", "w")
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/value", "1", "w")
			sleep(0.3)
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/value", "1", "w")
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/value", "0", "w")
			sleep(0.3)
Beispiel #5
0
	def setPosition(self, position):
		"""
		Met à jour la position du servo selon la position donné en degrés.

		Args:
			position (int): Position en degré
		"""
		if position > 90:
			position = 90
		elif position < -90:
			position = -90

		self.position = position

		if self.invert:
			position*=-1
		duty = (50000/9)*position+1500000

		Methods.writeFile("/sys/devices/ocp.3/pwm_test_"+self.name+"."+self.nb+"/duty", str(duty), "w")
Beispiel #6
0
	def __init__(self, name, nb, invert):
		"""
		Initialise le PWM et positionne le servomoteur à 0 degrès.

		Args:
			name (str): Nom du PWM ("P9_14", "P9_22"...).
			nb (str): Nombre après le nom du PWM.
			invert (bool): Défini si l'axe du servomoteur est inversé.
		"""
		self.name = name
		self.nb = nb
		self.invert = invert

		try:
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "bone_pwm_"+name, "a")
			sleep(2)
			Methods.writeFile("/sys/devices/ocp.3/pwm_test_"+name+"."+nb+"/period", "20000000", "w")
			self.setPosition(0)
		except IOError:
			print "La configuration des servos a déjà été faites"
Beispiel #7
0
	def initPeriph(self):
		"""
		Initialise tout les périphériques servant à l'application (Laser, Servos, Manette nunchuk...) et instancie les objets globals.
		"""
		try:
			# GPIOs
			Methods.writeFile("/sys/class/gpio/export", "66", "a")
			Methods.writeFile("/sys/class/gpio/export", "69", "a")
			Methods.writeFile("/sys/class/gpio/export", "45", "a")

			# PWMs
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "am33xx_pwm", "a")

			# UART
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "BB-UART1", "a")

			sleep(2)

		except IOError:
			print "La configuration des périphériques a déjà été faites"

		# Création du laser
		self.laser = Laser(45)

		# Création de la gestion d'indication des modes
		self.modeObj = Mode(66, 69)

		# Création des servos
		self.verticalServo = Servo("P9_14", "10", False)
		self.horizontalServo = Servo("P9_22", "11", True)

		# Création de l'UART
		self.uart = UART()

		# Création du Nunchuk
		try:
			self.nunchuk = Nunchuk()
			self.nunchukIsConnected = True
		except IOError:
			print "Erreur de connexion avec la manette \"Nunchuk\""
			self.nunchukIsConnected = False
Beispiel #8
0
	def setMode(self, mode):
		"""
		Change le mode de l'application

		Args:
			mode (str): Nom du mode ("Manual", "Semi-auto", "Wii", "Auto" ou "Stop").
		"""
		self.mode = mode
		if mode == "Manual" or mode == "Semi-auto":
			print "Mode manuel"
			self.shutdownThread.set()
			sleep(0.7)
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/value", "1", "w")
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/value", "0", "w")
		elif mode == "Wii":
			print "Mode Wii"
			self.shutdownThread.set()
			sleep(0.7)
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/value", "1", "w")
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/value", "1", "w")
		elif mode == "Auto":
			print "Mode automatique"
			self.shutdownThread.clear()
			threading.Thread(target=self.blink).start()
		elif mode == "Stop":
			self.shutdownThread.set()
			sleep(0.7)
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led1)+"/value", "0", "w")
			Methods.writeFile("/sys/class/gpio/gpio"+str(self.led2)+"/value", "0", "w")
		else:
			print "Mode inconnu !"