[ev3 x Java] Intelligente Blockschaltfläche

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.

Inhaltsverzeichnis

  1. Was ist vorzubereiten?
  2. Programmieren Sie mit der Button-Klasse
  3. Programmieren Sie über die Key-Oberfläche

0. Was ist vorzubereiten?

◯ ev3 (Tank) ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ API-Dokumentation (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)

1. Programmieren Sie mit der Button-Klasse

1-0. Ein Programm, das startet, wenn eine bestimmte Taste gedrückt wird

◯ 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

1-1. Ein Programm, das gestartet wird, wenn Sie eine beliebige Taste drücken

◯ 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);
            }
    	}
    }
}

1-2. Bump-Programm

◯ 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();
    }
}

1-3. Programm für langes Drücken der Taste

◯ 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);
    			}
    		}
    	}
    }
}

2. Programmieren Sie über die Key-Schnittstelle

2-0. Ein Programm, das startet, wenn eine bestimmte Taste gedrückt wird

◯ 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 **


2-1. Switch-Case-Anweisungsprogramm

◯ 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

Schließlich

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.

Recommended Posts

[ev3 x Java] Intelligente Blockschaltfläche
[ev3 × Java] Einzelmotorsteuerung
Selen x Java