[ev3 × Java] Einzelmotorsteuerung

Dieser Artikel richtet sich an diejenigen, die mit ev3 in Java arbeiten möchten. Dieses Mal möchte ich den Motor auf verschiedene Arten steuern.

Inhaltsverzeichnis

  1. Was ist vorzubereiten?
  2. Codestruktur
  3. Steuerung des L-Motors 2-0. Programmieren, um den L-Motor für einen bestimmten Zeitraum zu drehen 2-1. Programmieren, um den L-Motor um einen bestimmten Winkel zu drehen 2-2. Programm zum Beschleunigen des L-Motors 3-3. Programme, die for-Schleifen verwenden 2-4. Programme, die while-Schleifen verwenden 2-5. Programme, die if und else verwenden
  4. Steuerung des M-Motors Schließlich

0. Was ist vorzubereiten?

◯ ev3 (intelligenter Block) ◯ L Motor / M Motor ◯ PC (Sonnenfinsternis) ◯ bluetooth ◯ microSD ◯ API-Dokumentation (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)


1. Codestruktur

◯ Das diesmal verwendete Programm ist ungefähr so. Lassen Sie uns zunächst über diese Form sprechen.

templete.java


//Bereiten Sie die Materialien für das Programm vor
import package.Class;

//Erstellen Sie eine Klasse
öffentliche Klasse Klassenname{

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
Klassenobjekt=neue Klasse();
        
        //Verwenden Sie die Methode
Objekt.Methode();
    }
}

Point :import Es dient zur Beschaffung der für die Programmierung erforderlichen Materialien (eine Reihe von Codes). Schreiben Sie als import package.Class.

Zum Beispiel bedeutet "import lejos.hardware.motor.EV3LargeRegulatedMotor", die Klasse "EV3LargeRegulatedMotor" im Paket "lejos.hardware.motor" zu beziehen.


Punkt: ** Klasse ** Eine Sammlung verwandter Felder und Methoden. (Beispiel)

Mensch der öffentlichen Klasse{
    //Feld
Schwimmerhöhe;
Schwimmergewicht;
Float-Gesangsfähigkeit;
    //Methode
öffentlicher leerer Schlaf(){};
öffentliche Leere essen(){};
öffentliche Leere sprechen(){};
öffentliche Leere singen(){};
}

Punkt: ** statische Methode ** ** Eine Methode (Funktion), die aufgerufen werden kann, ohne eine Klasse zu instanziieren.

Referenzartikel Erläuterung der Hauptmethode, ihrer Argumente (Argumente) und des Rückgabewerts Erklären Sie sorgfältig Javas statische Methode! Lassen Sie uns gemeinsam Anwendungsbeispiele und -ideen lernen!


Punkt: ** Instanz ** Es ist eine Materialisierung (Objekt) der Klasse. Die Instanz verfügt über ** Felder und Methoden, über die die Klasse verfügt **. Sie können mehrere Instanzen aus einer Klasse erstellen.


Punkt: ** Instanz erstellen ** Erstellen eines Objekts aus einer Klasse. Erstellen Sie eine Instanz wie folgt.

Klassenobjekt=neue Klasse(Konstrukteur)

Machen. Mit dem Konstruktor können Sie aus einer Klasse ein Objekt mit Individualität erstellen.

** (Beispiel) ** Takeshi Gouda aus Klassenleuten machen

Takeshi Gouda=neuer Mensch(Höhe= 157,Körpergewicht= 70,Geschicklichkeit als Sänger= 0);

[Referenzartikel]: Implementierte Schnittstelle! Verwendung von Geräten in Java


Punkt: ** Punkt (.) ** Der Punkt (.) Bedeutet ** hineingehen **. Mit Punkten können Sie auf Felder und Methoden innerhalb eines Objekts zugreifen.

Takeshi Gouda.singen();

2. Steuerung des L-Motors

2-0. Programmieren, um den L-Motor für einen bestimmten Zeitraum zu drehen

◯ Programmieren Sie, um den L-Motor zu drehen und 5 Sekunden lang anzuhalten

lmotor00.java


//Dinge notwendig(Material)Importieren
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.utility.Delay;

//Erstellen Sie eine Klasse
public class lmotor00 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);
        
        //Stellen Sie eine Geschwindigkeit ein, die sich um 720 Grad pro Sekunde dreht
        l_a.setSpeed(720);
        //Den Motor nach vorne drehen
        l_a.forward();
        //5000 Millisekunden(5 Sekunden)bereithalten=Verarbeitung fortsetzen
        Delay.msDelay(5000);
        //Stoppen Sie den Motor
        l_a.stop();
    }
}

