Esempio n. 1
0
    def test_play_tone(self):
        spkr = Sound()
        spkr.connector.play_actual_sound = False
        spkr.play_tone(500, duration=0.3, volume=50, play_type=1)
        sleep(0.3)  # prevents call order switches
        spkr.play_tone(1500, duration=0.4, volume=50, play_type=0)

        self.assertEqual(len(self.clientSocketMock.mock_calls), 2)
        fn_name, args, kwargs = self.clientSocketMock.mock_calls[0]
        self.assertEqual(fn_name, 'send_command')
        self.assertDictEqual(
            args[0].serialize(), {
                'type': 'SoundCommand',
                'duration': 0.3,
                'message': 'Playing note with frequency: 500',
                'soundType': 'note'
            })

        fn_name, args, kwargs = self.clientSocketMock.mock_calls[1]
        self.assertEqual(fn_name, 'send_command')
        self.assertDictEqual(
            args[0].serialize(), {
                'type': 'SoundCommand',
                'duration': 0.4,
                'message': 'Playing note with frequency: 1500',
                'soundType': 'note'
            })
Esempio n. 2
0
def intro_sound():
    player = Sound()
    player.play_tone(500,
                     0.5,
                     delay=0.0,
                     volume=100,
                     play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
Esempio n. 3
0
def trytospeak():
    sound = Sound()
    #play a standard beep
    sound.beep()

    sleep(2)  # pause for 2 seconds

    # Play a SINGLE 2000 Hz tone for 1.5 seconds
    sound.play_tone(2000, 1.5)

    sleep(2)

    # Play a SEQUENCE of tones
    sound.tone([(200, 2000, 400), (800, 1800, 2000)])

    sleep(2)

    # Play a 500 Hz tone for 1 second and then wait 0.4 seconds
    # before playing the next tone
    # Play the tone three times
    sound.tone([(500, 1000, 400)] * 3)

    sleep(2)

    #text to speech
    sound.speak('Hello, my name is E V 3!')
    sound.speak('watch me talk')
Esempio n. 4
0
def mario():
    sound = Sound()

    sound.play_tone(1500, 0.1)
    sound.play_tone(1500, 0.1)
    sleep(0.2)
    sound.play_tone(1500, 0.1)
    sleep(0.1)
    sound.play_tone(1000, 0.1)
    sound.play_tone(1500, 0.1)
    sleep(0.2)
    sound.play_tone(2000, 0.1)
    sleep(0.3)
    sound.play_tone(500, 0.1)
Esempio n. 5
0
    def test_play_tone(self):
        flip = 1

        s = Sound()
        tank_drive = MoveTank(OUTPUT_A, OUTPUT_D)

        for x in range(4):
            flip *= -1
            tank_drive.on_for_seconds(SpeedPercent(30 * flip),
                                      SpeedPercent(30 * flip), 1, True, True)
            s.play_tone(500, duration=2, volume=50, play_type=1)
        sleep(3)

        for x in range(4):
            flip *= -1
            tank_drive.on_for_seconds(SpeedPercent(30 * flip),
                                      SpeedPercent(30 * flip), 1, True, True)
            s.play_tone(500, duration=2, volume=50, play_type=0)
        sleep(3)
Esempio n. 6
0
def distance_to_beacon():
    sound = Sound()
    ir = InfraredSensor()

    while True:
        for i in range(10):
            # try replacing with ir.distance(), ir.heading()
            # or ir.heading_and_distance()
            distance = ir.heading_and_distance()
            if distance == None:
                # distance() returns None if no beacon detected
                print('Beacon off?', end=' ')
                print('Beacon off?', end=' ', file=stderr)
            else:
                # print to EV3 LCD screen
                # print a space instead of starting a new line
                print(distance, end=' ')
                # print to VS Code output panel
                print(distance, end=' ', file=stderr)
                sound.play_tone(1800 - 10 * distance, 0.4)
            sleep(0.5)
        print('')  # start new line on EV3 screen
        print('', file=stderr)  # start new line in VS Code
Esempio n. 7
0
#!/usr/bin/env python3
from ev3dev2.sound import Sound
sound = Sound()
sound.play_tone(330, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(392, 0.5)
sound.play_tone(330, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(392, 0.5)
sound.play_tone(440, 0.25)
sound.play_tone(440, 0.25)
sound.play_tone(440, 0.25)
sound.play_tone(440, 0.25)
sound.play_tone(440, 0.75)
sound.play_tone(0, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(392, 0.25)
sound.play_tone(349, 0.25)
sound.play_tone(349, 0.25)
sound.play_tone(349, 0.25)
sound.play_tone(349, 0.25)
sound.play_tone(330, 0.25)
sound.play_tone(330, 0.25)
sound.play_tone(330, 0.25)
sound.play_tone(330, 0.25)
sound.play_tone(330, 0.75)
sound.play_tone(0, 0.25)
sound.play_tone(330, 0.25)
sound.play_tone(392, 0.25)
Esempio n. 8
0
class Robot:
    """Robot class structure for running a course.

    """
    def __init__(self):
        """Initialize robot's sensors and define distances and color ranges.
        """
        self.tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)
        self.color_sensor = ColorSensor()
        self.ultrasonic = UltrasonicSensor()
        self.sound = Sound()
        self.tile_length = 200
        self.sensor_dist = 86
        # Ranges for color intensities
        self.black_range = range(0, 30)
        self.white_range = range(30, 100)

    def move_degrees(self, degrees, speed=20):
        """ Turn wheels a set number of degrees.

        :param degrees: Degrees to turn the wheels.
        :param speed: Power with which wheels turn.
        """
        if degrees >= 0:
            self.tank_pair.on_for_degrees(left_speed=speed,
                                          right_speed=speed,
                                          degrees=degrees)
        else:
            self.tank_pair.on_for_degrees(left_speed=-speed,
                                          right_speed=-speed,
                                          degrees=-degrees)

    def on(self, speed=20):
        """ Turn the motors on.

        :param speed: Power with which wheels turn.
        """
        self.tank_pair.on(left_speed=speed, right_speed=speed)

    def off(self):
        """Turn the motors off.
        """
        self.tank_pair.off()

    def on_white(self):
        """Return whether the color sensor senses white.

        :return: Whether the color sensor senses white.
        """
        return self.color_sensor.reflected_light_intensity in self.white_range

    def on_black(self):
        """Return whether the color sensor senses black.

        :return: Whether the color sensor senses black.
        """
        return self.color_sensor.reflected_light_intensity in self.black_range

    def skip_white(self, speed=20):
        """Drive while robot senses white.

        :param speed: Power with which wheels turn
        """
        self.on(speed=speed)
        while self.on_white():
            pass
        self.off()

    def skip_black(self, speed=20):
        """Drive while robot senses black.

        :param speed: Power with which wheels turn.
        """
        self.on(speed=speed)
        while self.on_black():
            pass
        self.off()

    def turn(self, degrees, speed=20):
        """Turn robot a number of degrees.

        :param degrees: Degrees to rotate the robot.
        :param speed: Power with which wheels turn.
        """
        if degrees >= 0:
            self.tank_pair.on_for_degrees(left_speed=speed,
                                          right_speed=-speed,
                                          degrees=degrees * 1.987)
        else:
            self.tank_pair.on_for_degrees(left_speed=-speed,
                                          right_speed=speed,
                                          degrees=-degrees * 1.987)

    def run(self):
        """Run robot through course.
        """
        self.initialize_start()
        self.count_tiles()
        self.bump_tower()

    def initialize_start(self):
        """Move robot from start to first black tile.
        """
        self.move_degrees(80)
        self.skip_black()
        self.skip_white()
        self.move_degrees(self.tile_length / 2 + self.sensor_dist)
        self.turn(degrees=90)
        self.skip_white(speed=-20)
        self.skip_black(speed=-20)
        self.skip_white()

    def count_tiles(self):
        """Move across 15 black tiles while counting
        """
        tile_count = 0
        turn_angle = 0
        prev_turn_angle = 0

        while tile_count < 14:
            tile_count += 1
            self.sound.play_tone(100 + (50 * tile_count), 0.5)
            self.move_degrees(135)

            self.turn(90)
            right_is_black_1 = self.on_black()
            self.move_degrees(40)
            right_is_black_2 = self.on_black()
            self.move_degrees(-40)
            self.turn(-180)
            left_is_black_1 = self.on_black()
            self.move_degrees(40)
            left_is_black_2 = self.on_black()
            self.move_degrees(-40)
            self.turn(90)

            turn_angle = self.get_angle_from_color(left_is_black_2,
                                                   left_is_black_1,
                                                   right_is_black_1,
                                                   right_is_black_2)
            if prev_turn_angle > 0 and turn_angle > 0:
                turn_angle = 3.5
            elif prev_turn_angle < 0 and turn_angle < 0:
                turn_angle = -3.5
            elif turn_angle == 0:
                self.turn(-prev_turn_angle, speed=8)
            self.turn(turn_angle, speed=8)
            prev_turn_angle = turn_angle

            self.skip_black()
            self.skip_white()

        tile_count += 1
        self.sound.play_tone(100 + (50 * tile_count), 0.5)
        self.move_degrees(self.tile_length)

    def get_angle_from_color(self, left2, left1, right1, right2):
        """Get adjustment angle from color readings.

        :param left2: Whether left outer color is black.
        :param left1: Whether left inner color is black.
        :param right1: Whether right inner color is black.
        :param right2: Whether right outer color is black.
        :return: Angle to adjust by.
        """
        # treat color booleans as a binary number to get an index in angle_list
        index = 0
        if left2:
            index += 8
        if left1:
            index += 4
        if right1:
            index += 2
        if right2:
            index += 1

        angle_list = [
            0, -7, 3.5, 7, -3.5, -7, 0, 3.5, 7, 0, 7, 7, -7, -7, -3.5, 0
        ]
        return angle_list[index]

    def turn_370(self):
        """Turn robot 370 degrees.
        """
        self.turn(degrees=370)

    def search_for_tower(self):
        """Point robot at tower.

        :return: Distance to tower.
        """
        min_dist = 255
        start_time = time.time()
        min_time = start_time
        turn_thread = Thread(target=self.turn_370)
        turn_thread.start()
        while turn_thread.is_alive():
            cur_dist = self.ultrasonic.distance_centimeters
            if cur_dist < min_dist:
                min_dist = cur_dist
                min_time = time.time()
        end_time = time.time()
        self.turn(degrees=-370)
        self.turn(degrees=370 * (min_time - start_time) /
                  (end_time - start_time))
        return min_dist

    def cm_to_degrees(self, cm):
        """Convert cm to degrees.

        :param cm: Amount to convert.
        :return: Amount in degrees.
        """
        return (360 / (6 * math.pi)) * cm

    def bump_tower(self):
        """Find tower and knock it off its base.
        """
        self.turn(degrees=90)
        self.move_degrees(self.tile_length * 18)

        while True:
            distance = self.search_for_tower()
            if distance / 2 <= 20:
                self.move_degrees(self.cm_to_degrees(distance - 20))
                self.search_for_tower()
                break
            self.move_degrees(self.cm_to_degrees(distance / 2))

        self.move_degrees(self.cm_to_degrees(10), speed=20)
        for i in range(40, 101, 10):
            self.move_degrees(self.tile_length * 2, speed=i)
            self.move_degrees(-self.tile_length, speed=50)
        for i in range(5):
            self.move_degrees(self.tile_length * 2, speed=100)
            self.move_degrees(-self.tile_length, speed=50)
        self.on(speed=100)
        time.sleep(5)
        self.off()
        self.sound.play_tone(400, 1)
Esempio n. 9
0
class MindstormsGadget(AlexaGadget):
    """
    A Mindstorms gadget that operates a lego safe.
    """
    def __init__(self, passwordFile):
        """
        Performs Alexa Gadget initialization routines and ev3dev resource allocation.
        """
        super().__init__()

        # Ev3dev initialization
        self.leds = Leds()
        self.sound = Sound()
        self.safe = access.Safe()
        self.passwordFile = passwordFile
        with open(passwordFile, "r") as f:
            self.password = f.read().strip()

    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", "GREEN")
        self.leds.set_color("RIGHT", "GREEN")
        logger.info("{} connected to Echo device".format(self.friendly_name))
        self.sound.speak("connected to echo device")

    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")
        logger.info("{} disconnected from Echo device".format(
            self.friendly_name))
        self.sound.speak("disconnected from echo device")

    def on_custom_smartsafe_gadget_control(self, directive):
        """
        Handles the Custom.Smartsafe.Gadget control directive.
        :param directive: the custom directive with the matching namespace and name
        """
        try:
            payload = json.loads(directive.payload.decode("utf-8"))
            print("Control payload: {}".format(payload), file=sys.stderr)
            control_type = payload["type"]

            # Handle the open command
            if control_type == "open":
                if payload["pass"] == self.password:
                    self.sound.play_tone(700, 0.3)
                    self.safe.open()
                else:
                    self.sound.play_tone(200, 0.5)

            # Handle the close command
            if control_type == "close":
                self.sound.play_tone(700, 0.3)
                self.safe.close()

            # Handle the change password command
            if control_type == "change_password":
                if payload["oldpass"] == self.password:
                    self.password = payload["newpass"]
                    with open(self.passwordFile, "w") as f:
                        f.write(self.password)
                    self.sound.play_tone(700, 0.3)
                else:
                    self.sound.play_tone(200, 0.5)

            # Handle the history command (not implemented)
            if control_type == "history":
                self.sound.speak("Warning: history " + payload["count"] +
                                 " not implemented.")

            # Handle the say command
            if control_type == "say":
                self.sound.speak(payload["text"])

            # Handle the control command (used for debugging)
            if control_type == "control":
                verb = payload["verb"]
                if payload["pass"] == self.password:
                    self.sound.play_tone(700, 0.3)
                    if verb in verbs:
                        self.sound.speak(verbs[verb])
                    else:
                        self.sound.speak("control verb " + verb +
                                         " not recognized.")
                    if verb == "0":
                        os.system("echo maker | sudo -S shutdown now")
                    elif verb == "1":
                        os.system("echo maker | sudo -S reboot now")
                    elif verb == "2":
                        os.system("/home/robot/alexa/smartSafe/_disable.sh")
                    elif verb == "3":
                        os.system("/home/robot/alexa/smartSafe/_display.sh")
                    elif verb == "4":
                        os.system("/home/robot/alexa/smartSafe/_nodisplay.sh")
                else:
                    self.sound.play_tone(200, 0.5)

        except KeyError:
            print("Missing expected parameters: {}".format(directive),
                  file=sys.stderr)
Esempio n. 10
0
#!/usr/bin/env python3 
import time
from ev3dev2.motor import LargeMotor, OUTPUT_B, OUTPUT_C, OUTPUT_D, SpeedPercent, MoveTank, MediumMotor
from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4
from ev3dev2.sensor.lego import ColorSensor, GyroSensor
import ev3dev2.fonts as fonts
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from ev3dev2.display import Display
btn = Button()
color = ColorSensor(INPUT_4)
tank_drive = MoveTank(OUTPUT_B, OUTPUT_C)  #This is the template whenever we code
gyro = GyroSensor(INPUT_1)
Sound_ = Sound()
Display_ = Display()
Sound_.play_tone(frequency=400, duration=0.5, volume=50) #plays a note so we know when the code starts
#------------------------------------------------Distance conversion--------------------------------------------------------------------------------
# Distance Conversion
wheelDiameter_mm = 56 # Look at the first number on the NUMBERxNUMBER on wheel
wheelCircumference_cm = (wheelDiameter_mm/10) * 3.14159265358979323846284338 # Convert to cm and multiply by pi for circumference
wheelCircumference_in = (wheelDiameter_mm/25.4) * 3.14159265358979323846284338 # Convert to in and multiply by pi for circumference
# inches to rotations:
# example: drive.on_for_rotations(SpeedPercent(100), SpeedPrecent(100), inToRotations(5))
# to go 5 inches
def inToRotations(inches):
    return inches/wheelCircumference_in
# centimeters to rotations:
# example: drive.on_for_rotations(SpeedPercent(100), SpeedPrecent(100), cmToRotations(5))
# to go 5 centimeters
def cmToRotations(cm):
    return cm/wheelCircumference_cm
Esempio n. 11
0
#!/usr/bin/env python3
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.sound import Sound
from time import sleep

cl = ColorSensor()
sound = Sound()

while True:
    freq = 110 * 2**(cl.ambient_light_intensity / 12)
    sound.play_tone(frequency=freq, duration=0.5)
    sleep(0.1)
Esempio n. 12
0
#!/usr/bin/env python3
from ev3dev2.sound import Sound
sound = Sound()
sound.beep()  # 비프 음 재생#!/usr/bin/env python3
from ev3dev2.sound import Sound
sound = Sound()
sound.play_tone(700, 1)  #700Hz 주파수 1초간 재생
Esempio n. 13
0
from ev3dev2.sound import Sound
from time import sleep

sound = Sound()
sound.play_tone(1500, 2)

sound.play_file('/home/robot/sounds/Dog bark 1.wav')
sound.beep()

import spockbots.robot as robot


def run_test1():

    robot.beep()
    robot.led("LEFT", "RED")
    robot.led("RIGHT", "YELLOW")

    robot.flash()
    robot.sleep(1)
    robot.beep()
Esempio n. 14
0
 def press_tone(self):
     player = Sound()
     player.play_tone(750, 0.2, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
     player.play_tone(1250, 0.2, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
Esempio n. 15
0
    s.beep(play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
sleep(3)

for x in range(4):
    drive()
    s.speak("testjes tests tests tests")
sleep(3)
for x in range(4):
    drive()
    s.speak("testjes tests tests tests",
            play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
sleep(3)

for x in range(4):
    drive()
    s.play_tone(500, duration=2, volume=50, play_type=1)
sleep(3)

for x in range(4):
    drive()
    s.play_tone(500, duration=2, volume=50, play_type=0)
sleep(3)

for x in range(4):
    drive()
    s.tone([(392, 350, 100), (492, 350), (292, ), ()])
sleep(3)

for x in range(4):
    drive()
    s.tone([(392, 350, 100), (492, 350), (292, ), ()],
Esempio n. 16
0
sound.speak("O, A, O, A")

print("OKOKOKOKOKOKOKOKOKOKOK")
'''
while True:
    if ts.is_pressed:
        mt.off()
        break
    if btn.check_buttons(buttons=['up']):
        mt.on(-50, -50)
    elif btn.check_buttons(buttons=['up']) == False:
        mt.off()
'''
ts.wait_for_bump()
sound.play_tone(2500, 0.1) 





os.system("echo 0 > RESTART_TRAFFIC_LIGHT")
print("RESTART_TRAFFIC_LIGHT")


'''
sleep(0.1)
os.system("echo 0 > RESTART_TRAFFIC_LIGHT")


sleep(2)
Grabber_angle = 1000
Jack_angle = 3.9
speed = -100
balance_ang_limit = 35 * math.pi / 180  # allowed balancing angle limit in degrees each side
balance_x_limit = 1.2  # allowed horizontal movement of cart in x10 cms each side
readings = 500
episodes = 2

summary = []  # To store the Balance time and average loop latency

try:
    for episode in range(501):
        record_latency = [
        ]  # container -- [iteration, loop_t, N_t, A_t, G_t, Us_t, S_t, Ns_t, App_t]
        print('######## Episode : ', episode, ' ########')
        audio.play_tone(4000, 0.1, volume=1, play_type=0)

        init(drive, 'drive')
        init(grabber, 'grabber')
        init(jack, 'jack')
        reference_dist = init(U, 'U')
        record_transitions = [
        ]  # container -- [state, action, reward, state_next, terminal, run]

        # audio.speak('Initialized',volume=50)
        audio.play_tone(3000, 0.05, volume=1, play_type=0)

        # Close and open the grabber
        grabber.on_for_degrees(-70, Grabber_angle, brake=True, block=True)

        sleep(1)
Esempio n. 18
0
 def error_tone(self):
     player = Sound()
     player.play_tone(750, 0.2, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
     player.play_tone(250, 0.3, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
     player.play_tone(750, 0.5, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
     player.play_tone(250, 0.7, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
Esempio n. 19
0
from ev3dev2.sensor.lego import TouchSensor, UltrasonicSensor
from ev3dev2.sound import Sound
from time import sleep

us = UltrasonicSensor()
us.mode = 'US-DIST-CM'
ts = TouchSensor()
sound = Sound()
tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)
#tank_pair.on(left_speed=30, right_speed=30)
tank_pair.on_for_seconds(left_speed=-50,
                         right_speed=-25,
                         seconds=1.6,
                         brake=True,
                         block=True)
tank_pair.on(left_speed=25, right_speed=50)
while True:
    Distance = us.value() / 10
    if Distance < 7:
        tank_pair.off(brake=True)
        sleep(1)
        sound.play_tone(440, 1)
        tank_pair.on_for_seconds(left_speed=-50,
                                 right_speed=-50,
                                 seconds=1,
                                 brake=True,
                                 block=True)
        break
    else:
        sleep(0.01)
Esempio n. 20
0
from ev3dev2.button import Button
from ev3dev2.sound import Sound
from ev3dev2.display import Display
import time
import sys

btn = Button()  # variable so we can get buttons pressed on EV3
color = ColorSensor(INPUT_4)  # color sensor for checking attachment color
tank_drive = MoveTank(
    OUTPUT_B, OUTPUT_C)  # Creates a variable so we can control the drivetrain
motorA = MediumMotor(OUTPUT_A)  # left medium motor
motorD = MediumMotor(OUTPUT_D)  # right medium motor
gyro = GyroSensor(INPUT_1)  # gyro variable
Sound_ = Sound()  # beepity beep
Display_ = Display()  # for displaying text
Sound_.play_tone(frequency=400, duration=0.5,
                 volume=50)  #plays a note so we know when the code starts
#---------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------Distance conversion--------------------------------------------------------------------------------
# Distance Conversion
wheelDiameter_mm = 56  # Look at the first number on the NUMBERxNUMBER on wheel
wheelCircumference_cm = (
    wheelDiameter_mm / 10
) * 3.14159265358979323846284338  # Convert to cm and multiply by pi for circumference
wheelCircumference_in = (
    wheelDiameter_mm / 25.4
) * 3.14159265358979323846284338  # Convert to in and multiply by pi for circumference


# inches to rotations:
# example: drive.on_for_rotations(SpeedPercent(100), SpeedPrecent(100), inToRotations(5))
Esempio n. 21
0
def test():

    sounds = Sound()

    sounds.set_volume(100)

    sounds.beep()

    sounds.play_tone(300, 0.2)
    sleep(1)
    sounds.play_tone(500, 0.2)
    sleep(1)

    sounds.speak('start runing:')

    sleep(1)

    sounds.play_song((
        ('D4', 'e3'),  # intro anacrouse
        ('D4', 'e3'),
        ('D4', 'e3'),
        ('G4', 'h'),  # meas 1
        ('D5', 'h'),
        ('C5', 'e3'),  # meas 2
        ('B4', 'e3'),
        ('A4', 'e3'),
        ('G5', 'h'),
        ('D5', 'q'),
        ('C5', 'e3'),  # meas 3
        ('B4', 'e3'),
        ('A4', 'e3'),
        ('G5', 'h'),
        ('D5', 'q'),
        ('C5', 'e3'),  # meas 4
        ('B4', 'e3'),
        ('C5', 'e3'),
        ('A4', 'h.'),
    ))

    sleep(1)

    sounds.tone([(392, 350, 100), (392, 350, 100), (392, 350, 100),
                 (311.1, 250, 100), (466.2, 25, 100), (392, 350, 100),
                 (311.1, 250, 100), (466.2, 25, 100), (392, 700, 100),
                 (587.32, 350, 100), (587.32, 350, 100), (587.32, 350, 100),
                 (622.26, 250, 100), (466.2, 25, 100), (369.99, 350, 100),
                 (311.1, 250, 100), (466.2, 25, 100), (392, 700, 100),
                 (784, 350, 100), (392, 250, 100), (392, 25, 100),
                 (784, 350, 100), (739.98, 250, 100), (698.46, 25, 100),
                 (659.26, 25, 100), (622.26, 25, 100), (659.26, 50, 400),
                 (415.3, 25, 200), (554.36, 350, 100), (523.25, 250, 100),
                 (493.88, 25, 100), (466.16, 25, 100), (440, 25, 100),
                 (466.16, 50, 400), (311.13, 25, 200), (369.99, 350, 100),
                 (311.13, 250, 100), (392, 25, 100), (466.16, 350, 100),
                 (392, 250, 100), (466.16, 25, 100), (587.32, 700, 100),
                 (784, 350, 100), (392, 250, 100), (392, 25, 100),
                 (784, 350, 100), (739.98, 250, 100), (698.46, 25, 100),
                 (659.26, 25, 100), (622.26, 25, 100), (659.26, 50, 400),
                 (415.3, 25, 200), (554.36, 350, 100), (523.25, 250, 100),
                 (493.88, 25, 100), (466.16, 25, 100), (440, 25, 100),
                 (466.16, 50, 400), (311.13, 25, 200), (392, 350, 100),
                 (311.13, 250, 100), (466.16, 25, 100), (392.00, 300, 150),
                 (311.13, 250, 100), (466.16, 25, 100), (392, 700)])

    sounds.play_file('resources/xiaohuamao.wav')

    sleep(2)
Esempio n. 22
0
 def menu_tone(self):
     player = Sound()
     player.play_tone(1000, 0.5, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
class Robot:
    def __init__(self):
        self.tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)
        self.color_sensor = ColorSensor()
        self.ultrasonic = UltrasonicSensor()
        self.sound = Sound()
        self.tile_length = 200
        # Ranges for color intensities
        self.black_range = range(0, 30)
        self.white_range = range(30, 100)
        self.sensor_dist = 86

    def move_degrees(self, degrees, speed=20):
        if degrees >= 0:
            self.tank_pair.on_for_degrees(left_speed=speed,
                                          right_speed=speed,
                                          degrees=degrees)
        else:
            self.tank_pair.on_for_degrees(left_speed=-speed,
                                          right_speed=-speed,
                                          degrees=-degrees)

    def steer_on(self, steering, speed=20):
        if steering >= 0:
            self.tank_pair.on(left_speed=speed, right_speed=0)
        else:
            self.tank_pair.on(left_speed=0, right_speed=speed)

    def on(self, speed=20):
        self.tank_pair.on(left_speed=speed, right_speed=speed)

    def off(self):
        self.tank_pair.off()

    def on_white(self):
        return self.color_sensor.reflected_light_intensity in self.white_range

    def on_black(self):
        return self.color_sensor.reflected_light_intensity in self.black_range

    def skip_white(self, speed=20):
        self.on(speed=speed)
        while self.on_white():
            pass
        self.off()

    def skip_black(self, speed=20):
        self.on(speed=speed)
        while self.on_black():
            pass
        self.off()

    def turn(self, degrees, speed=20):
        if degrees >= 0:
            self.tank_pair.on_for_degrees(left_speed=speed,
                                          right_speed=-speed,
                                          degrees=degrees * 1.987)
        else:
            self.tank_pair.on_for_degrees(left_speed=-speed,
                                          right_speed=speed,
                                          degrees=-degrees * 1.987)

    def run(self):
        self.on(speed=80)
        while True:
            pass

    def initialize_start(self):
        self.move_degrees(80)
        self.skip_black()
        self.skip_white()
        self.move_degrees(self.tile_length / 2 + self.sensor_dist)
        self.turn(degrees=90)
        self.skip_black(speed=-20)
        self.skip_white()

    def count_tiles(self):
        tile_count = 0
        turn_angle = 0
        prev_turn_angle = 0
        robot_angle = 0

        while tile_count < 14:
            tile_count += 1
            self.sound.play_tone(100 + (50 * tile_count), 0.5)
            self.move_degrees(120)

            self.turn(90)
            self.move_degrees(40)
            right_is_white = self.on_white()
            self.move_degrees(-40)
            self.turn(-180)
            self.move_degrees(40)
            left_is_white = self.on_white()
            self.move_degrees(-40)
            self.turn(90)

            if left_is_white and not (right_is_white):
                turn_angle = 7
            elif not (left_is_white) and right_is_white:
                turn_angle = -7
            else:
                turn_angle = 0
                self.turn(-prev_turn_angle)
            if abs(robot_angle + turn_angle) >= 14:
                turn_angle /= 2
            self.turn(turn_angle)
            robot_angle += turn_angle
            prev_turn_angle = turn_angle

            self.skip_black()
            self.skip_white()

        tile_count += 1
        self.sound.play_tone(100 + (50 * tile_count), 0.5)
        self.move_degrees(-self.tile_length * 0.5)

    def cm_to_degrees(self, cm):
        return (360 / (6 * math.pi)) * cm

    def turn_360(self):
        self.turn(degrees=360)

    # point robot towards tower; return distance in cm
    def search_for_tower(self):
        min_dist = 255
        start_time = time.time()
        min_time = start_time
        turn_thread = Thread(target=self.turn_360)
        turn_thread.start()
        while turn_thread.is_alive():
            cur_dist = self.ultrasonic.distance_centimeters
            if cur_dist < min_dist:
                min_dist = cur_dist
                min_time = time.time()
        end_time = time.time()
        self.turn(degrees=-360)
        self.turn(degrees=360 * (min_time - start_time) /
                  (end_time - start_time))
        return min_dist

    def bump_tower(self):
        self.turn(degrees=90)
        self.move_degrees(self.tile_length * 18)

        while True:
            distance = self.search_for_tower()
            if distance / 2 <= 20:
                self.move_degrees(self.cm_to_degrees(distance - 20))
                self.search_for_tower()
                break
            self.move_degrees(self.cm_to_degrees(distance / 2))

        self.on(speed=100)
        time.sleep(5)
        self.off()
        self.sound.speak("Mission Completed")
Esempio n. 24
0
#!/usr/bin/env python3
from ev3dev2.sound import Sound
from time import sleep

sound = Sound()

#play a standard beep
sound.beep()
sleep(2)  # pause for 2 seconds

# Play a SINGLE 2000 Hz tone for 1.5 seconds
sound.play_tone(2000, 1.5)
sleep(2)

# Play a SEQUENCE of tones
sound.tone([(200, 2000, 400), (800, 1800, 2000)])
sleep(2)

# Play a 500 Hz tone for 1 second and then wait 0.4 seconds
# before playing the next tone
# Play the tone three times
# [(500, 1000, 400)] * 3 is the same as
# [(500, 1000, 400), (500, 1000, 400), (500, 1000, 400)]
sound.tone([(500, 1000, 400)] * 3)
sleep(2)

#text to speech
sound.speak('Hello, my name is E V 3!')
Esempio n. 25
0
leds = Leds()
sound = Sound()
while loop:
    if btn.left == True:
        leds.set_color('LEFT', 'RED')
    elif btn.right == True:
        leds.set_color('RIGHT', 'RED')
    elif btn.up == True:
        leds.set_color('RIGHT', 'YELLOW')
    elif btn.down == True:
        leds.set_color('LEFT', 'AMBER')
    elif btn.enter == True:
        loop = False
    else:
        print('Do something!')
sound.play_tone(1500, 1)
sleep(0.5)
sound.play_tone(1400, 1)
sleep(0.5)
sound.play_tone(1300, 1)
sleep(0.5)
sound.play_tone(1400, 1)
sleep(0.5)
sound.play_tone(1500, 1)
sleep(0.5)
sound.play_tone(1500, 1)
sleep(0.5)
sound.play_tone(1500, 1)
sleep(0.5)
sound.play_tone(1400, 1)
sleep(0.5)