[LeJOS] Obtenez la valeur du capteur EV3 à distance avec Java

introduction

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]

Aperçu

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

Exemple de programme

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. IMG_8616.JPG

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);
	    }
	}
}

Résultat d'exécution

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

Commentaire

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();

référence

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

Résumé

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

[LeJOS] Obtenez la valeur du capteur EV3 à distance avec Java
[LeJOS] Contrôlons à distance le moteur EV3 avec Java
[LeJOS] Contrôlons le moteur EV3 avec Java
[Java] Obtenir des éléments List / Map avec Iterator
Obtenez des horodatages avec le SDK Java Azure BlobStorage
[Java] Obtenez la date avec la classe LocalDateTime
Obtenir la valeur des paramètres d'URL avec Get Mapping-LocalDate-
Résumé Il n'y a rien de particulier. Dois-je y prêter attention? .. .. J'ai ressenti cela, alors j'ai écrit un article. Si vous avez des commentaires, veuillez. Obtenez des informations de bloc avec le SDK Java de Python, Python3, Glossy Hyperledger Iroha
[Java] Obtenir plusieurs valeurs à partir d'une valeur de retour
[Java] Récupère des valeurs de manière aléatoire dans un tableau
Communiquons sans bloquer avec Bluetooth du leJOS ev3
S'entendre avec les conteneurs Java dans Cloud Run
Les utilisateurs Java expérimentés se lancent dans le développement d'applications Android
[Java] Comment obtenir la valeur maximale de HashMap
Obtenez la configuration Azure App Service pour Java avec System.getEnv ()
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
Commencez avec Java sans serveur avec le framework léger Micronaut!