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' })
def intro_sound(): player = Sound() player.play_tone(500, 0.5, delay=0.0, volume=100, play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
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')
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)
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)
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
#!/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)
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)
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)
#!/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
#!/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)
#!/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초간 재생
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()
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)
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, ), ()],
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)
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)
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)
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))
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)
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")
#!/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!')
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)