[ev3 x Java] Bouton de blocage intelligent

Cet article s'adresse à ceux qui souhaitent travailler avec ev3 en Java. Cette fois, je souhaite effectuer diverses opérations à l'aide du bouton de blocage intelligent.

table des matières

  1. Quoi préparer
  2. Programme utilisant la classe Button
  3. Programme à l'aide de l'interface Key

0. Quoi préparer

◯ ev3 (réservoir) ◯ PC (code VS) ◯ bluetooth ◯ microSD ◯ Documentation API (Il est recommandé de continuer en regardant ceci.)

1. Programme utilisant la classe Button

1-0. Un programme qui démarre lorsqu'un bouton spécifique est enfoncé

◯ C'est un programme qui émet un son lorsque vous appuyez sur le bouton supérieur et met fin à la boucle lorsque vous appuyez sur le bouton droit.

button00.java


import lejos.hardware.Button;
import lejos.hardware.Sound;

public class Button00
{
    public static void main(String[] args)
    {
    	while(true) {
    		//Si le bouton droit est enfoncé
    		if(Button.getButtons() == 8) {
                //Traitement de la boucle de fin
                break;
            //Si le bouton supérieur est enfoncé
    		}else if(Button.getButtons() == 1) {
    			//Faire un son
    			Sound.beep();
    		}
    	}
    }
}

** Point **: Classe Button

** Point **: type de bouton Les boutons sont associés à des nombres.

・ Bouton supérieur ID_UP: 1 ・ Bouton inférieur ID_DOWN: 4 ・ Bouton droit ID_RIGHT: 8 ・ Bouton gauche ID_LEFT: 16 ・ Bouton central ID_ENTER: 2 ・ Bouton d'échappement ID_ESCAPE: 32

Détails: valeurs-constantes

1-1. Un programme qui démarre lorsque vous appuyez sur n'importe quel bouton

◯ Le moteur tournera lorsque n'importe quel bouton est enfoncé. Cependant, si le bouton enfoncé est un bouton d'échappement, le programme se terminera.

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) {
    		//Si un bouton est enfoncé
    		Button.waitForAnyPress();
    		l_a.forward();
    			
    		//Si le bouton est enfoncé et qu'il s'agit d'un bouton d'échappement
    		if (Button.waitForAnyPress() == Button.ID_ESCAPE) {
    			//Quitter le programme
                System.exit(0);
            }
    	}
    }
}

1-2. Programme Bump

◯ C'est un programme qui émet un son lorsque vous appuyez et relâchez le bouton.

button02.java


import lejos.hardware.Button;
import lejos.hardware.Sound;

public class Button02
{
	public static void main(String[] args)
    {
    		//Si un bouton est enfoncé
    		Button.waitForAnyPress();
    		//Si quelque chose arrive
    		Button.waitForAnyEvent();
    		Sound.beep();
    }
}

1-3. Programme lié à une pression longue sur le bouton

◯ Ce programme met fin au programme si vous maintenez le bouton droit enfoncé pendant 3 secondes ou plus, et émet un son si vous relâchez le bouton droit dans les 3 secondes.

button03.java


import lejos.hardware.Button;
import lejos.hardware.Sound;

public class Button03
{
	public static void main(String[] args)
    {
        while(true) {
            //Si vous appuyez sur le bouton droit
            if(Button.waitForAnyPress() == Button.ID_RIGHT) {
                //Si vous relâchez le bouton dans les 3 secondes
    			if(Button.waitForAnyEvent(3000) != 0) {
    				Sound.buzz();
                //Si vous maintenez le bouton enfoncé pendant plus de 3 secondes
    			}else {
    				System.exit(0);
    			}
    		}
    	}
    }
}

2. Programme à l'aide de l'interface clé

2-0. Un programme qui démarre lorsqu'un bouton spécifique est enfoncé

◯ C'est un programme qui effectue différentes opérations lorsque chaque touche est enfoncée.

import lejos.hardware.Button;
import lejos.hardware.Sound;

public class Key00
{
	public static void main(String[] args)
    {
        while(true) {
    		//Si vous appuyez sur le bouton ci-dessus
    		if(Button.UP.isDown()) {
                Sound.beep();
    		//Si vous appuyez sur le bouton à droite
    		}else if(Button.RIGHT.isDown()) {
    			Sound.buzz();
    		//Si vous appuyez sur le bouton d'échappement
    		}else if(Button.ESCAPE.isDown()) {
    			System.exit(0);
    		}
    	}
    }
}

◯ Point: ** Interface clé **


2-1. Programme d'instruction de cas de commutation

◯ Créez une classe pour implémenter la méthode dans l'interface KeyListener afin qu'elle puisse être appelée lors d'un événement.

Plus précisément, il ne doit tourner vers l'avant que lorsque le bouton supérieur est enfoncé et ne doit tourner négativement que lorsque le bouton inférieur est enfoncé. Appuyez ensuite sur la touche d'échappement pour quitter le programme.

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) {
    	//Permet aux méthodes d'être appelées lorsqu'un événement se produit
        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{ //Créer une classe pour implémenter la gestion des événements
	//Déclarer une variable
    private RegulatedMotor lmotor_a;
    private RegulatedMotor lmotor_b;

    //Définir le constructeur
    public ButtonEvent(RegulatedMotor Motor_A,RegulatedMotor Motor_B) {
    	lmotor_a = Motor_A;
    	lmotor_b = Motor_B;
    }

    //Personnalisez la méthode
    @Override
    public void keyPressed(Key k) { //Méthode appelée lorsque le bouton est enfoncé
        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);
        }
    }

    //Personnalisez la méthode
    @Override
    public void keyReleased(Key k) { //Méthode appelée lorsque le bouton est relâché
    	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;
        }
    }
}

◯ Point: instruction switch-case Référence: Résumé de l'utilisation de l'instruction switch-case

finalement

Merci pour la lecture! !! La prochaine fois, j'aimerais écrire sur les capteurs tactiles!

Je veux faire un meilleur article ◯ C'est plus facile à comprendre ◯ C'est difficile à comprendre ◯ C'est faux ◯ Je veux que vous expliquiez plus ici Nous apprécions vos opinions et suggestions.

Recommended Posts

[ev3 x Java] Bouton de blocage intelligent
[ev3 × Java] Commande de moteur unique
Sélénium x Java