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]
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
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.
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);
}
}
}
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
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();
https://sourceforge.net/p/lejos/wiki/Remote%20access%20to%20an%20EV3/
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