Exemplo n.º 1
0
    def __init__(self, brick='NXT'):
        r'''Creates a new Alpha Rex controller.

            brick
                Either an nxt.brick.Brick object, or an NXT brick's name as a
                string. If omitted, a Brick named 'NXT' is looked up.
        '''
        if isinstance(brick, basestring):
            brick = find_one_brick(name=brick)

        self.brick = brick
        self.leftMotor = Motor(brick, PORT_B)
        self.rightMotor = Motor(brick, PORT_C)
        self.motors = [self.leftMotor, self.rightMotor]

        self.touch = Touch(brick, PORT_3)
        #self.sound = Sound(brick, PORT_2)
        #self.light = Light(brick, PORT_3)
        self.ultrasonic = Ultrasonic(brick, PORT_4)
Exemplo n.º 2
0
# coding=utf-8
# Больше информации и пример работы: http://mic-dm.blogspot.com/2012/07/blog-post.html.

from time import sleep

import nxt
from nxt.locator import find_one_brick
from nxt.sensor.generic import Touch

# Определяем кирпич, мотор и кнопку:
brick = find_one_brick()
motor = nxt.Motor(brick, nxt.PORT_B)
sensor = Touch(brick, nxt.PORT_1)

# "Мотор запаркован" у нас будет означать, что
# кочерга мотора находится в нижнем положении:
is_parked = False
while True:
    if sensor.is_pressed():
        # Если кнопка нажата, ждем недолго и крутим мотор,
        # чтобы освободить кнопку:
        sleep(1)
        motor.turn(-20, 40, False)
        is_parked = False
    elif not is_parked:
        # Если кнопка отжата, но мотор не запаркован,
        # паркуем:
        motor.turn(20, 40, False)
        is_parked = True
    sleep(0.1)
Exemplo n.º 3
0
class Robot(object):
    r'''A high-level controller for the Alpha Rex model.

        This class implements methods for the most obvious actions performable
        by Alpha Rex, such as walk, wave its arms, and retrieve sensor samples.
        Additionally, it also allows direct access to the robot's components
        through public attributes.
    '''
    def __init__(self, brick='NXT'):
        r'''Creates a new Alpha Rex controller.

            brick
                Either an nxt.brick.Brick object, or an NXT brick's name as a
                string. If omitted, a Brick named 'NXT' is looked up.
        '''
        if isinstance(brick, basestring):
            brick = find_one_brick(name=brick)

        self.brick = brick
        self.leftMotor = Motor(brick, PORT_B)
        self.rightMotor = Motor(brick, PORT_C)
        self.motors = [self.leftMotor, self.rightMotor]

        self.touch = Touch(brick, PORT_3)
        #self.sound = Sound(brick, PORT_2)
        #self.light = Light(brick, PORT_3)
        self.ultrasonic = Ultrasonic(brick, PORT_4)

    def WarningNoise(self):
        self.brick.play_tone_and_wait(FREQ_E, 100)
        self.brick.play_tone_and_wait(FREQ_D, 100)
        self.brick.play_tone_and_wait(FREQ_C, 100)

    def OkNoise(self):
        self.brick.play_tone_and_wait(FREQ_C, 100)
        self.brick.play_tone_and_wait(FREQ_D, 100)
        self.brick.play_tone_and_wait(FREQ_E, 100)

    def StartWalk(self, power):
        for motor in self.motors:
            motor.run(power=power)

    def StopWalk(self):
        for motor in self.motors:
            motor.idle()

    def walk(self, secs, power=FORTH):
        self.StartWalk(power)
        sleep(secs)
        self.StopWalk()


    def IsButtonPressed(self):
        r'''Reads the Touch sensor's output.
        '''
        return self.touch.get_sample()

    def turn(self, direction, degrees):
        if (direction == RobotMode.Left):
            self.leftMotor.turn(-100, degrees)
            self.rightMotor.turn(100, degrees)
        else:
            self.rightMotor.turn(-100, degrees)
            self.leftMotor.turn(100, degrees)

    def getDistanceFromObstacle(self):
        return self.ultrasonic.get_sample()