From 7ab16f852de97bd35923a6743da940cfcbf0871b Mon Sep 17 00:00:00 2001 From: flavio Date: Sat, 16 Jun 2012 20:15:42 +0000 Subject: Agregando control de sensores y corrijiendo bugs --- diff --git a/LegoJAM.py b/LegoJAM.py index be1ac9a..47db6b8 100644 --- a/LegoJAM.py +++ b/LegoJAM.py @@ -14,6 +14,7 @@ sys.path.append("nxt_plugin") # Importamos las funciones de la API import nxt from nxt import Motor +from nxt.sensor import * from interface.window import Window @@ -57,8 +58,8 @@ class LegoJAM(Window): self.show_all() def select_robot(self, treeview, treepath, column, robots): - self.set_layout(robots[treepath[0] - 1]) treeview.destroy() + self.set_layout(robots[treepath[0] - 1]) def set_layout(self, robot): self.robot = Robot(robot) @@ -88,10 +89,11 @@ class LegoJAM(Window): num += 1 battery_status = gtk.Label( - 'Estado de la bateria: %s' % self.robot.get_battery_level()) + 'Estado de la bateria: %s' % self.robot.robot.get_battery_level()) vbox.pack_end(battery_status) - self.robot.connect('battery-level-changed', - lambda w, l: battery_status.set_text(l)) + + self.robot.connect('battery-label-changed', + lambda w, l: battery_status.set_text('Estado de la bateria: %s' % l)) self.canvas.pack_start(vbox, True, True) self.show_all() @@ -127,27 +129,34 @@ class LegoJAM(Window): # robot.get_input_values() takes exactly 2 arguments (1 given) # robot.get_output_state() takes exactly 2 arguments (1 given) -class Robot(): +class Robot(gobject.GObject): __gsignals__ = {'battery-label-changed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, - int)} + [str])} def __init__(self, robot): + gobject.GObject.__init__(self) + self.motorA = None self.motorB = None self.motorC = None self.funciones = [] self.set_up(robot) - gobject.timout_add(1000, self._update_battery_level) - def set_up(self, robot): self.robot = robot.connect() self.motorA = Mimotor("A", self.robot, nxt.PORT_A) self.motorB = Mimotor("B", self.robot, nxt.PORT_B) self.motorC = Mimotor("C", self.robot, nxt.PORT_C) + self.presion = Touch(self.robot, PORT_1) + self.sonido = Sound(self.robot, PORT_2) + self.ultrasonido = Ultrasonic(self.robot, PORT_4) + self.luz = Light(self.robot, PORT_3) + + gobject.timeout_add(1000, self.handle) + def run_motor(self, motor): if motor == "A": self.motorA.run(power=127, regulated=False) @@ -163,9 +172,23 @@ class Robot(): self.motorB.brake() elif motor == "C": self.motorC.brake() - - def _update_battery_level(self): - self.emit('battery-level-changed', self.robot.get_battery_level()) + + def handle(self): + valor_boton = self.presion.get_sample() + print 'Botón: ', valor_boton + + valor_sonido = self.sonido.get_sample() + print 'Botón: ', valor_sonido + + valor_ultrasonido = self.ultrasonido.get_sample() + print 'Ultrasónico: ', valor_ultrasonido + + valor_luz = self.luz.get_sample() + print 'luz: ', valor_luz + + self.emit('battery-label-changed', str(self.robot.get_battery_level())) + + return True class Mimotor(Motor): -- cgit v0.9.1