Cet article suppose que vous disposez d'un environnement de développement leJOS. Veuillez consulter cet article pour plus de détails.
[LeJOS] Programmons mindstorm-EV3 avec Java [Construction de l'environnement première partie]
[LeJOS] Programmons mindstorm-EV3 avec Java [Construction de l'environnement partie 2]
Avec leJOS, il est possible de contrôler à distance Ev3 via WiFi en utilisant la classe remoteEv3. Dans cet article, je vais vous expliquer comment obtenir la valeur du capteur Ev3 à distance. Veuillez vous référer à cet article pour savoir comment contrôler à distance le moteur.
[LeJOS] Contrôlons à distance le moteur EV3 avec Java
La valeur du capteur est sortie en standard sur la console. Connectez le capteur tactile au port 1 de l'unité principale EV3, le capteur à ultrasons au port 2, le capteur de couleur au port 3 et le capteur gyroscopique au port 4.
Exécutez le programme suivant sur votre PC. (Pas besoin de déployer le programme sur Ev3)
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 {
//Connectez-vous à l'adresse IP EV3, EV3 comme argument
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);
}
}
}
Les données de chaque capteur sont envoyées à la sortie standard. Le capteur tactile délivre une valeur de 0 ou 1, qui indique l'état enfoncé, le capteur à ultrasons délivre la valeur de distance (m) à l'objet, le capteur de couleur délivre les valeurs R, B, G de l'objet et le capteur gyroscopique délivre la valeur d'angle (°). Sera fait.
TouchSensor
0.0
UltraSonicSensor
0.076000005
ColorSensor
0.0
0.0
0.0
GyroSensor
-0.0
Utilisez la méthode createSampleProvider pour accéder au capteur distant. Définissez le port de destination de la connexion dans le premier argument, le nom du capteur dans le deuxième argument et le mode d'acquisition du capteur dans le troisième argument en tant que type String.
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");
La valeur du capteur peut être reçue sous la forme d'un tableau de type float à l'aide de la méthode fetchSample.
TouchSensor.fetchSample();
Enfin, veillez à utiliser la méthode de fermeture pour fermer l'accès au capteur. Si vous obtenez l'erreur «Impossible de créer SampleProvider», c'est parce qu'il ne fonctionne pas correctement.
TouchSensor.close();
UltraSonicSensor.close();
ColorSensor.close();
GyroSensor.close();
https://sourceforge.net/p/lejos/wiki/Remote%20access%20to%20an%20EV3/
En plus de ce qui précède, il est désormais possible de contrôler à distance les moteurs et capteurs Ev3.
[LeJOS] Contrôlons à distance le moteur EV3 avec Java
La prochaine fois, j'aimerais les utiliser pour développer une application GUI qui fonctionne sur un PC.
Recommended Posts