class CuriosityRov3r(IRBeaconRemoteControlledTank): def __init__( self, left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C, medium_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_motor_port, right_motor_port=right_motor_port, ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel) self.medium_motor = MediumMotor(address=medium_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.dis = Display() self.noise = Sound() def spin_fan(self, speed: float = 100): if self.color_sensor.reflected_light_intensity > 20: self.medium_motor.on( speed=speed, brake=False, block=False) else: self.medium_motor.off(brake=True) def say_when_touched(self): if self.touch_sensor.is_pressed: self.dis.image_filename( filename='/home/robot/image/Angry.bmp', clear_screen=True) self.dis.update() self.noise.play_file( wav_file='/home/robot/sound/No.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.medium_motor.on_for_seconds( speed=-50, seconds=3, brake=True, block=True) def main(self, speed: float = 100): while True: self.drive_once_by_ir_beacon(speed=speed) self.say_when_touched() self.spin_fan(speed=speed)
class Ev3rstorm(IRBeaconRemoteControlledTank): def __init__( self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, motor_class=LargeMotor, ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel) self.bazooka_blast_motor = MediumMotor(address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.screen = Display() self.speaker = Sound() def blast_bazooka_if_touched(self): if self.touch_sensor.is_pressed: if self.color_sensor.ambient_light_intensity < 5: # 15 not dark enough self.speaker.play_file( wav_file='/home/robot/sound/Up.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations( speed=100, rotations=-3, brake=True, block=True) else: self.speaker.play_file( wav_file='/home/robot/sound/Down.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations( speed=100, rotations=3, brake=True, block=True) self.touch_sensor.wait_for_released() def main(self, driving_speed: float = 100): self.screen.image_filename( filename='/home/robot/image/Target.bmp', clear_screen=True) self.screen.update() while True: self.drive_once_by_ir_beacon(speed=driving_speed) self.blast_bazooka_if_touched()
class Ev3rstorm(RemoteControlledTank): def __init__(self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_beacon_channel: int = 1): super().__init__(left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, polarity=Motor.POLARITY_NORMAL, speed=1000, channel=ir_beacon_channel) self.bazooka_blast_motor = MediumMotor( address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.screen = Display() self.speaker = Sound() def blast_bazooka_whenever_touched(self): while True: if self.touch_sensor.is_pressed: if self.color_sensor.ambient_light_intensity < 5: # 15 not dark enough self.speaker.play_file( wav_file='/home/robot/sound/Up.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations(speed=100, rotations=-3, brake=True, block=True) else: self.speaker.play_file( wav_file='/home/robot/sound/Down.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations(speed=100, rotations=3, brake=True, block=True) self.touch_sensor.wait_for_released() def main(self): self.screen.image_filename(filename='/home/robot/image/Target.bmp', clear_screen=True) self.screen.update() Thread(target=self.blast_bazooka_whenever_touched, daemon=True).start() super().main() # RemoteControlledTank.main()
def test(): print("start", file=sys.stderr) display = Display() display.draw.rectangle((10, 10, 80, 50), fill='black') #display.draw.bitmap((0,0),im) #显示图片 display.image.paste(Image.open('resources/2019-11-10_00126.png'), (0, 0)) display.update() sleep(5) print("end", file=sys.stderr)
def __init__(self): self.playDebugSound = False self.s = Sound() self.display = Display() self.display.clear() self.colorSensor = ColorSensor(INPUT_2) self.lastColor = 0 self.usSensor = UltrasonicSensor(INPUT_3) self.usSensor.mode = 'US-DIST-CM' self.touchL = TouchSensor(INPUT_1) self.touchR = TouchSensor(INPUT_4)
def main(): snake_body = [[6, 3],[6, 4],[6, 5], [6, 6]] lcd = Display() btn = Button() snake_dir = 0 # 0 stop, 1=up, 2=right, 3=down, 4=left draw_play_field(lcd) rows = 15 columne = 20 s = snake(snake_body) flag = True draw_grid(lcd) while flag: s.draw(lcd) if (btn.up and snake_dir != 3): snake_dir = 1 if (btn.down and snake_dir !=1): snake_dir = 3 if (btn.right and snake_dir !=4): snake_dir = 2 if (btn.left and snake_dir !=2): snake_dir = 4 s.move(snake_dir) time.sleep(0.3) redraw_widow(lcd)
def show_text(string, font_name='courB24', font_width=15, font_height=24): lcd = Display() lcd.clear() strings = wrap(string, width=int(180/font_width)) for i in range(len(strings)): x_val = 89-font_width/2*len(strings[i]) y_val = 63-(font_height+1)*(len(strings)/2-i) lcd.text_pixels(strings[i], False, x_val, y_val, font=font_name) lcd.update()
def __init__(self, config): threading.Thread.__init__(self) self.roboId = config['id'] self.threadID = 1 self.name = 'ui-thread' self.isRunning = True self.messageText = '-' self.statusText = '-' self.powerSupplyText = '-' self.lcd = Display() self.btn = Button() self.sound = Sound() self.leds = Leds() self.theFont = fonts.load(Ui.M_FONT) self.lcd.clear() self.drawText() self.lcd.update()
def __init__( self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, motor_class=LargeMotor, ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel) self.bazooka_blast_motor = MediumMotor(address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.screen = Display() self.speaker = Sound()
def __init__( self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, polarity=Motor.POLARITY_NORMAL, speed=1000, channel=ir_beacon_channel) self.bazooka_blast_motor = MediumMotor(address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.screen = Display() self.speaker = Sound()
def __init__(self): """ Performs Alexa Gadget initialization routines and ev3dev resource allocation. """ super().__init__() # Gadget state self.heel_mode = False self.patrol_mode = False self.sitting = False # Ev3dev initialization self.leds = Leds() self.sound = Sound() # Connect infrared and touch sensors. self.ir = InfraredSensor() self.ts = TouchSensor() # Init display self.screen = Display() self.dance = False self.sound = Sound() self.drive = MoveTank(OUTPUT_B, OUTPUT_C) self.sound.speak('Hello, my name is Beipas!') # Connect medium motor on output port A: self.medium_motor = MediumMotor(OUTPUT_A) # Connect two large motors on output ports B and C: self.left_motor = LargeMotor(OUTPUT_B) self.right_motor = LargeMotor(OUTPUT_C) # Gadget states self.bpm = 0 self.trigger_bpm = "off" self.eyes = True # Start threads threading.Thread(target=self._dance_thread, daemon=True).start() threading.Thread(target=self._patrol_thread, daemon=True).start() threading.Thread(target=self._heel_thread, daemon=True).start() threading.Thread(target=self._touchsensor_thread, daemon=True).start() threading.Thread(target=self._eyes_thread, daemon=True).start()
def __init__(self, sting_motor_port: str = OUTPUT_D, go_motor_port: str = OUTPUT_B, claw_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): self.sting_motor = LargeMotor(address=sting_motor_port) self.go_motor = LargeMotor(address=go_motor_port) self.claw_motor = MediumMotor(address=claw_motor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.dis = Display() self.speaker = Sound()
def __init__( self, left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C, gear_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_motor_port, right_motor_port=right_motor_port, ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel) self.gear_motor = MediumMotor(address=gear_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.speaker = Sound() self.dis = Display(desc='Display')
def show_text(string, font_name='courB24', font_width=15, font_height=24): # A function to show text on the robot's screen '''Function to show a text on EV3 screen. This code is copied from ev3python.com''' lcd = Display() # Defining screen lcd.clear() # Clearing the screen so there isnt already text strings = wrap(string, width=int(180 / font_width)) # for i in range(len(strings)): x_val = 89 - font_width / 2 * len(strings[i]) y_val = 63 - (font_height + 1) * (len(strings) / 2 - i) lcd.text_pixels(strings[i], False, x_val, y_val, font=font_name) lcd.update()
def __init__( self, left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C, medium_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__( left_motor_port=left_motor_port, right_motor_port=right_motor_port, polarity=Motor.POLARITY_NORMAL, speed=1000, channel=ir_beacon_channel) self.medium_motor = MediumMotor(address=medium_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.dis = Display() self.noise = Sound()
def init_hardware(): global button, display, leds, drive, infraredSensor drive = LargeMotor(OUTPUT_B) infraredSensor = InfraredSensor(INPUT_3) infraredSensor.mode = InfraredSensor.MODE_IR_PROX leds = Leds() # ultrasonicSensor = UltrasonicSensor(INPUT_2) # ultrasonicSensor.mode = UltrasonicSensor.MODE_US_DIST_CM display = Display() button = Button() button.on_enter = btn_on_enter
def __init__(self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): self.tank_driver = MoveTank(left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, motor_class=LargeMotor) self.bazooka_blast_motor = MediumMotor( address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.leds = Leds() self.speaker = Sound() self.screen = Display()
def __init__(self, left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C, medium_motor_port: str = OUTPUT_A, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): super().__init__(left_motor_port=left_motor_port, right_motor_port=right_motor_port, ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel) self.medium_motor = MediumMotor(address=medium_motor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.screen = Display(desc='Display') self.speaker = Sound()
def display_different_fonts(): lcd = Display() sound = Sound() def show_for(seconds): lcd.update() sound.beep() sleep(seconds) lcd.clear() # Try each of these different sets: style = 'helvB' #style = 'courB' #style = 'lutBS' y_value = 0 str1 = ' The quick brown fox jumped' str2 = '123456789012345678901234567890' for height in [10, 14, 18, 24]: text = style + str(height) + str1 lcd.text_pixels(text, False, 0, y_value, font=style + str(height)) y_value += height + 1 # short for y_value = y_value+height+1 lcd.text_pixels(str2, False, 0, y_value, font=style + str(height)) y_value += height + 1 show_for(6) strings = [] # create an empty list # Screen width can accommodate 12 fixed # width characters with widths 14 or 15 # 123456789012 strings.append(style + '24 The') strings.append('quick brown ') strings.append('fox jumps ') strings.append('over the dog') strings.append('123456789012') for i in range(len(strings)): lcd.text_pixels(strings[i], False, 0, 25 * i, font=style + '24') show_for(6)
def __init__(Self, WheelDistance, WheelDiameter, TankBase, MedMotors, Ultrasonic, Color1, Color2, Gyro): # WheelDistance and WheelDiameter in cm. # Import the parts of the robot. from ev3dev2.button import Button from ev3dev2.display import Display from ev3dev2.motor import MoveTank, MediumMotor, LargeMotor, SpeedRPS, OUTPUT_A, OUTPUT_B, OUTPUT_C, OUTPUT_D from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4 from ev3dev2.sensor.lego import UltrasonicSensor, ColorSensor, GyroSensor # Define the ports. Ports = { "A": OUTPUT_A, "B": OUTPUT_B, "C": OUTPUT_C, "D": OUTPUT_D, "1": INPUT_1, "2": INPUT_2, "3": INPUT_3, "4": INPUT_4 } # Define the parts of the robot. Self.SpeedRPS = SpeedRPS Self.WheelDistance = WheelDistance Self.WheelCircumference = WheelDiameter * 3.1416 Self.TankBase = MoveTank(Ports[TankBase[0]], Ports[TankBase[1]]) Self.DriveMotor = LargeMotor( Ports[TankBase[0]]) # Used only for sensing degrees. Self.MedMotors = [ MediumMotor(Ports[MedMotors[0]]), MediumMotor(Ports[MedMotors[1]]) ] Self.Ultrasonic = UltrasonicSensor(Ports[Ultrasonic]) Self.Color1 = ColorSensor(Ports[Color1]) Self.Color2 = ColorSensor(Ports[Color2]) Self.Gyro = GyroSensor(Ports[Gyro]) Self.Buttons = Button() Self.LCD = Display() # Lock the medium motors. Self.MotorOff([0]) Self.MotorOff([1])
if testcase == 'test_led': from test_led import test if testcase == 'test_sound': from test_sound import test if testcase == 'test_display': from test_display import test #执行用例 test() exit() disp = Display() leds = Leds() sounds = Sound() #ts = TouchSensor(INPUT_2) sounds.beep() sleep(1) sounds.set_volume(100) sounds.speak(text='1.15') #sounds.speak(text='Welcome to the E V 3 dev project!') sleep(1) exit() ''' console.reset_console()
################################### ### load probot_empty.ttt scene ### ################################### from ev3dev2.display import Display from time import sleep disp = Display() disp.text_grid("0123456789" * 20) sleep(1) disp.text_grid( """Picture yourself in a boat on a river;With tangerine trees and marmalade skies;Somebody calls you, you answer quite slowly;A girl with kaleidoscope eyes""" )
#!/usr/bin/env python3 from sys import stderr from ev3dev2.sensor.lego import TouchSensor from ev3dev2.sensor.lego import Sensor from ev3dev2.sensor import INPUT_1, INPUT_2 from ev3dev2.display import Display lcd = Display() # Connect Pixy camera pixy = Sensor() # Connect TouchSensor ts = TouchSensor(address=INPUT_1) # Set mode pixy.mode = 'ALL' while not ts.value(): lcd.clear() if pixy.value(0) != 0: # Object with SIG1 detected x = pixy.value(1) y = pixy.value(2) w = pixy.value(3) h = pixy.value(4) dx = int(w / 2) # Half of the width of the rectangle dy = int(h / 2) # Half of the height of the rectangle xb = x + int(w / 2) # X-coordinate of bottom-right corner yb = y - int(h / 2) # Y-coordinate of the bottom-right corner lcd.draw.rectangle((dx, dy, xb, yb), fill='black') lcd.update()
from ev3dev2.sensor.lego import GyroSensor 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
#!/usr/bin/env python3 from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C, MoveSteering from ev3dev2.sensor.lego import TouchSensor, UltrasonicSensor from ev3dev2.sound import Sound from ev3dev2.display import Display from ev3dev2.sensor.lego import ColorSensor from textwrap import wrap from threading import Thread #from ev3dev2.led import Leds from time import sleep from ev3dev.ev3 import * ts = TouchSensor() lcd = Display() def show_text(string, font_name='courB24', font_width=15, font_height=24): lcd.clear() strings = wrap(string, width=int(180/font_width)) for i in range(len(strings)): x_val = 89-font_width/2*len(strings[i]) y_val = 63-(font_height+1)*(len(strings)/2-i) lcd.text_pixels(strings[i], False, x_val, y_val, font=font_name) lcd.update() def WaitForBump(): # a 'bump' is a release of the touch sensor button PreviousState=0 while True: CurrentState=ts.value() if PreviousState==1 and CurrentState==0: #button was released break # button has just been released so exit loop PreviousState=CurrentState # Ready for next loop sleep(0.01) # don't read the sensor too frequently
#!/usr/bin/env python3 # (Display not yet working in MicroPython as of 2020) from ev3dev2.motor import LargeMotor, OUTPUT_B, OUTPUT_C, MoveSteering, MoveTank from ev3dev2.display import Display TANK_DRIVER = MoveTank(left_motor_port=OUTPUT_B, right_motor_port=OUTPUT_C, motor_class=LargeMotor) STEER_DRIVER = MoveSteering(left_motor_port=OUTPUT_B, right_motor_port=OUTPUT_C, motor_class=LargeMotor) SCREEN = Display() SCREEN.image_filename(filename='/home/robot/image/Neutral.bmp', clear_screen=True) SCREEN.update() TANK_DRIVER.on_for_rotations(left_speed=75, right_speed=75, rotations=5, brake=True, block=True) SCREEN.image_filename(filename='/home/robot/image/Middle left.bmp', clear_screen=True) SCREEN.update() STEER_DRIVER.on_for_rotations(steering=50, speed=75,
#!/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
ts = TouchSensor(INPUT_3) # define the gyro sensor gy = GyroSensor(INPUT_2) # define the large motor on port B lm_move = LargeMotor(OUTPUT_B) # define the large motor on port D lm_lifter = LargeMotor(OUTPUT_D) # define the midium motor on port A mm_move = MediumMotor(OUTPUT_A) # define the button btn = Button() # define lcd display lcd = Display() # define sound snd = Sound() # define the steps to go, initial value is 0 steps = 1 # Declare function for one step def oneStep(): global gy global ts # reset gyro sensor # gy.reset() gy.mode = 'GYRO-RATE'
class Ev3rstorm: def __init__(self, left_foot_motor_port: str = OUTPUT_B, right_foot_motor_port: str = OUTPUT_C, bazooka_blast_motor_port: str = OUTPUT_A, touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3, ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1): self.tank_driver = MoveTank(left_motor_port=left_foot_motor_port, right_motor_port=right_foot_motor_port, motor_class=LargeMotor) self.bazooka_blast_motor = MediumMotor( address=bazooka_blast_motor_port) self.touch_sensor = TouchSensor(address=touch_sensor_port) self.color_sensor = ColorSensor(address=color_sensor_port) self.ir_sensor = InfraredSensor(address=ir_sensor_port) self.ir_beacon_channel = ir_beacon_channel self.leds = Leds() self.speaker = Sound() self.screen = Display() def drive_once_by_ir_beacon(self, speed: float = 100): # forward if self.ir_sensor.top_left( channel=self.ir_beacon_channel) and self.ir_sensor.top_right( channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=speed, right_speed=speed) # backward elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel ) and self.ir_sensor.bottom_right( channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=-speed, right_speed=-speed) # turn left on the spot elif self.ir_sensor.top_left(channel=self.ir_beacon_channel ) and self.ir_sensor.bottom_right( channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=-speed, right_speed=speed) # turn right on the spot elif self.ir_sensor.top_right( channel=self.ir_beacon_channel) and self.ir_sensor.bottom_left( channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=speed, right_speed=-speed) # turn left forward elif self.ir_sensor.top_left(channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=0, right_speed=speed) # turn right forward elif self.ir_sensor.top_right(channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=speed, right_speed=0) # turn left backward elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=0, right_speed=-speed) # turn right backward elif self.ir_sensor.bottom_right(channel=self.ir_beacon_channel): self.tank_driver.on(left_speed=-speed, right_speed=0) # otherwise stop else: self.tank_driver.off(brake=False) def dance_if_ir_beacon_pressed(self): while self.ir_sensor.beacon(channel=self.ir_beacon_channel): self.tank_driver.on_for_seconds(left_speed=randint(-100, 100), right_speed=randint(-100, 100), seconds=1, brake=False, block=True) def detect_object_by_ir_sensor(self): if self.ir_sensor.proximity < 25: self.leds.animate_police_lights(color1=Leds.ORANGE, color2=Leds.RED, group1=Leds.LEFT, group2=Leds.RIGHT, sleeptime=0.5, duration=5, block=False) self.speaker.play_file(wav_file='/home/robot/sound/Object.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.speaker.play_file(wav_file='/home/robot/sound/Detected.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.speaker.play_file( wav_file='/home/robot/sound/Error alarm.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) else: self.leds.all_off() def blast_bazooka_if_touched(self): if self.touch_sensor.is_pressed: if self.color_sensor.ambient_light_intensity < 5: # 15 not dark enough self.speaker.play_file(wav_file='/home/robot/sound/Up.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations(speed=100, rotations=-3, brake=True, block=True) self.speaker.play_file( wav_file='/home/robot/sound/Laughing 1.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) else: self.speaker.play_file(wav_file='/home/robot/sound/Down.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.bazooka_blast_motor.on_for_rotations(speed=100, rotations=3, brake=True, block=True) self.speaker.play_file( wav_file='/home/robot/sound/Laughing 2.wav', volume=100, play_type=Sound.PLAY_WAIT_FOR_COMPLETE) self.touch_sensor.wait_for_released() def main(self, driving_speed: float = 100): self.screen.image_filename(filename='/home/robot/image/Target.bmp', clear_screen=True) self.screen.update() while True: self.drive_once_by_ir_beacon(speed=driving_speed) self.dance_if_ir_beacon_pressed() # DON'T use IR Sensor in 2 different modes in the same program / loop # - https://github.com/pybricks/support/issues/62 # - https://github.com/ev3dev/ev3dev/issues/1401 # self.detect_object_by_ir_sensor() self.blast_bazooka_if_touched()
from ev3dev2.sound import Sound from ev3dev2.display import Display from PIL import Image import array import random import os #logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)5s: %(message)s') log=logging.getLogger(__name__) log.info("Starting Snake") btn=Button() sound=Sound() display=Display() # declare the variables # direction x: 0-no move; 1-left; -1-right dx=0 # direction y: 0-no move; 1-down; -1-up dy=0 # Set burger position x hx=random.randint(10, 170) # set burger position y hy=random.randint(20, 120) # set the start x position of snake Sx=[80] # set the start y position of snake Sy=[60] # set the start x position of snake
class Ui(threading.Thread): M_FONT = 'helvB12' def __init__(self, config): threading.Thread.__init__(self) self.roboId = config['id'] self.threadID = 1 self.name = 'ui-thread' self.isRunning = True self.messageText = '-' self.statusText = '-' self.powerSupplyText = '-' self.lcd = Display() self.btn = Button() self.sound = Sound() self.leds = Leds() self.theFont = fonts.load(Ui.M_FONT) self.lcd.clear() self.drawText() self.lcd.update() def drawText(self): self.lcd.draw.text((0, 0), 'RoboRinth', font=self.theFont) self.lcd.draw.text((0, 14), 'ID: ' + self.roboId, font=self.theFont) self.lcd.draw.text((0, 28), 'Status: ' + self.statusText, font=self.theFont) self.lcd.draw.text((0, 42), 'Msg: ' + self.messageText, font=self.theFont) # self.lcd.draw.text((0,56), 'Pwr: ' + self.powerSupplyText, font=self.theFont) def run(self): while self.isRunning: self.lcd.clear() self.drawText() self.lcd.update() self.btn.process() sleep(1) # sleep(0.5) self.lcd.clear() self.lcd.draw.rectangle((0, 0, 178, 128), fill='white') self.lcd.update() def registerBackspaceHandler(self, backspaceHandler): self.btn.on_backspace = backspaceHandler def stop(self): self.isRunning = False self.join() def setMessageText(self, text): self.messageText = text def setStatusText(self, text): self.statusText = text def setPowerSupplyText(self, text): self.powerSupplyText = text def playStartSound(self): self.sound.tone([(800, 200, 0), (1200, 400, 100)]) def setStatusLed(self, color): if color == 'green': self.leds.set_color('RIGHT', 'GREEN') elif color == 'orange': self.leds.set_color('RIGHT', 'ORANGE') else: print('unsupported color: ' + str(color))
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveTank, SpeedPercent, follow_for_ms, follow_for_forever from ev3dev2.sensor.lego import ColorSensor from ev3dev2.sound import Sound from ev3dev2.display import Display from ev3dev2.button import Button from time import sleep, time import threading import os speeker = Sound() tank = MoveTank(OUTPUT_A, OUTPUT_B) cs = ColorSensor() tank.cs = cs screen = Display() button = Button() # os.system('setfont CyrAsia-Terminus12x6') def color_find(endtime): start_time = time() triggerd = False while True: if cs.color == 5: speeker.beep() tank.stop() sleep(1) exit() if time() - start_time >= endtime and not triggerd: tank.stop() speeker.beep()