Example #1
0
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)
Example #2
0
# 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")
Example #3
0
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")
Example #4
0
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)
Example #5
0
            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()
Example #6
0
		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()




Example #7
0
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:
Example #9
0
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()