{"id":4381,"date":"2022-12-07T09:26:39","date_gmt":"2022-12-07T08:26:39","guid":{"rendered":"http:\/\/lamartinieredesign.fr\/?page_id=4381"},"modified":"2022-12-07T11:03:01","modified_gmt":"2022-12-07T10:03:01","slug":"arduino-processing","status":"publish","type":"page","link":"https:\/\/lamartinieredesign.fr\/?page_id=4381","title":{"rendered":"Arduino &#038; Processing"},"content":{"rendered":"\n<p>Il y a deux exemples fournis avec Arduino  pour \u00e9tablir une communication entre Arduino et Processing qui correspondent aux deux sens de communication possible : Processing vers Arduino (exemple Physical Pixel) et Arduino vers Processing, plus courant (exemple Graph).<\/p>\n\n\n\n<p>La communication se fait dans les deux cas par le Port S\u00e9rie, soit la prise USB de votre ordi reli\u00e9 \u00e0 la carte Arduino.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Processing vers Arduino<\/h3>\n\n\n\n<p>Dans ce cas, il s&rsquo;agit d&rsquo;envoyer des informations depuis Processing vers un syst\u00e8me Arduino. En s&rsquo;inspirant de l&rsquo;exemple fourni dans Menu Fichier &gt; Exemples &gt; 04.Communication &gt; Physical Pixel, nous allons mettre en place un double code qui permet d&rsquo;allumer une led selon la position de la souris sur un \u00e9cran.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">1_a. Le code Processing<\/h5>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:12px\"><code>\/\/ Initialiser le Port s\u00e9rie\nimport processing.serial.*;\n\/\/ D\u00e9clarer un objet Serial pour le port utilis\u00e9\nSerial port;\n\ncolor fond = color(0);\n\nvoid setup() {\n  size(800, 600);\n  noStroke();\n  \n  \/\/ List all the available serial ports in the output pane.\n  \/\/ You will need to choose the port that the Arduino board is connected to from this list.\n  \/\/  The first port in the list is port #0 and the third port\n  \/\/ in the list is port #2.\n  printArray(Serial.list());\n\n  \/\/ Open the port the Arduino board is connected to (here #0)\n  \/\/ Make sure to open the port at the same speed Arduino is using (9600bps)\n  port = new Serial(this, Serial.list()&#91;1], 9600);\n}\n\nvoid draw() {\n  background(fond);\n  \n  \/\/ Dessiner un rectangle rouge sur la moiti\u00e9 droite de la fen\u00eatre\n  fill(255, 0, 0);\n  rect(width\/2, 0, width\/2, height);\n  \n  \/\/ Tester si la souris est dans la moiti\u00e9 droite ou gauche\n  if (mouseX &gt; width\/2) {\n    \/\/ envoyer 'H' si la souris est sur le rectangle rouge \u00e0 droite\n    \/\/ Cela allumera la led\n    port.write('H');\n    println('H');\n  }\n  else {\n    \/\/ envoyer 'L' si la souris est sur le rectangle blanc \u00e0 gauche\n    \/\/ cela \u00e9teindra la led\n    port.write('L');\n    println('L');\n  }\n}<\/code><\/pre>\n\n\n\n<p>Le code commence par \u00e9tablir la communication S\u00e9rie. Puis dans le draw(), un rectangle rouge est dessin\u00e9 sur la moiti\u00e9 droite de l&rsquo;\u00e9cran sur un fond noir. Enfin, on teste la position de la souris et on envoie une information \u00e0 Arduino. Lorsqu&rsquo;elle survole la zone rouge, la lettre &lsquo;H&rsquo; est transmise, sinon c&rsquo;est la lettre &lsquo;L&rsquo; qui est envoy\u00e9e.<\/p>\n\n\n\n<p>Les informations transmises par le port S\u00e9rie sont a priori des caract\u00e8res.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">1_b. Le montage<\/h5>\n\n\n\n<p>Placez directement une led rouge sur la carte Arduino, sur les pins 13 et Ground.<\/p>\n\n\n\n<p>La pin 13 est associ\u00e9e \u00e0 une r\u00e9sistance int\u00e9gr\u00e9e \u00e0 la carte et ne n\u00e9cessite donc pas l&rsquo;usage d&rsquo;une r\u00e9sistance en plus. Dans le cas d&rsquo;un montage sur Breadboard, une r\u00e9sistance de 220 Ohms est obligatoire.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-3 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13.gif\"><img decoding=\"async\" loading=\"lazy\" width=\"300\" height=\"241\" src=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13.gif\" alt=\"\" class=\"wp-image-4387\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13_bread_2.jpg\"><img decoding=\"async\" loading=\"lazy\" width=\"748\" height=\"302\" src=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13_bread_2.jpg\" alt=\"\" class=\"wp-image-4390\" srcset=\"https:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13_bread_2.jpg 748w, https:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2022\/12\/arduino_led_pin13_bread_2-300x121.jpg 300w\" sizes=\"(max-width: 748px) 100vw, 748px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h5 class=\"wp-block-heading\">1_c. Le code Arduino<\/h5>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:12px\"><code>\/\/ relier une led roude sur la pin 13\nconst int ledPin = 13;\n\/\/ la variable pour recevoir l'information envoy\u00e9e par Processing\nint incomingByte;\n\nvoid setup() {\n  \/\/ initialiser la communication Serial\n  Serial.begin(9600);\n  \/\/ d\u00e9clarer la pin de la led en sortie\n  pinMode(ledPin, OUTPUT);\n  \/\/ \u00e9teindre la led\n  digitalWrite(ledPin, LOW);\n}\n\nvoid loop() {\n  \/\/ tester s'il y a une information entrante\n  if (Serial.available() &gt; 0) {\n    \/\/ read the oldest byte in the serial buffer\n    incomingByte = Serial.read();\n    \/\/ if it's a capital H (ASCII 72), turn on the LED\n    if (incomingByte == 'H') {\n      digitalWrite(ledPin, HIGH);\n    }\n    \/\/ if it's an L (ASCII 76) turn off the LED\n    if (incomingByte == 'L') {\n      digitalWrite(ledPin, LOW);\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>Tapez et t\u00e9l\u00e9versez ce code sur la carte Arduino branch\u00e9e \u00e0 la prise USB de votre ordinateur.<\/p>\n\n\n\n<p>ATTENTION : il peut y avoir un conflit sur l&rsquo;utilisation du Port S\u00e9rie au moment de lancer le sketch Processing. Il faut alors quitter Arduino, lancer le sketch Processing et \u00e9ventuellement relancer Arduino.<\/p>\n\n\n\n<p>La commande qui permet de r\u00e9cup\u00e9rer le contenu du Port S\u00e9rie est Serial.read(); Cette valeur est un nombre entier, a priori  le code ASCII du caract\u00e8re envoy\u00e9 (<em>on pourrait le v\u00e9rifier avec un Serial.print() mais ce n&rsquo;est pas possible car \u00e0 ce moment l\u00e0, le port s\u00e9rie est occup\u00e9 par Processing<\/em>).<\/p>\n\n\n\n<p>Il ne reste plus qu&rsquo;\u00e0 adapter ce code aux situations que vous allez imaginer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Arduino vers Processing<\/h3>\n\n\n\n<p>Ici, \u00e0 l&rsquo;inverse, il s&rsquo;agira de r\u00e9cup\u00e9rer les donn\u00e9es de capteurs connect\u00e9s \u00e0 la carte Arduino et de les envoyer vers Processing pour les traiter en image et\/ou avec du son.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2_a. Le code Arduino<\/h4>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2_b. Le montage<\/h4>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2_c. Le code Processing<\/h4>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Quelques ressources<\/h3>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a deux exemples fournis avec Arduino pour \u00e9tablir une communication entre Arduino et Processing qui correspondent aux deux sens de communication possible : Processing vers Arduino (exemple Physical Pixel) et Arduino vers Processing, plus courant (exemple Graph). La communication se fait dans les deux cas par le Port S\u00e9rie, soit la prise USB &hellip; <a href=\"https:\/\/lamartinieredesign.fr\/?page_id=4381\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Arduino &#038; Processing<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1319,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/4381"}],"collection":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4381"}],"version-history":[{"count":13,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/4381\/revisions"}],"predecessor-version":[{"id":4402,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/4381\/revisions\/4402"}],"up":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1319"}],"wp:attachment":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}