m = MediumMotor(OUTPUT_A) print("Press the touch sensor to change the LED color!") while True: if ts.is_pressed: # leds.set_color("LEFT", "GREEN") # leds.set_color("RIGHT", "GREEN") sound.speak('du du is a good boy') m.on_for_rotations(SpeedPercent(75), 5) else: leds.set_color("LEFT", "RED") leds.set_color("RIGHT", "RED") m.stop() # don't let this loop use 100% CPU sleep(0.01) # multiple-motor-groups # run 2 motors tank_drive = MoveTank(OUTPUT_A, OUTPUT_B) # drive in a turn for 5 rotations of the outer motor # the first two parameters can be unit classes or percentages. tank_drive.on_for_rotations(SpeedPercent(50), SpeedPercent(75), 10) # drive in a different turn for 3 seconds tank_drive.on_for_seconds(SpeedPercent(60), SpeedPercent(30), 3)
# right pad center value 128 # right pad center max left value 0 # right pad center max right value 255 # right pad center max top value 0 # right pad center max bottom value 255 rPadrTl = 2 rPadtTb = 5 sound = Sound() mA = MediumMotor(OUTPUT_A) mB = MediumMotor(OUTPUT_B) # TODO: Add code here # evdev takes care of polling the controller in a loop for event in gamepad.read_loop(): if event.type == ecodes.EV_KEY: if event.value == 1: if event.code == yBtn: print("Y") sound.speak('Autobots, roll out!') sound.play_file('autobot.wav') elif event.code == bBtn: print("B") mA.run_forever(speed_sp=1000) elif event.code == aBtn: print("A") mA.stop() elif event.code == xBtn: print("X")
class KitchenSinkGadget(AlexaGadget): """ Class that logs each directive received from the Echo device. """ def __init__(self): super().__init__() self.leds = Leds() self.motorOne = LargeMotor(OUTPUT_C) self.motorTwo = LargeMotor(OUTPUT_B) self.motorThree = MediumMotor(OUTPUT_A) #self.t1 = "" #self.t2 = "" #self.TouchIt = TouchSensor(INPUT_4) #ts = TouchSensor() def on_connected(self, device_addr): """ Gadget connected to the paired Echo device. :param device_addr: the address of the device we connected to """ self.leds.set_color('LEFT','RED') self.leds.set_color('RIGHT','RED') threading.Thread(target=self.buttonListener).start() def on_disconnected(self, device_addr): """ Gadget disconnected from the paired Echo device. :param device_addr: the address of the device we disconnected from """ self.leds.set_color('LEFT','BLACK') self.leds.set_color('RIGHT','BLACK') def on_alexa_gadget_statelistener_stateupdate(self, directive): """ Alexa.Gadget.StateListener StateUpdate directive received. For more info, visit: https://developer.amazon.com/docs/alexa-gadgets-toolkit/alexa-gadget-statelistener-interface.html#StateUpdate-directive :param directive: Protocol Buffer Message that was send by Echo device. To get the specific state update name, the following code snippet can be used: # Extract first available state (name & value) from directive payload """ if len(directive.payload.states) > 0: state = directive.payload.states[0] name = state.name value = state.value print('state name:{}, state value:{}'.format(name, value)) if name == "timers": if value == "active": print("Active hai timer abhi") self.motorThree.on(20) #self.motorOne.on_for_degrees(speed = 10, degrees= 90) #self.motorTwo.on_for_degrees(10,-90) elif value == "cleared": print("Timer cleared here now") self.motorThree.off() #self.motorThree.on_to_position(10,0) #for i in range(12,168): #self.motorOne.on_to_position(2,0) #self.motorTwo.on_to_position(2,0) elif name == "wakeword": actualPos = self.motorOne.position print(actualPos) #self.motorOne.on_to_position(10,0) if value == "active": self.leds.set_color('LEFT','GREEN') self.leds.set_color('RIGHT','GREEN') self.motorOne.on_to_position(10,-10,True,True) self.motorOne.wait_until_not_moving() self.motorOne.on_to_position(10,0,True,True) self.motorOne.on_to_position(10,10,True,True) self.motorOne.on_to_position(10,0,True,True) elif value == "cleared": self.leds.set_color('LEFT','BLACK') self.leds.set_color('RIGHT','BLACK') #self.motorOne.on_to_position(20,0) elif name == "alarms": if value == "active": self.leds.set_color('LEFT','RED') self.leds.set_color('RIGHT','RED') self.motorThree.on(20) elif value == "cleared": self.motorThree.stop() self.leds.set_color('LEFT','BLACK') self.leds.set_color('RIGHT','BLACK') elif name == "reminders": if value == "active": self.leds.set_color('LEFT','GREEN') self.leds.set_color('RIGHT','GREEN') #self.leds.set_color('UP','GREEN') #self.leds.set_color('DOWN','GREEN') moveUp = True moveDown = True counter = 0 for i in range(0,15): #if moveUp: self.motorTwo.on_to_position(10,-10,True,True) self.motorThree.on_to_position(5,-20,True,True) time.sleep(0.3) self.motorTwo.on_to_position(10,70,True,True) #moveUp = False #moveDown = True #elif moveDown: # self.motorTwo.on_for_degrees(20,0,True,True) # moveUp = True # moveDown = False elif value == "cleared": self.leds.set_color('LEFT','BLACK') self.leds.set_color('RIGHT','BLACK') self.motorTwo.on_to_position(20,0) self.motorThree.on_to_position(5,70,True,True) #self.leds.set_color('UP','BLACK') #self.leds.set_color('DOWN','BLACK') def on_notifications_setindicator(self, directive): """ Notifications SetIndicator directive received. For more info, visit: https://developer.amazon.com/docs/alexa-gadgets-toolkit/notifications-interface.html#SetIndicator-directive :param directive: Protocol Buffer Message that was send by Echo device. """ print("Notification Set Indicator") def on_notifications_clearindicator(self, directive): """ Notifications ClearIndicator directive received. For more info, visit: https://developer.amazon.com/docs/alexa-gadgets-toolkit/notifications-interface.html#ClearIndicator-directive :param directive: Protocol Buffer Message that was send by Echo device. """ print("Notification Cleared") def on_alexa_gadget_musicdata_tempo(self, directive): """ Provides the music tempo of the song currently playing on the Echo device. :param directive: the music data directive containing the beat per minute value """ tempo_data = directive.payload.tempoData for tempo in tempo_data: print("tempo value: {}".format(tempo.value)) if tempo.value > 0: # dance pose print(tempo.value) #self.right_motor.run_timed(speed_sp=750, time_sp=2500) #self.left_motor.run_timed(speed_sp=-750, time_sp=2500) #self.hand_motor.run_timed(speed_sp=750, time_sp=2500) self.leds.set_color("LEFT", "GREEN") self.leds.set_color("RIGHT", "GREEN") time.sleep(3) # starts the dance loop self.trigger_bpm = "on" self.t1 = threading.Thread(target=self._dance_loop, args=(tempo.value,)).start() self.t2 = threading.Thread(target=self.ledShuffler, args=(tempo.value,)).start() elif tempo.value == 0: # stops the dance loop #print(dir(self.t1)) self.trigger_bpm = "off" self.motorOne.on_to_position(5,0,True,True) self.leds.set_color("LEFT", "BLACK") self.leds.set_color("RIGHT", "BLACK") def danceMoveTwo(self): for i in range(0,2): self.motorThree.on_for_rotations(15,1,True,False) self.motorTwo.on_to_position(15,-30,True,True) self.motorOne.on_to_position(5,0,True,True) self.motorThree.on_for_rotations(15,1,True,False) self.motorTwo.on_to_position(15,45,True,True) self.motorOne.on_to_position(5,-60,True,True) self.motorThree.on_for_rotations(15,1,True,True) self.motorOne.on_to_position(5,0,True,True) self.motorThree.on_for_rotations(15,1,True,True) self.motorOne.on_to_position(5,60,True,True) self.motorThree.on_for_rotations(15,1,True,True) self.motorOne.on_to_position(5,0,True,True) def danceMoveFive(self): for i in range(0,4): print("Move five part one") print(self.motorTwo.position) self.motorTwo.on_to_position(15,-30,True,False) #self.motorTwo.wait_until_not_moving() self.motorTwo.on_to_position(20,40,True,False) self.motorOne.on_to_position(5,0,True,True) self.motorOne.on_to_position(5,60,True,False) #for i in range(0,4): # print("Move five part two") # print(self.motorThree.position) # self.motorThree.on_to_position(15,70,True,True) # self.motorOne.on_to_position(5,-60,True,True) # self.motorThree.on_to_position(15,130,True,False) # self.motorOne.on_to_position(5,-60,True,False) def danceMoveSix(self): for i in range(0,12): if self.trigger_bpm != 'on': return moveUp = True moveDown = True if moveUp: print("Move Six Part One") print(self.motorThree.position) #self.leds.set_color('LEFT','RED') #self.leds.set_color('RIGHT','RED') self.motorThree.on_to_position(10,0,True,True) self.motorThree.on_to_position(10,70,True,False) moveUp = False moveDown = True if moveDown: print("Move Six Part Two") #self.leds.set_color('LEFT','GREEN') #self.leds.set_color('RIGHT','GREEN') print(self.motorTwo.position) self.motorTwo.on_to_position(15,-30,True,True) self.motorTwo.on_to_position(15,45,True,False) moveUp = True moveDown = False #self.motorTwo.on_to_position(20,-20,True,True) #self.motorOne.on_to_position(5,60,True,False) #self.motorTwo.on_to_position(20,20,True,True) self.motorOne.on_to_position(5,60,True,True) self.motorOne.on_to_position(1,0,True,True) def moveSeven(self): start = 0 for each in range(0,50): if self.trigger_bpm != 'on': return start += 5 self.motorThree.on_to_position(1,start,True,True) time.sleep(0.2) def moveHands(self): self.motorThree.on_to_position(15,30,True,False) self.motorTwo.on_to_position(20,0,True,True) self.motorThree.on_to_position(15,-30,True,False) self.motorTwo.on_to_position(20,55,True,True) def moveHands2(self): self.motorThree.on_to_position(10,-120,True,False) self.motorTwo.on_to_position(15,-10,True,True) self.motorThree.on_to_position(10,-50,True,False) self.motorTwo.on_to_position(15,45,True,True) def danceMoveFour(self): if self.trigger_bpm != 'on': return self.motorOne.on_to_position(8,0,True,True) for i in range(0,4): print("In move four part one") self.moveHands() self.motorOne.on_to_position(8,-40,True,True) if self.trigger_bpm != 'on': return for i in range(0,4): print("In move four part two") self.moveHands() self.motorOne.on_to_position(8,0,True,True) if self.trigger_bpm != 'on': return for i in range(0,4): print("In move four part three") self.moveHands() self.motorOne.on_to_position(8,40,True,True) if self.trigger_bpm != 'on': return for i in range(0,4): print("In move four part four") self.moveHands2() self.motorOne.on_to_position(8,0,True,True) if self.trigger_bpm != 'on': return for i in range(0,4): print("In move four part five") self.moveHands2() def danceMoveThree(self): self.motorOne.on_to_position(5,0,True,False) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorOne.on_to_position(5,-40,True,False) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorOne.on_to_position(5,0,True,False) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorOne.on_to_position(5,40,True,False) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) self.motorTwo.on_to_position(20,-30,True,True) self.motorTwo.on_to_position(20,45,True,True) def danceMoveOne(self): self.motorTwo.on_to_position(20,-30,True,False) self.motorOne.on_to_position(5,0,True,True) self.motorTwo.on_to_position(20,45,True,False) self.motorOne.on_to_position(5,-60,True,True) self.motorTwo.on_to_position(20,-30,True,False) self.motorOne.on_to_position(5,0,True,True) self.motorTwo.on_to_position(20,45,True,False) self.motorOne.on_to_position(5,60,True,True) self.motorTwo.on_to_position(20,-30,True,False) def buttonListener(self): while True: if ts.is_pressed: print("Button Pressed") self._send_event("buttonPress" ,{"pressed" : "pressedNow"}) else: pass time.sleep(0.2) def ledShuffler(self,bpm): color_list = ["GREEN", "RED", "AMBER", "YELLOW"] led_color = random.choice(color_list) while self.trigger_bpm == "on": led_color = "BLACK" if led_color != "BLACK" else random.choice(color_list) self.leds.set_color("LEFT", led_color) self.leds.set_color("RIGHT", led_color) milli_per_beat = min(1000, (round(60000 / bpm)) * 0.65) time.sleep(milli_per_beat / 1000) def _dance_loop(self, bpm): """ Perform motor movement in sync with the beat per minute value from tempo data. :param bpm: beat per minute from AGT """ motor_speed = 400 milli_per_beat = min(1000, (round(60000 / bpm)) * 0.65) print("Adjusted milli_per_beat: {}".format(milli_per_beat)) while self.trigger_bpm == "on": # Alternate led color and motor direction motor_speed = -motor_speed #self.danceMoveFive() #self.danceMoveSix() #self.danceMoveOne() #self.danceMoveTwo() #self.danceMoveThree() if self.trigger_bpm != "on": break self.danceMoveFour() if self.trigger_bpm != "on": break self.danceMoveFive() if self.trigger_bpm != "on": break self.danceMoveSix() if self.trigger_bpm != "on": break self.moveSeven() if self.trigger_bpm != "on": break #self.right_motor.run_timed(speed_sp=motor_speed, time_sp=150) #self.left_motor.run_timed(speed_sp=-motor_speed, time_sp=150) time.sleep(milli_per_beat / 1000) print("Exiting BPM process.") self.motorTwo.on_to_position(5,75,True,True) self.motorThree.on_to_position(5,75,True,True) self.motorOne.on_to_position(5,0,True,True) def _send_event(self, name, payload): """ Sends a custom event to trigger a sentry action. :param name: the name of the custom event :param payload: the sentry JSON payload """ self.send_custom_event('Custom.Mindstorms.Gadget', name, payload) def on_custom_mindstorms_gadget_control(self, directive): """ Handles the Custom.Mindstorms.Gadget control directive. :param directive: the custom directive with the matching namespace and name """ print("Directive", directive) try: payload = json.loads(directive.payload.decode("utf-8")) print("Control payload: {}".format(payload)) control_type = payload["type"] print("Control Type",control_type) if control_type == "dance": print("Move command found") self.danceMoveFive() self._send_event("completion", {'danceMove' : 'completed'}) elif control_type == "rotate": self.motorOne.on_to_position(5,190,True,True) self.motorOne.on_to_position(5,-150,True,True) self.motorTwo.on_to_position(10,-30,True,True) self.motorThree.on_to_position(5,-20,True,True) time.sleep(1) #self.motorTwo.on_to_position(5,40,True,True) #time.sleep(2) #self.motorOne.on_to_position(5,0,True,True) self._send_event("completion",{'startGame':'completed'}) elif control_type == "movefinger" : time.sleep(1.4) print("Delay 1.4") self.motorTwo.on_to_position(15,-20,True,True) self.motorTwo.on_to_position(15,40,True,True) #while not ts.is_pressed: # print("Touch Sensor is not pressed") #self._send_event("completion",{'flying':'made'}) #self._send_event("completion",{'flying':'completed'}) elif control_type == "movefingeragain": time.sleep(1.2) print("Delay 1.2") self.motorTwo.on_to_position(15,-20,True,True) self.motorTwo.on_to_position(15,40,True,True) elif control_type == "movefingerfirst": time.sleep(0.3) print("Delay 0.3") self.motorTwo.on_to_position(15,-20,True,True) self.motorTwo.on_to_position(15,40,True,True) elif control_type == "chill": self.motorOne.on_to_position(5,20,True,True) self.motorTwo.on_to_position(5,55,True,True) self.motorThree.on_to_position(5,40,True,True) #self._send_event("completion",{'backtoPos':'completed'}) elif control_type == "rotatetwo": self.motorOne.on_to_position(5,190,True,True) self.motorOne.on_to_position(5,-150,True,True) self.motorOne.on_to_position(5,20,True,True) time.sleep(0.5) self.motorTwo.on_to_position(10,-40,True,True) self.motorThree.on_to_position(5,-30,True,True) self._send_event("completion",{'playerturn':'completed'}) elif control_type == "startdance": print("Robot should be dancing now") time.sleep(4) self.trigger_bpm = "on" self.danceMoveFour() self.danceMoveFive() self._send_event("completion",{'dance' : 'statue'}) except KeyError: print("Missing expected parameters: {}".format(directive)) def on_alerts_setalert(self, directive): """ Alerts SetAlert directive received. For more info, visit: https://developer.amazon.com/docs/alexa-gadgets-toolkit/alerts-interface.html#SetAlert-directive :param directive: Protocol Buffer Message that was send by Echo device. """ print(directive.payload) #for state in directive.payload.states: if directive.payload.type == "TIMER": timeToStart = directive.payload.scheduledTime token = directive.payload.token timeNow = datetime.now() print(timeNow) #for i in range(12,168): self.motorTwo.on_to_position(25,120) self.motorTwo.on_to_position(25,0) #self.motorTwo.on_to_position(-1,i) #time.sleep(1.935) #print(i) #print("Motor is holding") #print(self.motorOne.is_holding) #print("Motor is running") #print(self.motorOne.is_running) #print("Motor is stalled") #print(self.motorOne.is_stalled) print("Set Alert is done") elif directive.payload.type == "ALARM": timeToStart = directive.payload.scheduledTime token = directive.payload.token print(timeToStart) print(token) self.leds.set_color('LEFT','YELLOW') self.leds.set_color('RIGHT','YELLOW') elif directive.payload.type == "REMINDER": self.leds.set_color('LEFT','AMBER') self.leds.set_color('RIGHT','AMBER') #self.leds.set_color('UP','AMBER') #self.leds.set_color('DOWN','AMBER') def on_alerts_deletealert(self, directive): """ Alerts DeleteAlert directive received. For more info, visit: https://developer.amazon.com/docs/alexa-gadgets-toolkit/alerts-interface.html#DeleteAlert-directive :param directive: Protocol Buffer Message that was send by Echo device. """ print(directive.payload) #for state in directive.payload.states: # if state.value == "cleared": # self.motorTwo.run_timed(speed_sp=1000,time_sp=1000) print("Delete Alert")
class Robot: def __init__(self): self.sound = Sound() self.direction_motor = MediumMotor(OUTPUT_D) self.swing_motorL = LargeMotor(OUTPUT_A) self.swing_motorC = LargeMotor(OUTPUT_B) self.swing_motorR = LargeMotor(OUTPUT_C) self.swing_motors = [ self.swing_motorL, self.swing_motorC, self.swing_motorR ] self.touch_sensor = TouchSensor(INPUT_1) self.console = Console(DEFAULT_FONT) self.buttons = Button() self.beeps_enabled = True def beep(self, frequency=700, wait_for_comeplete=False): if not self.beeps_enabled: return play_type = Sound.PLAY_WAIT_FOR_COMPLETE if wait_for_comeplete else Sound.PLAY_NO_WAIT_FOR_COMPLETE self.sound.beep("-f %i" % frequency, play_type=play_type) def calibrate_dir(self): ''' Calibrate direction motor ''' # Run motor with 25% power, and wait until it stops running self.direction_motor.on(SpeedPercent(-10), block=False) # while (not self.direction_motor.STATE_OVERLOADED): # print(self.direction_motor.duty_cycle) self.direction_motor.wait_until(self.direction_motor.STATE_OVERLOADED) self.direction_motor.stop_action = Motor.STOP_ACTION_COAST self.direction_motor.stop() time.sleep(.5) # Reset to straight # self.direction_motor.on_for_seconds(SpeedPercent(10), .835, brake=True, block=True) self.direction_motor.on_for_degrees(SpeedPercent(10), 127, brake=True, block=True) self.direction_motor.reset() print("Motor reset, position: " + str(self.direction_motor.position)) time.sleep(.5) def calibrate_swing(self): for m in self.swing_motors: m.stop_action = m.STOP_ACTION_HOLD m.on(SpeedPercent(6)) self.swing_motorC.wait_until(self.swing_motorC.STATE_OVERLOADED, 2000) for m in self.swing_motors: m.stop_action = m.STOP_ACTION_HOLD m.on_for_degrees(SpeedPercent(5), -15, brake=True, block=False) self.swing_motorC.wait_while('running') for m in self.swing_motors: m.reset() m.stop_action = m.STOP_ACTION_HOLD m.stop() print("Ready Angle: %i" % self.swing_motorC.position) def ready_swing(self, angle: int): right_angle = -(angle / 3) # adjust motors to target angle for m in self.swing_motors: m.stop_action = Motor.STOP_ACTION_HOLD m.on_for_degrees(SpeedPercent(2), right_angle, brake=True, block=False) self.swing_motorC.wait_while('running') for m in self.swing_motors: m.stop_action = Motor.STOP_ACTION_HOLD m.stop() print("Swing Angle: %i" % self.swing_motorC.position) def set_direction(self, direction): print("Setting direction to: " + str(direction)) #direction = self.__aim_correction(direction) self.direction_motor.on_for_degrees(SpeedPercent(10), round(direction * 3)) print("Direction set to: " + str(self.direction_motor.position)) # # def __aim_correction(self, direction): # x = direction # y = -0.00000000429085685725*x**6 + 0.00000004144345630728*x**5 + 0.00001219331494759860*x**4 + 0.00020702946527870400*x**3 + 0.00716486965517779000*x**2 + 1.29675836037884000000*x + 0.27064829453014400000 # # return y def shoot(self, power): print("SHOOT, power: %i" % power) for m in self.swing_motors: m.duty_cycle_sp = -power for m in self.swing_motors: m.run_direct() time.sleep(.5) self.swing_motorC.wait_until_not_moving() for m in self.swing_motors: m.reset() def wait_for_button(self): self.touch_sensor.wait_for_bump() def __set_display(self, str): self.console.set_font(font=LARGER_FONT, reset_console=True) self.console.text_at(str, column=1, row=1, reset_console=True) def wait_for_power_select(self, power=0, angle=0, steps=1): self.__set_display("Pow: %i\nAngle: %i" % (power, angle)) def left(): power -= steps if power < 0: power = 0 self.__set_display("Pow: %i\nAngle: %i" % (power, angle)) self.buttons.wait_for_released(buttons=['left'], timeout_ms=150) def right(): power += steps if power > 100: power = 100 self.__set_display("Pow: %i\nAngle: %i" % (power, angle)) self.buttons.wait_for_released(buttons=['right'], timeout_ms=150) def up(): angle += steps if angle > 110: angle = 110 self.__set_display("Pow: %i\nAngle: %i" % (power, angle)) self.buttons.wait_for_released(buttons=['up'], timeout_ms=150) def down(): angle -= steps if angle < 0: angle = 0 self.__set_display("Pow: %i\nAngle: %i" % (power, angle)) self.buttons.wait_for_released(buttons=['down'], timeout_ms=150) while not self.touch_sensor.is_pressed: if self.buttons.left: left() elif self.buttons.right: right() elif self.buttons.up: up() elif self.buttons.down: down() self.console.set_font(font=DEFAULT_FONT, reset_console=True) return (power, angle) def select_connection_mode(self): self.__set_display("Enable Connection\nLeft: True - Right: False") enabled = True while not self.touch_sensor.is_pressed: if self.buttons.left: enabled = True self.buttons.wait_for_released(buttons=['left']) break elif self.buttons.right: enabled = False self.buttons.wait_for_released(buttons=['right']) break self.console.set_font(font=DEFAULT_FONT, reset_console=True) return enabled def print(self, string): print(string)
part = conn.recv(8) message.append(int.from_bytes(part, byteorder='big', signed=True)) #message.append(int.from_bytes(part, byteorder='big', signed=True)) handleMessage(message) if len(part) == 0: break #send to ev3 def send(*args): #msg = len(args).to_bytes(1, byteorder='big') msg = len(args).to_bytes(1, byteorder='big') for a in args: msg += (a).to_bytes(8, byteorder='big', signed=True) # print(msg) conn.send(msg) print(conn, ' ', addr) a = True try: reader() except: mid_motor.stop() left_motor.stop() right_motor.stop()
if( steps < 0 ): steps = 0 elif(btn.check_buttons(buttons=['enter'])): break # update the steps on screen lcd.text_pixels( str(steps), True, 80, 50, font='courB18') lcd.update() # btn.wait_for_released(buttons=['up','down', 'left', 'right','enter']) log.info('Climbing ......') while( steps > 0 ): oneStep() steps -= 1 # update the steps on screen lcd.text_pixels( str(steps), True, 80, 50, font='courB18') lcd.update() # move forward & stop mm_move.on(-90) lm_move.on(-100) sleep(0.5) mm_move.stop() lm_move.stop()
mySnd = Sound() medMot.on_to_position(30, 0) mySnd.speak("looking left and right") medMot.on_to_position(10, 90) time.sleep(0.5) medMot.on_to_position(10, -90) time.sleep(0.5) medMot.on_to_position(10, 0) mySnd.speak("spinning") medMot.on_for_seconds(80, 1) medMot.on_to_position(50, 0) mySnd.speak("fixed turn") for i in range(12): medMot.on_for_degrees(30, 30) time.sleep(1.0) medMot.stop() bttn = Button() mySnd.speak("Turns until button pressed") medMot.on(-20) while True: if bttn.enter == 1: break medMot.stop()
sound = Sound() if eve3Init["name"] != "RA": M1 = MediumMotor('outA') #largeMotor max RPM is 175 M2 = MediumMotor('outB') M3 = MediumMotor('outC') M4 = MediumMotor('outD') else: M1 = MediumMotor('outA') M2 = MediumMotor('outB') M3 = MediumMotor('outC') motorList = ['off','off','off','off'] if M1.connected: print('M1 is connected') motorList[0] = 'on' M1.stop() else: print('M1 is not connected') if M2.connected: print('M2 is connected') motorList[1] = 'on' M2.stop() else: print('M2 is not connected') if M3.connected: print('M3 is connected') motorList[2] = 'on' M3.stop() else: print('M3 is not connected') if M4.connected:
bot = create_steering_tank() koura = MediumMotor(OUTPUT_D) # our hand to grab 'em all for event in gamepad.read_loop(): #this loops infinitely # Read the analog stick values and move the robot if event.type == 3: if event.code == 1: y = scale_stick(event.value) if event.code == 0: x = scale_stick(event.value) / 3.0 try: bot.on(x, y, 100, 1) except TypeError: # thanks to library bug a quick fix bot.off() # Listen to the trigger to start moving the hand if event.type == 1 and event.value == 1: if event.code == 312: koura.on(-5) if event.code == 313: koura.on(5) # Don't over do, so stop the engine on trigger release if event.type == 1 and event.value == 0: if event.code == 312: koura.stop() if event.code == 313: koura.stop()