Punkt: ** Klasse. Methode ** msDelay () ist eine ** statische Methode **, sodass Sie sie ohne Verwendung einer Instanz verwenden können.

[Referenzartikel] Erklären Sie sorgfältig Javas statische Methode! Lassen Sie uns gemeinsam Anwendungsbeispiele und -ideen lernen! Was sind die Vorteile statischer Methoden


Point : setSpeed() Eine Methode, die die Drehzahl des Motors bestimmt. Geben Sie im Argument den Winkel an, den Sie in 1 Sekunde drehen möchten.


Point : forward() Ein Verfahren zum Drehen des Motors in die positive Richtung. Wenn es keine Methode zum Stoppen gibt, dreht sie sich weiter.


2-1. Programmieren, um den L-Motor um einen bestimmten Winkel zu drehen

◯ Programm zum Drehen des Motors um 1080 Grad

lmotor01.java


//Dinge notwendig(Material)Importieren
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;

//Erstellen Sie eine Klasse
public class lmotor01 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);
        
        //Stellen Sie eine Geschwindigkeit ein, die sich um 360 Grad pro Sekunde dreht
        l_a.setSpeed(360);
        //Drehen Sie den Motor um 1080 Grad in die negative Richtung
        l_a.rotate(-1080);
    }
}

Point : rotate() Um den im Argument angegebenen Winkel drehen Die Drehung stoppt, wenn die Verarbeitung abgeschlossen ist


2-2. Programm zum Beschleunigen des L-Motors

◯ Es ist ein Programm, das den L-Motor allmählich beschleunigt.

lmotor02.java


//Dinge notwendig(Material)Importieren
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;

//Erstellen Sie eine Klasse
public class lmotor02 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);

        //Geschwindigkeit auf Maximum einstellen
        l_a.setSpeed((int) l_a.getMaxSpeed());
        //Stellen Sie die Beschleunigung auf 100 ein(Die Anfangsgeschwindigkeit ist langsam und beschleunigt)
        l_a.setAcceleration(100);
        l_a.rotate(7200);
        //Stellen Sie die Beschleunigung auf 9000 ein(Sofort beschleunigen)
        l_a.setAcceleration(9000);
        l_a.rotate(-7200);
    }
}

Punkt: ** Beschleunigung ** Die Beschleunigung ist ** die Änderungsrate der Geschwindigkeit pro Zeiteinheit **. Die Einheit ** Grad / s / s ** des Arguments der Methode setAcceleration () gibt an, um wie viel sich die Winkelgeschwindigkeit [Grad / s] in ** 1 Sekunde [s] ** ändert. (Beispiel) Beim Ändern um 100 Grad pro Sekunde

Zeit[s] 0 1 2 3 4 5 6 7 8 9 10
Winkelgeschwindigkeit[degrees/s] 0 100 200 300 400 500 600 700 800 900 1000
Beschleunigung[degrees/s/s] 0 100 100 100 100 100 100 100 100 100 100

Point : getMaxSpeed() Eine Methode, die den Höchstgeschwindigkeitswert zurückgibt. Die Höchstgeschwindigkeit hängt auch von der Ladungsmenge ab.


Point : setAcceleration() Eine Methode, die den Beschleunigungsgrad bestimmt. Je kleiner der Wert, desto langsamer die Beschleunigung.


2-3. Programme, die for-Schleifen verwenden

◯ Ein Programm, das die Geschwindigkeit alle 2 Sekunden erhöht

lmotor03.java


import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.utility.Delay;

//Erstellen Sie eine Klasse
public class lmotor03 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);
 
        //i <Erhöhen Sie i um 100, während Sie 1000 füllen
        for(int i = 10 ; i < 1000 ; i += 100) {
        	//Stellen Sie die Geschwindigkeit auf i ein
        	l_a.setSpeed(i);
        	l_a.forward();
        	Delay.msDelay(2000);
        }
        //Stoppen Sie den Motor nach dem Verlassen der for-Schleife
        l_a.stop();
    }
}

Punkt: ** für Schleife ** Wiederholen Sie den Vorgang, während "i <Schwelle" wahr ist. Bei jeder Verarbeitung wird i addiert (subtrahiert).

for(int i =Ursprünglicher Wert;i <Schwelle; i +=Erhöhen verringern){
wird bearbeitet
}

2-4. Programme, die while-Schleifen verwenden

◯ Es ist ein Programm, das den L-Motor alle 2 Sekunden beschleunigt.

lmotor04.java


