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)
Ejemplo n.º 2
0
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()
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
 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()
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
    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()
Ejemplo n.º 11
0
    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')
Ejemplo n.º 14
0
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()
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
    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()
Ejemplo n.º 18
0
    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()
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
 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])
Ejemplo n.º 21
0
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()
Ejemplo n.º 22
0
###################################
### 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"""
)
Ejemplo n.º 23
0
#!/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()
Ejemplo n.º 24
0
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

Ejemplo n.º 25
0
#!/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
Ejemplo n.º 26
0
#!/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,
Ejemplo n.º 27
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
Ejemplo n.º 28
0
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'
Ejemplo n.º 29
0
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()
Ejemplo n.º 30
0
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
Ejemplo n.º 31
0
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))
Ejemplo n.º 32
0
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()