10. Brick-Buttons und Tastaturtasten

Mit den Methoden isUpHit(), isDownHit() usw. kann man abfragen, ob einer der  Brick-Buttons UP, DOWN, LEFT, RIGHT, ENTER und ESCAPE.PUNKT WEG gedrückt wurde.. Im direkten und Simulationsmodus entsprechen der EV3-Buttons die Tastaturtasten UP, DOWN, LEFT, RIGHT, ENTER und ESCAPE.

Beispiel 1: Roboter mit Tastaturtasten steuern

  • UP: vorwärts fahren
  • DOWN: rückwärts fahren
  • LEFT: links drehen (auf Kreisbogen)
  • RIGHT: rechts drehen (auf Kreisbogen)
  • ENTER: anhalten
  • ESCAPE: Programmausführung beenden

 

 


Tastaturtasten


Brick-Buttons
# Ro10a.py

from simrobot import *
#from ev3robot import *
  
robot = LegoRobot()
gear = Gear()
robot.addPart(gear)

while not robot.isEscapeHit():
    if robot.isDownHit():
        gear.backward()
    elif robot.isUpHit():  
        gear.forward()
    elif robot.isLeftHit():        
        gear.leftArc(0.2) 
    elif robot.isRightHit():         
        gear.rightArc(0.2)   
    elif robot.isEnterHit():
        gear.stop()  
robot.exit()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

if isDownHit(): gibt True zurück, wenn die Taste Down (Remote- und Simulationsmodus) oder der Button Down im autonomen Modus gedrückt wurde.

 

Beispiel 2: Roboter wird durch eine Hindernisbahn gesteuert.
Die erste Hindernisbahn besteht aus gleich langen Wegstücken. Mit den Cursortasten LEFT / RIGHT (direkter- und Simulationsmodus) oder Buttons LEFT/RIGHT (autonomer Modus) dreht der Roboter jeweils rechtwinklig in die entsprechende Richtung und kann die Hindernisbahn durchfahren.

# Ro10b.py

from simrobot import *
#from ev3robot import *

RobotContext.useBackground("sprites/bg.gif")
RobotContext.setStartPosition(310, 470)

robot = LegoRobot()
gear = Gear()
robot.addPart(gear)
gear.forward(3200)

while not robot.isEscapeHit():
    if robot.isLeftHit():        
        gear.left(550)
        gear.forward(3200)
    elif robot.isRightHit():         
        gear.right(550)
        gear.forward(3200)
robot.exit()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 


Erklärungen zum Programmcode:

forward(3200) : im Simulationsmodus besteht die Bahn aus gleich langen Wegstücken

 

Beispiel 3: Um eine komplexere Bahn zu durchfahren, werden zusätzlich die Tasten UP und DOWN verwendet.


  • UP: vorwärts fahren
  • DOWN: stoppen
  • LEFT: rechtwinklig links abbiegen
  • RIGHT: rechtwinklig rechts abbiegen

Für den realen Roboter kann eine beliebige Hindernisbahn gebaut werden, wobei das Programm nur im direkten Modus sinnvoll ist, da man die Brick-Buttons während des Fahrens schlecht bedienen kann.

 

# Ro10c.py

from simrobot import *
#from ev3robot import *

RobotContext.useBackground("sprites/bg2.gif")
RobotContext.setStartPosition(410, 470)

robot = LegoRobot()
gear = Gear()
robot.addPart(gear)

while not robot.isEscapeHit():
    if robot.isUpHit():  
        gear.forward()
    elif robot.isDownHit():
        gear.stop()     
    elif robot.isLeftHit():        
        gear.left(550) 
    elif robot.isRightHit():         
        gear.right(550)     
robot.exit()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 


Aufgaben: Serie 10

1)

Der Roboter soll mit den Tastatur-Tasten durch den nebenstehenden Parcours gesteuert werden.

Für die Simulation kannst du das Hintergrundbild bg3.gif verwenden:

RobotContext.useBackground("sprites/bg3.gif")
RobotContext.setStartPosition(410, 475)
  

 

 

 

2)

Mit der Hilfe der Tastatur-Tasten kannst du den Roboter durch den Kanal steuern.

Für die Simulation kannst du das Hintergrundbild channel.gif benutzen

RobotContext.useBackground("sprites/channel.gif")
RobotContext.setStartPosition(35, 245)
RobotContext.setStartDirection(0)