[LeJOS] EV3-Sensorwert per Fernzugriff mit Java abrufen

Einführung

In diesem Artikel wird davon ausgegangen, dass Sie über eine leJOS-Entwicklungsumgebung verfügen. Weitere Informationen finden Sie in diesem Artikel.

[LeJOS] Programmieren wir mindstorm-EV3 mit Java [Umgebungskonstruktion erster Teil]

[LeJOS] Programmieren wir mindstorm-EV3 mit Java [Umgebungskonstruktion Teil 2]

Überblick

Mit leJOS ist es möglich, Ev3 mithilfe der remoteEv3-Klasse über WLAN fernzusteuern. In diesem Artikel werde ich erklären, wie der Ev3-Sensorwert aus der Ferne abgerufen wird. In diesem Artikel erfahren Sie, wie Sie den Motor fernsteuern.

[LeJOS] Lassen Sie uns den EV3-Motor mit Java fernsteuern

Beispielprogramm

Der Sensorwert wird standardmäßig an der Konsole ausgegeben. Verbinden Sie den Berührungssensor mit Port 1 des EV3-Hauptgeräts, den Ultraschallsensor mit Port 2, den Farbsensor mit Port 3 und den Kreiselsensor mit Port 4. IMG_8616.JPG

Führen Sie das folgende Programm auf Ihrem PC aus. (Das Programm muss nicht auf Ev3 bereitgestellt werden.)

RemoteEv3Sensor.java



import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import lejos.remote.ev3.RMISampleProvider;
import lejos.remote.ev3.RemoteEV3;

public class RemoteEv3Sensor {

	public static void main(String[] args) throws RemoteException {
		RemoteEV3 ev3 = null;
		RMISampleProvider TouchSensor = null;
		RMISampleProvider UltraSonicSensor = null;
		RMISampleProvider ColorSensor = null;
		RMISampleProvider GyroSensor = null;
		
		try {
			//Stellen Sie als Argument eine Verbindung zu EV3 und EV3-IP-Adresse her
			ev3 = new RemoteEV3("192.168.2.91");	
			ev3.setDefault();
		} catch (RemoteException | MalformedURLException | NotBoundException e) {
			e.printStackTrace();
		} 
		
		TouchSensor = ev3.createSampleProvider("S1", "lejos.hardware.sensor.EV3TouchSensor","Touch");
		UltraSonicSensor = ev3.createSampleProvider("S2", "lejos.hardware.sensor.EV3UltrasonicSensor","Distance");
		ColorSensor = ev3.createSampleProvider("S3", "lejos.hardware.sensor.EV3ColorSensor","RGB");
		GyroSensor = ev3.createSampleProvider("S4", "lejos.hardware.sensor.EV3GyroSensor","Angle");
		
		try{
			System.out.println("TouchSensor");
			printData(TouchSensor.fetchSample());
			System.out.println("UltraSonicSensor");
			printData(UltraSonicSensor.fetchSample());
			System.out.println("ColorSensor");
			printData(ColorSensor.fetchSample());
			System.out.println("GyroSensor");
			printData(GyroSensor.fetchSample());
		}finally{
			TouchSensor.close();
			UltraSonicSensor.close();
			ColorSensor.close();
			GyroSensor.close();
		}
	}
	
	public static void printData(float[] sample){
		for(float data: sample) {
	         System.out.println(data);
	    }
	}
}

Ausführungsergebnis

Die Daten jedes Sensors werden an die Standardausgabe ausgegeben. Der Berührungssensor gibt einen Wert von 0 oder 1 aus, der den Druckzustand anzeigt, der Ultraschallsensor gibt den Abstandswert (m) zum Objekt aus, der Farbsensor gibt die R-, B-, G-Werte des Objekts aus und der Kreiselsensor gibt den Winkelwert (°) aus. Getan werden.

TouchSensor
0.0
UltraSonicSensor
0.076000005
ColorSensor
0.0
0.0
0.0
GyroSensor
-0.0

Kommentar

Verwenden Sie die Methode createSampleProvider, um auf den Remote-Sensor zuzugreifen. Legen Sie den Verbindungszielport im ersten Argument, den Sensornamen im zweiten Argument und den Sensorerfassungsmodus im dritten Argument als Zeichenfolgentyp fest.

		TouchSensor = ev3.createSampleProvider("S1", "lejos.hardware.sensor.EV3TouchSensor","Touch");
		UltraSonicSensor = ev3.createSampleProvider("S2", "lejos.hardware.sensor.EV3UltrasonicSensor","Distance");
		ColorSensor = ev3.createSampleProvider("S3", "lejos.hardware.sensor.EV3ColorSensor","RGB");
		GyroSensor = ev3.createSampleProvider("S4", "lejos.hardware.sensor.EV3GyroSensor","Angle");

Der Sensorwert kann mithilfe der Methode fetchSample als Float-Array empfangen werden.

TouchSensor.fetchSample();

Stellen Sie schließlich sicher, dass Sie die Schließmethode verwenden, um den Zugriff auf den Sensor zu schließen. Wenn Sie die Fehlermeldung "SampleProvider kann nicht erstellt werden" erhalten, liegt dies daran, dass es nicht ordnungsgemäß funktioniert.

TouchSensor.close();
UltraSonicSensor.close();
ColorSensor.close();
GyroSensor.close();

Referenz

https://sourceforge.net/p/lejos/wiki/Remote%20access%20to%20an%20EV3/

Zusammenfassung

Darüber hinaus ist es jetzt möglich, Ev3-Motoren und -Sensoren fernzusteuern.

[LeJOS] Lassen Sie uns den EV3-Motor mit Java fernsteuern

Beim nächsten Mal möchte ich diese verwenden, um eine GUI-Anwendung zu entwickeln, die auf einem PC ausgeführt wird.

Recommended Posts

[LeJOS] EV3-Sensorwert per Fernzugriff mit Java abrufen
[LeJOS] Lassen Sie uns den EV3-Motor mit Java fernsteuern
[LeJOS] Lassen Sie uns den EV3-Motor mit Java steuern
[Java] Listen- / Kartenelemente mit Iterator abrufen
Holen Sie sich Zeitstempel mit dem Azure BlobStorage Java SDK
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse
Abrufen des Werts von URL-Parametern mit Get Mapping ~ Local Date ~
Blockinformationen erhalten Sie mit dem Java SDK von Hyperledger Iroha
[Java] Ruft mehrere Werte von einem Rückgabewert ab
[Java] Ruft Werte zufällig aus einem Array ab
Lassen Sie uns mit Bluetooth von leJOS ev3 kommunizieren, ohne zu blockieren
Kommen Sie mit Java-Containern in Cloud Run zurecht
Erfahrene Java-Benutzer beginnen mit der Entwicklung von Android-Apps
[Java] So erhalten Sie den Maximalwert von HashMap
Rufen Sie den Azure App Service für die Java-Konfiguration mit System.getEnv () ab.
[Java] Holen Sie sich das Datum 10 Tage später mit der Calendar-Klasse
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!