{"id":16,"date":"2017-12-09T17:17:07","date_gmt":"2017-12-09T16:17:07","guid":{"rendered":"http:\/\/www.boichat.ch\/wordpress\/?p=16"},"modified":"2025-10-11T09:51:00","modified_gmt":"2025-10-11T07:51:00","slug":"lego-mindstorms-ev3-exercices-pratiques-en-java-1","status":"publish","type":"post","link":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/","title":{"rendered":"LEGO Mindstorms EV3: Exercices pratiques en Java (1)"},"content":{"rendered":"<p>Cet article est <a href=\"http:\/\/www.boichat.ch\/joomla\/index.php?option=com_content&amp;view=article&amp;id=125:lego-mindstorms-ev3-exercices-1&amp;catid=93&amp;Itemid=502\" target=\"_blank\" rel=\"noopener\">le m\u00eame que sur mon site Joomla<\/a>, mais parmi <a href=\"http:\/\/www.boichat.ch\/joomla\/index.php?option=com_content&amp;view=category&amp;id=91&amp;Itemid=497\" target=\"_blank\" rel=\"noopener\">d&#8217;autres qui concernent l&#8217;EV3<\/a>.<\/p>\n<p>Lorsque j&#8217;ai commenc\u00e9 de jouer avec la balise infrarouge (IR) de l&#8217;EV3, avec les exemples qui viennent avec la plateforme Java&nbsp;<a href=\"https:\/\/lejos.sourceforge.io\/ev3.php\" target=\"_blank\" rel=\"noopener noreferrer\">leJOS<\/a>&nbsp;et avec&nbsp;sa classe EV3IRSensor &#8230; je n&#8217;ai pas vraiment compris grand chose!?!<\/p>\n<p>L&#8217;id\u00e9e m&#8217;est donc venue d&#8217;\u00e9crire une premi\u00e8re application, toute petite, pour comprendre cette classe et les \u00e9v\u00e9nements g\u00e9n\u00e9r\u00e9s en pressant les diff\u00e9rents boutons. Ensuite, je l&#8217;ai faite \u00e9volu\u00e9e, en fonction des r\u00e9sultats, pour obtenir quelque chose de plus concret, comme de faire rouler mon robot en le commandant depuis la balise IR.<\/p>\n<p>Le v\u00e9hicule n\u00e9cessaire doit \u00eatre \u00e9quip\u00e9 au minimum des deux grands servomoteurs et du capteur infrarouge \u00e0 gauche:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-168\" src=\"https:\/\/www.boichat.ch\/wordpress\/wp-content\/uploads\/2017\/12\/sensorIR.jpg\" alt=\"\" width=\"350\" height=\"225\" srcset=\"https:\/\/www.boichat.ch\/wordpress\/wp-content\/uploads\/2017\/12\/sensorIR.jpg 350w, https:\/\/www.boichat.ch\/wordpress\/wp-content\/uploads\/2017\/12\/sensorIR-300x193.jpg 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/127.0.0.1\/joomlaovh\/images\/sampledata\/legos\/baliseIR.jpg\" alt=\"\">Les boutons de la balise infrarouge sont expliqu\u00e9s ci-dessous.<img decoding=\"async\" src=\"http:\/\/127.0.0.1\/joomlaovh\/images\/sampledata\/legos\/sensorIR.jpg\" alt=\"\"><br \/>\nLe capteur infrarouge doit \u00eatre&nbsp;connect\u00e9 au port 4.<\/p>\n<p>Pour comprendre ce code, j&#8217;assume que le lecteur poss\u00e8de d\u00e9j\u00e0 de bonnes connaissances en Java.<\/p>\n<p>La documentation API de la classe EV3IRSensor n&#8217;est plus disponible sur le Web.<\/p>\n<p>J&#8217;utilise un&nbsp;dongle USB Wifi de TP-Link connect\u00e9 \u00e0 la brique EV3 pour pouvoir t\u00e9l\u00e9charger, ex\u00e9cuter, voir d\u00e9boguer, les exercices directement depuis Eclipse. Mes autres articles de&nbsp;<a href=\"http:\/\/127.0.0.1\/joomlaovh\/index.php\/lego-mindstorms\/java-avec-lejos\" target=\"_blank\" rel=\"noopener noreferrer\">cette cat\u00e9gorie<\/a>&nbsp;sont \u00e0 consulter pour la partie installation et l\u2019environnement Eclipse.<\/p>\n<p>L&#8217;indentation de 3 d\u00e9finie dans l&#8217;\u00e9diteur de code Java dans Eclipse est un peu faible, mais n\u00e9cessaire pour&nbsp;montrer correctement le code source sur un site Web comme celui-ci.<\/p>\n<pre><b>import lejos.hardware.lcd.LCD;\nimport lejos.hardware.port.SensorPort;\nimport lejos.hardware.sensor.EV3IRSensor;\nimport lejos.utility.Delay;\n\npublic class Ev3Exercice1a {\n   public static void main(String[] args) {\n      EV3IRSensor ir = new EV3IRSensor(SensorPort.S4);\n\n      boolean continuing = true;  \/\/Stop for particular key pressed\n      int channel        = 0;     \/\/The red switch\n      int loopCount      = 0;     \n\n      while (continuing) {\n         Delay.msDelay(25);\n         loopCount++;\n\n         \/\/ Get the IR commands\n         byte [] cmds = new byte[4];\n         ir.getRemoteCommands(cmds, 0, cmds.length);\n\n         \/\/ Find out the active channel and button pressed\n         int theCmd = 0;\n         for (int i=0; i &lt; 4; i++) {\n            if (cmds[i] &gt; 0) {\n              channel = i + 1;\n               theCmd  = cmds[i];\n            }\n         }\n\n         LCD.drawString(\"Command:\" + theCmd + \" \", 0, 2);\n         LCD.drawString(\"Channel:\" + channel,      0, 3);\n         LCD.drawString(\"Counter:\" + loopCount,    0, 4);\n\n         LCD.drawString(\"Both red to stop\",        0, 6);\n\n         if (theCmd == 10) {\n            continuing = false; \n         }\n      }\n\n      ir.close();\n   }\n}<\/b><\/pre>\n<p>&nbsp;<\/p>\n<p>En jouant avec ce programme, nous allons comprendre pr\u00e9cis\u00e9ment comment fonctionne cette balise (assign\u00e9e \u00e0 l&#8217;entr\u00e9e 4 de la brique) et chacun des boutons.<\/p>\n<p>Nous pourrons alors nous imaginer des combinaisons de commandes pour, par exemple, actionner des moteurs ou stopper le programme.<\/p>\n<ul>\n<li>L&#8217;interrupteur rouge \u00e0 quatre positions, 1 en haut et 4 en bas, (valeur marqu\u00e9e d&#8217;ailleurs dans le petit indicateur rouge).Dans la classe&nbsp;<strong><em>Exercice1a<\/em><\/strong>, c&#8217;est la variable&nbsp;<em><strong>channel<\/strong><\/em>.<br \/>\nEn lisant la documentation API de la classe&nbsp;EV3IRSensor, mon&nbsp;interpr\u00e9tation&nbsp;est que nous pourrions aussi &#8220;jouer&#8221; avec 4 balises.<br \/>\nIci nous allons simplement accepter les commandes venant de n&#8217;importe quelles balises, donc de n&#8217;importe quelle position du curseur rouge.<\/li>\n<li>Les quatre petits boutons gris nous retournent une valeur diff\u00e9rente, mais seulement s&#8217;ils sont tenus press\u00e9s.<br \/>\nLes valeurs seront de 1 (c\u00f4t\u00e9 rouge en haut) \u00e0 4 (c\u00f4t\u00e9 bleu en bas).<\/li>\n<li>En pressant plusieurs de ces 4 petits boutons, nous obtiendrons une valeur compos\u00e9e.<br \/>\nEn tenant par exemple les deux \u00e0 gauche en m\u00eame temps (c\u00f4t\u00e9 marqueur rouge), le&nbsp;<em><strong>getRemoteCommands()<\/strong><\/em>&nbsp;au travers de&nbsp;<em><strong>theCmd<\/strong>&nbsp;<\/em>retournera la valeur de 10. Ce cas est trait\u00e9 ici pour stopper le programme. Dans l&#8217;exercice suivant on consid\u00e9rera aussi les deux boutons \u00e0 droite pour la m\u00eame fonction.<\/li>\n<li>Le gros bouton gris est diff\u00e9rent. Il retourne la valeur de 9, mais restera actif. C&#8217;est aussi indiqu\u00e9 par la petite lampe verte en haut de la balise.<br \/>\nPour le d\u00e9sactiver, nous presserons ce bouton \u00e0 nouveau, une seconde fois, ou alors un des 4 petits boutons.<\/li>\n<\/ul>\n<p>Nous comprendrons facilement que le gros bouton gris pourrait \u00eatre utilis\u00e9 afin d&#8217;activer diff\u00e9rents modes de commandes.<\/p>\n<p>Il n&#8217;y a que peu de remarques pour ce premier exemple:<\/p>\n<ul>\n<li>Le constructeur&nbsp;<em><strong>EV3IRSensor ir = new EV3IRSensor(SensorPort.S4);<\/strong><\/em>&nbsp;nous indique sur quel port de la brique est connect\u00e9 le capteur infrarouge.<\/li>\n<li>L&#8217;instruction&nbsp;<em><strong>ir.getRemoteCommands(cmds, 0, cmds.length);<\/strong><\/em>&nbsp;nous retourne 0 (pas de boutons press\u00e9s au moment de la demande) ou alors une des 11 valeurs comme d\u00e9crit dans l&#8217;API.<br \/>\n<em><strong>cmds<\/strong>&nbsp;<\/em>a une dimension de 4 pour les 4 canaux.<\/li>\n<li>Les valeurs 0 et 2 de&nbsp;<em><strong>LCD.drawString(&#8220;Command:&#8221; + theCmd + &#8221; &#8220;, 0, 2);<\/strong><\/em>correspondent \u00e0 la position sur le petit \u00e9cran o\u00f9 sera affich\u00e9 le texte.<\/li>\n<\/ul>\n<hr>\n<p>Nous allons passer \u00e0 la classe&nbsp;<strong><em>Exercice1b<\/em><\/strong>&nbsp;en r\u00e9utilisant le code de la pr\u00e9c\u00e9dente afin d&#8217;activer les deux grands servomoteurs.<\/p>\n<pre><b>import lejos.hardware.lcd.LCD;\nimport lejos.hardware.motor.Motor;\nimport lejos.hardware.port.SensorPort;\nimport lejos.hardware.sensor.EV3IRSensor;\nimport lejos.robotics.RegulatedMotor;\nimport lejos.utility.Delay;\n\npublic class Ev3Exercice1b {\n\n   static RegulatedMotor leftMotor  = Motor.B;\n   static RegulatedMotor rightMotor = Motor.C;\n\n   public static void main(String[] args) {\n      int speedMotor = 400;\n\n      EV3IRSensor ir = new EV3IRSensor(SensorPort.S4);\n\n      leftMotor.setSpeed(speedMotor);\n      rightMotor.setSpeed(speedMotor);\n\n      LCD.drawString(\"EV3 Ready\", 0, 2);\n\n      boolean continuing = true; \/\/ Stop for particular key pressed\n         while (continuing) {\n         Delay.msDelay(25);\n\n         int theCmd = ir.getRemoteCommand(0); \/\/ Get the command from channel 1\n\n         if ((theCmd &gt; 0) &amp;&amp; (theCmd &lt; 10)) {   \n            LCD.drawString(\"Command:\" + theCmd + \" \", 0, 2);\n            LCD.drawString(\"Both red to stop\", 0, 6);\n         }\n\n         switch (theCmd) {\n            case 0:\n               leftMotor.stop();\n               rightMotor.stop();\n               break;\n\n            case 1:\n               leftMotor.forward();\n               rightMotor.stop();\n               break;\n            case 2:\n               leftMotor.backward();\n               rightMotor.stop();\n               break;\n            case 3:\n               rightMotor.forward();\n               leftMotor.stop();\n               break;\n            case 4:\n               rightMotor.backward();\n               leftMotor.stop();\n               break;\n            case 5:\n               leftMotor.forward();\n               rightMotor.forward();\n               break;\n            case 8:\n               leftMotor.backward();\n               rightMotor.backward();\n               break;\n\n            default:\n               break;\n         }\n\n         if ((theCmd == 10) || (theCmd == 11)) {\n            continuing = false; \/\/Stop the program\n            leftMotor.stop();\n            rightMotor.stop();\n         }\n      }\n      \n      ir.close(); \/\/The IR sensor  \n   }\n}<\/b><\/pre>\n<p>Ces quelques remarques vont nous aider \u00e0 comprendre cet second exercice:<\/p>\n<ul>\n<li>J&#8217;ai tout de suite ajout\u00e9&nbsp;<em><strong>LCD.drawString(&#8220;EV3 Ready&#8221;, 0, 2);<\/strong><\/em>&nbsp;afin de savoir \u00e0 quel moment le programme \u00e9tait pr\u00eat pour accepter les premi\u00e8res commandes depuis la balise IR.<br \/>\nDepuis Eclipse, cela prend un peu plus de temps pour le t\u00e9l\u00e9chargement.<\/li>\n<li>Le&nbsp;<strong><em>getRemoteCommand(0)<\/em><\/strong>&nbsp;permet de r\u00e9cup\u00e9rer la commande de la balise IR qui doit avoir ici, imp\u00e9rativement, l&#8217;interrupteur rouge sur la position 1 (index 0).<\/li>\n<li>Le&nbsp;<em><strong>case 0<\/strong>&nbsp;<\/em>du&nbsp;<em><strong>switch<\/strong>&nbsp;<\/em>va stopper les deux moteurs m\u00eame s&#8217;ils ne sont pas actifs, c&#8217;est plus facile pour le code. Nous sommes dans le cas o\u00f9 aucun bouton est press\u00e9.<\/li>\n<li>Les&nbsp;<strong><em>case<\/em><\/strong>s&nbsp;<strong><em>1<\/em><\/strong>,&nbsp;<strong><em>2<\/em><\/strong>,&nbsp;<strong><em>3<\/em>&nbsp;<\/strong>et&nbsp;<strong><em>4<\/em><\/strong>&nbsp;vont activer&nbsp;un des deux moteurs dans une des deux directions. L&#8217;autre moteur est stopp\u00e9, m\u00eame s&#8217;il n&#8217;\u00e9tait pas actif.<br \/>\nNous pourrons donc faire tourner le robot pour lui faire changer de direction.<\/li>\n<li><em><strong>Les case<\/strong><\/em>s&nbsp;<em><strong>5<\/strong><\/em>&nbsp;et&nbsp;<em><strong>8<\/strong><\/em>&nbsp;vont activer les deux moteurs en m\u00eame temps. Le robot avancera ou reculera &#8230; tout droit.<\/li>\n<\/ul>\n<p>En jouant avec la balise IR, nous nous rendrons compte rapidement du probl\u00e8me. Pour les&nbsp;<em><strong>case<\/strong><\/em>s&nbsp;<em><strong>5<\/strong><\/em>&nbsp;et&nbsp;<em><strong>8<\/strong><\/em>,&nbsp;le robot aura tendance \u00e0 faire une petite rotation en fin de parcours. C&#8217;est tout \u00e0 fait explicable: lorsqu&#8217;on l\u00e2che les deux boutons, il est difficile de le faire pr\u00e9cis\u00e9ment, en m\u00eame temps, aussi \u00e0 cause du d\u00e9lais de 25ms (lecture de la balise 40 fois par seconde). Un des boutons restera donc press\u00e9 un court instant. Il faudrait rajouter du code pour analyser ce cas, o\u00f9 alors faire avancer ou reculer le robot avec un seul bouton.<\/p>\n<p>Un des&nbsp;<strong><em>Exercice1a<\/em><\/strong>&nbsp;ou&nbsp;<strong><em>Exercice1b<\/em><\/strong>&nbsp;peut, \u00e0 tout moment, \u00eatre d\u00e9finis comme programme par d\u00e9faut de la brique EV3.&nbsp;<a href=\"https:\/\/sourceforge.net\/p\/lejos\/wiki\/Using%20the%20Menu%20System\/\" target=\"_blank\" rel=\"noopener noreferrer\">C&#8217;est bien expliqu\u00e9 ici<\/a>.<\/p>\n<p>Finalement j&#8217;ai eu beaucoup de plaisir \u00e0 \u00e9crire ce code, le comprendre et l&#8217;expliquer ici.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article est le m\u00eame que sur mon site Joomla, mais parmi d&#8217;autres qui concernent l&#8217;EV3. Lorsque j&#8217;ai commenc\u00e9 de jouer avec la balise infrarouge&hellip;<\/p>\n","protected":false},"author":1,"featured_media":45,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[2],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat<\/title>\n<meta name=\"description\" content=\"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l&#039;impression 3D, l&#039;\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat\" \/>\n<meta property=\"og:description\" content=\"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l&#039;impression 3D, l&#039;\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Jean-Bernard Boichat\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-09T16:17:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-11T07:51:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.boichat.ch\/wordpress\/wp-content\/uploads\/2017\/12\/Ev3JavaExercices1s.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"325\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jean-Bernard Boichat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jean-Bernard Boichat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\"},\"author\":{\"name\":\"Jean-Bernard Boichat\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751\"},\"headline\":\"LEGO Mindstorms EV3: Exercices pratiques en Java (1)\",\"datePublished\":\"2017-12-09T16:17:07+00:00\",\"dateModified\":\"2025-10-11T07:51:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\"},\"wordCount\":1048,\"publisher\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751\"},\"articleSection\":[\"Lego EV3 Java\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\",\"url\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\",\"name\":\"LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat\",\"isPartOf\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#website\"},\"datePublished\":\"2017-12-09T16:17:07+00:00\",\"dateModified\":\"2025-10-11T07:51:00+00:00\",\"description\":\"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l'impression 3D, l'\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.boichat.ch\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LEGO Mindstorms EV3: Exercices pratiques en Java (1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#website\",\"url\":\"https:\/\/www.boichat.ch\/wordpress\/\",\"name\":\"Jean-Bernard Boichat\",\"description\":\"Mon site WordPress\",\"publisher\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.boichat.ch\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751\",\"name\":\"Jean-Bernard Boichat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/862886ce35a52b9d13595e18ac3c3ea5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/862886ce35a52b9d13595e18ac3c3ea5?s=96&d=mm&r=g\",\"caption\":\"Jean-Bernard Boichat\"},\"logo\":{\"@id\":\"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat","description":"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l'impression 3D, l'\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/","og_locale":"fr_FR","og_type":"article","og_title":"LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat","og_description":"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l'impression 3D, l'\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.","og_url":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/","og_site_name":"Jean-Bernard Boichat","article_published_time":"2017-12-09T16:17:07+00:00","article_modified_time":"2025-10-11T07:51:00+00:00","og_image":[{"width":400,"height":325,"url":"https:\/\/www.boichat.ch\/wordpress\/wp-content\/uploads\/2017\/12\/Ev3JavaExercices1s.jpg","type":"image\/jpeg"}],"author":"Jean-Bernard Boichat","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Jean-Bernard Boichat","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#article","isPartOf":{"@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/"},"author":{"name":"Jean-Bernard Boichat","@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751"},"headline":"LEGO Mindstorms EV3: Exercices pratiques en Java (1)","datePublished":"2017-12-09T16:17:07+00:00","dateModified":"2025-10-11T07:51:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/"},"wordCount":1048,"publisher":{"@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751"},"articleSection":["Lego EV3 Java"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/","url":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/","name":"LEGO Mindstorms EV3: Exercices pratiques en Java (1) - Jean-Bernard Boichat","isPartOf":{"@id":"https:\/\/www.boichat.ch\/wordpress\/#website"},"datePublished":"2017-12-09T16:17:07+00:00","dateModified":"2025-10-11T07:51:00+00:00","description":"Site de Jean-Bernard Boichat consacr\u00e9 principalement \u00e0 Wordpress, Elementor, l'impression 3D, l'\u00e9lectricit\u00e9, les installations photovolta\u00efques et la voiture \u00e9lectrique.","breadcrumb":{"@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.boichat.ch\/wordpress\/2017\/12\/09\/lego-mindstorms-ev3-exercices-pratiques-en-java-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.boichat.ch\/wordpress\/"},{"@type":"ListItem","position":2,"name":"LEGO Mindstorms EV3: Exercices pratiques en Java (1)"}]},{"@type":"WebSite","@id":"https:\/\/www.boichat.ch\/wordpress\/#website","url":"https:\/\/www.boichat.ch\/wordpress\/","name":"Jean-Bernard Boichat","description":"Mon site WordPress","publisher":{"@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.boichat.ch\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/fe6328cc5b74b8a6e8d841285a928751","name":"Jean-Bernard Boichat","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/862886ce35a52b9d13595e18ac3c3ea5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/862886ce35a52b9d13595e18ac3c3ea5?s=96&d=mm&r=g","caption":"Jean-Bernard Boichat"},"logo":{"@id":"https:\/\/www.boichat.ch\/wordpress\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/posts\/16"}],"collection":[{"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":0,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/media\/45"}],"wp:attachment":[{"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.boichat.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}