Dieser Artikel richtet sich an diejenigen, die mit ev3 in Java arbeiten möchten. Dieses Mal möchte ich verschiedene Operationen mit der intelligenten Blocktaste ausführen.
◯ ev3 (Tank) ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ API-Dokumentation (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)
◯ Es ist ein Programm, das beim Drücken der oberen Taste einen Ton erzeugt und die Schleife beendet, wenn Sie die rechte Taste drücken.
button00.java
import lejos.hardware.Button;
import lejos.hardware.Sound;
public class Button00
{
public static void main(String[] args)
{
while(true) {
//Wenn die rechte Taste gedrückt wird
if(Button.getButtons() == 8) {
//Schleifenverarbeitung beenden
break;
//Wenn die obere Taste gedrückt wird
}else if(Button.getButtons() == 1) {
//Mach ein Geräusch
Sound.beep();
}
}
}
}
** Punkt **: Button-Klasse
** Punkt **: Schaltflächentyp Schaltflächen sind Zahlen zugeordnet.
・ Obere Taste ID_UP: 1 ・ Untere Taste ID_DOWN: 4 ・ Rechte Taste ID_RIGHT: 8 ・ Linke Taste ID_LEFT: 16 ・ Mitteltaste ID_ENTER: 2 ・ Escape-Taste ID_ESCAPE: 32
Details: Konstantenwerte
◯ Der Motor dreht sich, wenn eine Taste gedrückt wird. Wenn es sich bei der gedrückten Taste jedoch um eine Escape-Taste handelt, wird das Programm beendet.
button01.java
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.hardware.Button;
public class Button01
{
public static final RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);
public static void main(String[] args)
{
while(true) {
//Wenn eine Taste gedrückt wird
Button.waitForAnyPress();
l_a.forward();
//Wenn die Taste gedrückt wird und es sich um eine Escape-Taste handelt
if (Button.waitForAnyPress() == Button.ID_ESCAPE) {
//Beenden Sie das Programm
System.exit(0);
}
}
}
}
◯ Es ist ein Programm, das beim Drücken und Loslassen der Taste einen Ton ausgibt.
button02.java
import lejos.hardware.Button;
import lejos.hardware.Sound;
public class Button02
{
public static void main(String[] args)
{
//Wenn eine Taste gedrückt wird
Button.waitForAnyPress();
//Wenn etwas passiert
Button.waitForAnyEvent();
Sound.beep();
}
}
◯ Dieses Programm beendet das Programm, wenn Sie die rechte Taste 3 Sekunden oder länger gedrückt halten, und gibt einen Ton aus, wenn Sie die rechte Taste innerhalb von 3 Sekunden loslassen.
button03.java
import lejos.hardware.Button;
import lejos.hardware.Sound;
public class Button03
{
public static void main(String[] args)
{
while(true) {
//Wenn Sie die rechte Taste drücken
if(Button.waitForAnyPress() == Button.ID_RIGHT) {
//Wenn Sie die Taste innerhalb von 3 Sekunden loslassen
if(Button.waitForAnyEvent(3000) != 0) {
Sound.buzz();
//Wenn Sie die Taste länger als 3 Sekunden gedrückt halten
}else {
System.exit(0);
}
}
}
}
}
◯ Es ist ein Programm, das beim Drücken jeder Taste unterschiedliche Vorgänge ausführt.
import lejos.hardware.Button;
import lejos.hardware.Sound;
public class Key00
{
public static void main(String[] args)
{
while(true) {
//Wenn Sie die Taste oben drücken
if(Button.UP.isDown()) {
Sound.beep();
//Wenn Sie die Taste rechts drücken
}else if(Button.RIGHT.isDown()) {
Sound.buzz();
//Wenn Sie die Escape-Taste drücken
}else if(Button.ESCAPE.isDown()) {
System.exit(0);
}
}
}
}
◯ Punkt: ** Schlüsselschnittstelle **
◯ Erstellen Sie eine Klasse, um die Methode in der KeyListener-Schnittstelle zu implementieren, damit sie zum Zeitpunkt eines Ereignisses aufgerufen werden kann.
Insbesondere sollte es sich nur vorwärts drehen, während die obere Taste gedrückt wird, und sich nur negativ drehen, wenn die untere Taste gedrückt wird. Drücken Sie dann die Escape-Taste, um das Programm zu beenden.
import lejos.hardware.Button;
import lejos.hardware.Key;
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.hardware.KeyListener;
public class Key01 {
private static RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);
private static RegulatedMotor l_b = new EV3LargeRegulatedMotor(MotorPort.B);
public static void main(String[] args) {
//Ermöglicht das Aufrufen von Methoden, wenn ein Ereignis auftritt
Button.UP.addKeyListener(new ButtonEvent(l_a,l_b));
Button.DOWN.addKeyListener(new ButtonEvent(l_a,l_b));
Button.ESCAPE.addKeyListener(new ButtonEvent(l_a,l_b));
while (true) {}
}
}
class ButtonEvent implements KeyListener{ //Erstellen Sie eine Klasse, um die Ereignisbehandlung zu implementieren
//Deklarieren Sie eine Variable
private RegulatedMotor lmotor_a;
private RegulatedMotor lmotor_b;
//Legen Sie den Konstruktor fest
public ButtonEvent(RegulatedMotor Motor_A,RegulatedMotor Motor_B) {
lmotor_a = Motor_A;
lmotor_b = Motor_B;
}
//Passen Sie die Methode an
@Override
public void keyPressed(Key k) { //Methode, die aufgerufen wird, wenn die Taste gedrückt wird
switch (k.getId()){
case Button.ID_UP:
lmotor_a.forward();
lmotor_b.forward();
break;
case Button.ID_DOWN:
lmotor_a.backward();
lmotor_b.backward();
break;
case Button.ID_ESCAPE:
lmotor_a.stop(true);
lmotor_b.stop();
System.exit(0);
}
}
//Passen Sie die Methode an
@Override
public void keyReleased(Key k) { //Methode, die aufgerufen wird, wenn die Taste losgelassen wird
switch (k.getId()){
case Button.ID_UP:
lmotor_a.stop(true);
lmotor_b.stop();
break;
case Button.ID_DOWN:
lmotor_a.stop(true);
lmotor_b.stop();
break;
}
}
}
◯ Punkt: Switch-Case-Anweisung Referenz: Zusammenfassung der Verwendung der switch-case-Anweisung
Danke fürs Lesen! !! Nächstes Mal möchte ich über Berührungssensoren schreiben!
Ich möchte einen besseren Artikel machen ◯ Das ist leichter zu verstehen ◯ Das ist schwer zu verstehen ◯ Das ist falsch ◯ Ich möchte, dass Sie hier mehr erklären Wir freuen uns über Ihre Meinungen und Vorschläge.