import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.utility.Delay;

//Erstellen Sie eine Klasse
public class lmotor04 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);

        //Definieren Sie eine Ganzzahlvariable s
        int s = 0; 
        //s <Während des Treffens 1000{}Wiederholen Sie den Vorgang im Inneren
        while(s < 1000) {
        	//Geschwindigkeit auf s einstellen
        	l_a.setSpeed(s);
        	l_a.forward();
        	Delay.msDelay(2000);
        	//s = s + 100
        	s += 100;
        }
        //Stoppen Sie den Motor nach dem Verlassen der while-Schleife
        l_a.stop();
    }
}

Punkt: ** while-Schleife ** Es ist ein Mechanismus, um eine Bedingung festzulegen und den Vorgang zu wiederholen, während die Bedingung erfüllt ist.

while(Bedingungen){
wird bearbeitet;
}

2-5. Programme, die if und else verwenden

◯ Es ist ein Programm, das den L-Motor alle 2 Sekunden beschleunigt. Wenn jedoch ** die Taste in der Mitte des intelligenten Blocks gedrückt wird **, endet die Schleife.

lmotor05.java


import lejos.hardware.Button;
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.robotics.RegulatedMotor;
import lejos.utility.Delay;

//Erstellen Sie eine Klasse
public class lmotor05 {

	//Erstellen Sie eine statische Methode
    public static void main(String[] args) {

        //Instanzgenerierung
        RegulatedMotor l_a = new EV3LargeRegulatedMotor(MotorPort.A);

        //Definieren Sie eine Ganzzahlvariable s
        int s = 0; 
        //s <Während des Treffens 1000{}Wiederholen Sie den Vorgang im Inneren
        while(s < 1000) {
        	//Wenn die mittlere Taste gedrückt wird
        	if(Button.getButtons() == 2) {
        		//Schleifenverarbeitung beenden
        		break;
        	//Wenn die mittlere Taste nicht gedrückt wird
        	}else {
            //Geschwindigkeit auf s einstellen
        	l_a.setSpeed(s);
        	l_a.forward();
        	Delay.msDelay(2000);
        	//s = s + 100
        	s += 100;
        	}
        }
        //Stoppen Sie den Motor nach dem Verlassen der while-Schleife
        l_a.stop();
    }
}

Point : if,else Wenn die Bedingung erfüllt ist, wird Prozess 1 ausgeführt, andernfalls wird Prozess 2 ausgeführt.

if(Bedingungen){
Prozess 1;
}else{
Prozess 2;
}

Andere Anweisungen, die if verwenden, lauten wie folgt.

if(Bedingungen){
wird bearbeitet;
}
if(Bedingung a){
Prozess 1;
}else if(Bedingung b){
Prozess 2;
if(Bedingung a){
Prozess 1;
}else if(Bedingung b){
Prozess 2;
}else{
Prozess 3;
}

Point : Button.getButtons() Eine statische Methode, die den ganzzahligen Wert zurückgibt, der der gedrückten Taste entspricht. Jeder Taste im intelligenten Block wird ** eine Nummer zugewiesen **. Entsprechungstabelle zwischen Schaltflächen und ganzzahligen Werten if (Button.getButtons () == 2) bedeutet **, wenn die mittlere Taste ** aus der Korrespondenztabelle gedrückt wird **.


Point : break Dies ist eine Anweisung zum Beenden der Schleife.


3. Steuerung des M-Motors

Es ist dasselbe wie der L-Motor, außer dass er die EV3MediumRegulatedMotor-Klasse verwendet.

//Instanzgenerierung
RegulatedMotor m_a = new EV3MediumRegulatedMotor(MotorPort.A);

Schließlich

Danke fürs Lesen! !! Das nächste Mal möchte ich über die Steuerung mehrerer Motoren 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 × Java] Einzelmotorsteuerung
[LeJOS] Lassen Sie uns den EV3-Motor mit Java steuern
[LeJOS] Lassen Sie uns den EV3-Motor mit Java fernsteuern
[ev3 × Java] Anzeige, Ton, LED-Steuerung
[ev3 x Java] Intelligente Blockschaltfläche
Java-Steuerungssyntax
Selen x Java
[Java] Hinweis zur Steuerungssyntax
Java-Versionsverwaltung unter macOS
[Java] Multithread-Verarbeitung - Exklusive Steuerung
Java-Versionsverwaltung mit SDKMAN
Java-Versionsverwaltung mit jenv
☾ Java / Repeat-Anweisung und Repeat-Steueranweisung
[Java] Zusammenfassung der Steuerungssyntax