{"id":107,"date":"2012-04-20T21:07:50","date_gmt":"2012-04-20T21:07:50","guid":{"rendered":"http:\/\/arthurlambert.fr\/robotique\/wordpress\/?p=107"},"modified":"2014-04-17T18:18:23","modified_gmt":"2014-04-17T18:18:23","slug":"premier-programme-avec-arduino-moteur-capteur-et-evitement-dobstacle","status":"publish","type":"post","link":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/premier-programme-avec-arduino-moteur-capteur-et-evitement-dobstacle\/","title":{"rendered":"Premier programme avec Arduino : Moteur, Capteur et \u00e9vitement d&#8217;obstacle"},"content":{"rendered":"<p><!--:fr--><\/p>\n<h3>Etape 1 : Mise en place de l&#8217;environnement<\/h3>\n<p>Sur Windaub rien de plus simple, il suffit de t\u00e9l\u00e9charger l&#8217;IDE Arduino <a href=\"http:\/\/arduino.cc\/en\/Main\/Software\">ici<\/a><\/p>\n<p>Concernant la configuration la encore c&#8217;est tr\u00e8s simple, il suffit de :<\/p>\n<ul>\n<li>Choisir le mod\u00e8le de sa carte dans la liste disponible du menu Tools &gt; board<\/li>\n<li>D\u00e9finir le port de communication utilis\u00e9 dans Tools &gt;Serial Port<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">De plus il existe un syst\u00e8me de d\u00e9bug via le port s\u00e9rie via le menu Tools &gt;Serial Monitor, celui ci permet de debugguer son programme assez facilement a l&#8217;aide de la fonction Serial.write (XXX). Nous pouvons m\u00eame simuler l&#8217;envoi de commande via une entr\u00e9e\u00a0standard\u00a0toute pr\u00eate.<\/p>\n<h3>Etape 2 : Premier programme : Test des moteurs<\/h3>\n<p>Voici un petit code permettant de tester vos branchements moteurs<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nint E1 = 5; \/\/M1 Speed Control\r\nint E2 = 6; \/\/M2 Speed Control\r\nint M1 = 4; \/\/M1 Direction Control\r\nint M2 = 7; \/\/M2 Direction Control\r\n\r\nint speed = 200;\r\n\r\nvoid run_motor()\r\n{\r\nanalogWrite (E2, speed);\r\ndigitalWrite(M2,LOW);\r\nanalogWrite (E1, speed);\r\ndigitalWrite(M1,HIGH);\r\n}\r\nvoid setup(void)\r\n{\r\nint i;\r\nfor(i=6;i&lt;=9;i++)\r\npinMode(i, OUTPUT);\r\n\r\nSerial.begin(19200); \/\/Set Baud Rate\r\n}\r\nvoid loop(void)\r\n{\r\nrun_motor();\r\n}\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">Un programme arduino se compose de deux fonctions principales. Une fonction setup correspondant a l&#8217;initialisation et une fonction\u00a0loop correspondant au programme qui sera\u00a0ex\u00e9cut\u00e9\u00a0comme son nom l&#8217;indique en continue.<\/p>\n<p style=\"text-align: justify;\">Dans la fonction setup, nous d\u00e9finissons que les pin correspondant aux commandes moteurs sont en mode output. En effet nous avons besoin d&#8217;envoyer des valeurs\u00a0a nos moteurs, donc en toute logique nous choisissons le mode output. Ici les pins correspondant aux moteurs vont de 4 a 7, <strong>attention selon la version de votre board, ces pins peuvent \u00eatre\u00a0diff\u00e9rents, ceci est a d\u00e9terminer a l&#8217;aide des indications sur les datasheets ou plus simplement directement sur la carte<\/strong>. Enfin le serial.begin permet de d\u00e9finir la vitesse de transmission du port s\u00e9rie. Celle ci doit \u00eatre la m\u00eame dans le mode s\u00e9rial monitor si vous voulez communiquer de fa\u00e7on correcte avec votre carte.<\/p>\n<p style=\"text-align: justify;\">Dans la fonction loop, nous appelons la fonction qui active les moteurs. AnalogWrite comme son nom l&#8217;indique permet d&#8217;\u00e9crire sur un pin analogique tandis que le DigitalWrite permet d&#8217;\u00e9crire sur un pin digitale. Ainsi sur le pin de direction on peut envoyer LOW ou HIGH selon que vous vouliez mettre vos moteurs en marche arri\u00e8re ou avant, ensuite pour ce qui est des pins de vitesse, on y d\u00e9finit une vitesse celle ci \u00e9tant en bytes la fourchette de valeur est 0 &#8211; 255.<\/p>\n<p style=\"text-align: justify;\">Vous allez me dire qu&#8217;il y a un probl\u00e8me dans mon code ? Et bien oui mes deux moteurs ne semblent pas tourner dans le m\u00eame sens. Et bien pas vraiment, au cours de mon montage j&#8217;ai donc branch\u00e9 deux moteurs en parall\u00e8les sur chaque\u00a0contr\u00f4leur\u00a0moteur ( Il y en a que deux sur la carte, 4 moteurs donc pas le choix). Cependant j&#8217;ai fait mes soudures au hasard, ainsi il s&#8217;est av\u00e9r\u00e9 que mes deux moteurs ne sont pas branch\u00e9s dans le\u00a0m\u00eame\u00a0sens de polarit\u00e9. Ainsi si je veux aller en marche avant avec l&#8217;un je dois lui envoyer LOW, tandis que l&#8217;autre a besoin de HIGH. Ceci n&#8217;est pas tr\u00e8s g\u00eanant \u00e9tant donn\u00e9 qu&#8217;on programme notre petite fonction une fois et qu&#8217;apr\u00e8s on n&#8217;y touche plus.<\/p>\n<p style=\"text-align: justify;\">Pour tester le programme rien de plus simple, il y a un bouton <strong>upload<\/strong>. Attention sur certaine carte dont la Romeo, il est\u00a0n\u00e9cessaire\u00a0de reset la carte entre chaque nouveau upload de code. Pour cela, il y a en g\u00e9n\u00e9ral un bouton sur la carte. Ainsi il vous suffira d&#8217;appuyer sur le bouton de reset\u00a0bri\u00e8vement\u00a0juste avant de lancer l&#8217;upload.<\/p>\n<p style=\"text-align: justify;\">Finalement, on d\u00e9branche son robot, on enclenche l&#8217;interrupteur et on esp\u00e8re que cela fonctionne, sinon a vous la chasse au faux contact, mauvaise soudure, etc..<\/p>\n<h3>Etape 3 : Int\u00e9gration de capteur et arr\u00eat de la plateforme a la rencontre d&#8217;un obstacle<\/h3>\n<p>capteur utilis\u00e9 : \u00a0Module capteur de distance infrarouge Sharp GP2Y0A21 \u00a0(<a href=\"http:\/\/www.dfrobot.com\/image\/data\/SEN0014\/gp2y0a21yk0f.pdf\">datasheet<\/a>) <a href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-117 aligncenter\" title=\"capteur_sharp\" alt=\"\" src=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp.png\" width=\"164\" height=\"134\" \/><\/a><\/p>\n<p>Nous allons tout d&#8217;abord brancher notre capteur. Celui que nous utilisons est analogique, nous allons donc le brancher sur les pins analogique. Cependant votre bon sens vous dira que si celui ci est digital vous devrez utiliser les pins correspondant. Concernant notre cher capteur, pour le brancher rien de plus simple, un connecteur JST est deja plugguer sur le capteur, donc plus qu&#8217;a le brancher de fa\u00e7on tr\u00e8s simple. Tout d&#8217;abord en lisant notre datasheet, nous rep\u00e9rons que le cable rouge est le plus (Vcc sur le sch\u00e9ma), Nous devons brancher ce Vcc sur le pin 5V de l&#8217;analogique, le Gnd sur le Gnd et enfin le Vo sur le S. Dans mon cas, j&#8217;ai branch\u00e9 mon capteur sur le pin 0.<\/p>\n<div id=\"attachment_118\" style=\"width: 261px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp_connector.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-118\" class=\"size-full wp-image-118\" title=\"capteur_sharp_connector\" alt=\"\" src=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp_connector.png\" width=\"251\" height=\"177\" \/><\/a><p id=\"caption-attachment-118\" class=\"wp-caption-text\">extrait du datasheet du capteur sharp<\/p><\/div>\n<p>Voici un petit programme tr\u00e8s simple permettant de tester son bon fonctionnement :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\n\/\/Standard PWM DC control\r\n\r\nint E1 = 5; \/\/M1 Speed Control\r\nint E2 = 6; \/\/M2 Speed Control\r\nint M1 = 4; \/\/M1 Direction Control\r\nint M2 = 7; \/\/M2 Direction Control\r\n\r\nint front_sensor = 0; \/\/ pin analog 0\r\nint speed = 200;\r\n\r\n\/\/ mootor functions\r\n\r\nvoid run_motor()\r\n{\r\n analogWrite (E2, speed);\r\n digitalWrite(M2,LOW);\r\n analogWrite (E1, speed);\r\n digitalWrite(M1,HIGH);\r\n}\r\n\r\nvoid stop_motor ()\r\n{\r\n analogWrite (E1, 0);\r\n analogWrite (E2, 0);\r\n}\r\n\r\n\/\/ sensor functions\r\n\r\nboolean detect_obstacle (int sensor)\r\n{\r\n if (analogRead(sensor) &gt; 200)\r\n return true;\r\n return false;\r\n}\r\n\r\nvoid setup(void)\r\n{\r\n int i;\r\n for(i=6;i&lt;=9;i++)\r\n pinMode(i, OUTPUT);\r\n\r\nSerial.begin(19200); \/\/Set Baud Rate\r\n}\r\nvoid loop(void)\r\n{\r\n\r\nif (detect_obstacle (front_sensor) == false)\r\n {\r\n run_motor();\r\n }\r\n else\r\n {\r\n stop_motor ();\r\n }\r\n}\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">Dans ce code, nous avons donc une fonction permettant de d\u00e9tecter les obstacles. Dans le cas ou nous d\u00e9tectons un obstacle, nous stoppons le robot. Le capteur est analogique, nous utilisons donc la fonction AnalogRead, le param\u00e8tre qui lui est pass\u00e9 correspondant a la valeur du pin sur lequel est branch\u00e9 le capteur a savoir 0. Enfin on d\u00e9finit le fait de tomber sur un obstacle lorsqu&#8217;on est a une certaine distance de celui ci. Il faut savoir que plus la valeur renvoy\u00e9e par le capteur et plus l&#8217;obstacle sera proche. Donc attention la valeur renvoy\u00e9e est une tension correspondant au voltage .<\/p>\n<h3>Etape 4 : Programme d&#8217;\u00e9vitement d&#8217;obstacle<\/h3>\n<p>Voir l&#8217;\u00e9tape 4 dans la<a title=\"Premier programme avec Arduino : Evitement d\u2019obstacle \u2013 Partie 2\" href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/evitement-dobstacle-partie-2\/\"> seconde partie de l&#8217;article.<\/a><!--:--><!--:en--><\/p>\n<h3>Etape 1 : Mise en place de l&#8217;environnement<\/h3>\n<p>Sur Windaub rien de plus simple, il suffit de t\u00e9l\u00e9charger l&#8217;IDE Arduino <a href=\"http:\/\/arduino.cc\/en\/Main\/Software\">ici<\/a><\/p>\n<p>Concernant la configuration la encore c&#8217;est tr\u00e8s simple, il suffit de :<\/p>\n<ul>\n<li>Choisir le mod\u00e8le de sa carte dans la liste disponible du menu Tools > board<\/li>\n<li>D\u00e9finir le port de communication utilis\u00e9 dans Tools >Serial Port<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">De plus il existe un syst\u00e8me de d\u00e9bug via le port s\u00e9rie via le menu Tools >Serial Monitor, celui ci permet de debugguer son programme assez facilement a l&#8217;aide de la fonction Serial.write (XXX). Nous pouvons m\u00eame simuler l&#8217;envoi de commande via une entr\u00e9e\u00a0standard\u00a0toute pr\u00eate.<\/p>\n<h3>Etape 2 : Premier programme : Test des moteurs<\/h3>\n<p>Voici un petit code permettant de tester vos branchements moteurs<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nint E1 = 5; \/\/M1 Speed Control\r\nint E2 = 6; \/\/M2 Speed Control\r\nint M1 = 4; \/\/M1 Direction Control\r\nint M2 = 7; \/\/M1 Direction Control\r\n\r\nint speed = 200;\r\n\r\nvoid run_motor()\r\n{\r\nanalogWrite (E2, speed);\r\ndigitalWrite(M2,LOW);\r\nanalogWrite (E1, speed);\r\ndigitalWrite(M1,HIGH);\r\n}\r\nvoid setup(void)\r\n{\r\nint i;\r\nfor(i=6;i&lt;=9;i++)\r\npinMode(i, OUTPUT);\r\n\r\nSerial.begin(19200); \/\/Set Baud Rate\r\n}\r\nvoid loop(void)\r\n{\r\nrun_motor();\r\n}\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">Un programme arduino se compose de deux fonctions principales. Une fonction setup correspondant a l&#8217;initialisation et une fonction\u00a0loop correspondant au programme qui sera\u00a0ex\u00e9cut\u00e9\u00a0comme son nom l&#8217;indique en continue.<\/p>\n<p style=\"text-align: justify;\">Dans la fonction setup, nous d\u00e9finissons que les pin correspondant aux commandes moteurs sont en mode output. En effet nous avons besoin d&#8217;envoyer des valeurs\u00a0a nos moteurs, donc en toute logique nous choisissons le mode output. Ici les pins correspondant aux moteurs vont de 4 a 7, <strong>attention selon la version de votre board, ces pins peuvent \u00eatre\u00a0diff\u00e9rents, ceci est a d\u00e9terminer a l&#8217;aide des indications sur les datasheets ou plus simplement directement sur la carte<\/strong>. Enfin le serial.begin permet de d\u00e9finir la vitesse de transmission du port s\u00e9rie. Celle ci doit \u00eatre la m\u00eame dans le mode s\u00e9rial monitor si vous voulez communiquer de fa\u00e7on correcte avec votre carte.<\/p>\n<p style=\"text-align: justify;\">Dans la fonction loop, nous appelons la fonction qui active les moteurs. AnalogWrite comme son nom l&#8217;indique permet d&#8217;\u00e9crire sur un pin analogique tandis que le DigitalWrite permet d&#8217;\u00e9crire sur un pin digitale. Ainsi sur le pin de direction on peut envoyer LOW ou HIGH selon que vous vouliez mettre vos moteurs en marche arri\u00e8re ou avant, ensuite pour ce qui est des pins de vitesse, on y d\u00e9finit une vitesse celle ci \u00e9tant en bytes la fourchette de valeur est 0 &#8211; 255.<\/p>\n<p style=\"text-align: justify;\">Vous allez me dire qu&#8217;il y a un probl\u00e8me dans mon code ? Et bien oui mes deux moteurs ne semblent pas tourner dans le m\u00eame sens. Et bien pas vraiment, au cours de mon montage j&#8217;ai donc branch\u00e9 deux moteurs en parall\u00e8les sur chaque\u00a0contr\u00f4leur\u00a0moteur ( Il y en a que deux sur la carte, 4 moteurs donc pas le choix). Cependant j&#8217;ai fait mes soudures au hasard, ainsi il s&#8217;est av\u00e9r\u00e9 que mes deux moteurs ne sont pas branch\u00e9s dans le\u00a0m\u00eame\u00a0sens de polarit\u00e9. Ainsi si je veux aller en marche avant avec l&#8217;un je dois lui envoyer LOW, tandis que l&#8217;autre a besoin de HIGH. Ceci n&#8217;est pas tr\u00e8s g\u00eanant \u00e9tant donn\u00e9 qu&#8217;on programme notre petite fonction une fois et qu&#8217;apr\u00e8s on n&#8217;y touche plus.<\/p>\n<p style=\"text-align: justify;\">Pour tester le programme rien de plus simple, il y a un bouton <strong>upload<\/strong>. Attention sur certaine carte dont la Romeo, il est\u00a0n\u00e9cessaire\u00a0de reset la carte entre chaque nouveau upload de code. Pour cela, il y a en g\u00e9n\u00e9ral un bouton sur la carte. Ainsi il vous suffira d&#8217;appuyer sur le bouton de reset\u00a0bri\u00e8vement\u00a0juste avant de lancer l&#8217;upload.<\/p>\n<p style=\"text-align: justify;\">Finalement, on d\u00e9branche son robot, on enclenche l&#8217;interrupteur et on esp\u00e8re que cela fonctionne, sinon a vous la chasse au faux contact, mauvaise soudure, etc..<\/p>\n<h3>Etape 3 : Int\u00e9gration de capteur et arr\u00eat de la plateforme a la rencontre d&#8217;un obstacle<\/h3>\n<p>capteur utilis\u00e9 : \u00a0Module capteur de distance infrarouge Sharp GP2Y0A21 \u00a0(<a href=\"http:\/\/www.dfrobot.com\/image\/data\/SEN0014\/gp2y0a21yk0f.pdf\">datasheet<\/a>) <a href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-117 aligncenter\" title=\"capteur_sharp\" src=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp.png\" alt=\"\" width=\"164\" height=\"134\" \/><\/a><\/p>\n<p>Nous allons tout d&#8217;abord brancher notre capteur. Celui que nous utilisons est analogique, nous allons donc le brancher sur les pins analogique. Cependant votre bon sens vous dira que si celui ci est digital vous devrez utiliser les pins correspondant. Concernant notre cher capteur, pour le brancher rien de plus simple, un connecteur JST est deja plugguer sur le capteur, donc plus qu&#8217;a le brancher de fa\u00e7on tr\u00e8s simple. Tout d&#8217;abord en lisant notre datasheet, nous rep\u00e9rons que le cable rouge est le plus (Vcc sur le sch\u00e9ma), Nous devons brancher ce Vcc sur le pin 5V de l&#8217;analogique, le Gnd sur le Gnd et enfin le Vo sur le S. Dans mon cas, j&#8217;ai branch\u00e9 mon capteur sur le pin 0.<\/p>\n<div id=\"attachment_118\" style=\"width: 261px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp_connector.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-118\" class=\"size-full wp-image-118\" title=\"capteur_sharp_connector\" src=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-content\/uploads\/2012\/04\/capteur_sharp_connector.png\" alt=\"\" width=\"251\" height=\"177\" \/><\/a><p id=\"caption-attachment-118\" class=\"wp-caption-text\">extrait du datasheet du capteur sharp<\/p><\/div>\n<p>Voici un petit programme tr\u00e8s simple permettant de tester son bon fonctionnement :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\n\/\/Standard PWM DC control\r\n\r\nint E1 = 5; \/\/M1 Speed Control\r\nint E2 = 6; \/\/M2 Speed Control\r\nint M1 = 4; \/\/M1 Direction Control\r\nint M2 = 7; \/\/M1 Direction Control\r\n\r\nint front_sensor = 0; \/\/ pin analog 0\r\nint speed = 200;\r\n\r\n\/\/ mootor functions\r\n\r\nvoid run_motor()\r\n{\r\n analogWrite (E2, speed);\r\n digitalWrite(M2,LOW);\r\n analogWrite (E1, speed);\r\n digitalWrite(M1,HIGH);\r\n}\r\n\r\nvoid stop_motor ()\r\n{\r\n analogWrite (E1, 0);\r\n analogWrite (E2, 0);\r\n}\r\n\r\n\/\/ sensor functions\r\n\r\nboolean detect_obstacle (int sensor)\r\n{\r\n if (analogRead(sensor) &gt; 200)\r\n return true;\r\n return false;\r\n}\r\n\r\nvoid setup(void)\r\n{\r\n int i;\r\n for(i=6;i&lt;=9;i++)\r\n pinMode(i, OUTPUT);\r\n\r\nSerial.begin(19200); \/\/Set Baud Rate\r\n}\r\nvoid loop(void)\r\n{\r\n\r\nif (detect_obstacle (front_sensor) == false)\r\n {\r\n run_motor();\r\n }\r\n else\r\n {\r\n stop_motor ();\r\n }\r\n}\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">Dans ce code, nous avons donc une fonction permettant de d\u00e9tecter les obstacles. Dans le cas ou nous d\u00e9tectons un obstacle, nous stoppons le robot. Le capteur est analogique, nous utilisons donc la fonction AnalogRead, le param\u00e8tre qui lui est pass\u00e9 correspondant a la valeur du pin sur lequel est branch\u00e9 le capteur a savoir 0. Enfin on d\u00e9finit le fait de tomber sur un obstacle lorsqu&#8217;on est a une certaine distance de celui ci. Il faut savoir que plus la valeur renvoy\u00e9e par le capteur et plus l&#8217;obstacle sera proche. Donc attention la valeur renvoy\u00e9e est une tension correspondant au voltage .<\/p>\n<h3>Etape 4 : Programme d&#8217;\u00e9vitement d&#8217;obstacle<\/h3>\n<p>Voir l&#8217;\u00e9tape 4 dans la<a title=\"Premier programme avec Arduino : Evitement d\u2019obstacle \u2013 Partie 2\" href=\"http:\/\/arthurlambert.fr\/robotique\/wordpress\/evitement-dobstacle-partie-2\/\"> seconde partie de l&#8217;article.<\/a><!--:--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Etape 1 : Mise en place de l&#8217;environnement Sur Windaub rien de plus simple, il suffit de t\u00e9l\u00e9charger l&#8217;IDE Arduino ici Concernant la configuration la encore c&#8217;est tr\u00e8s simple, il suffit de : Choisir le mod\u00e8le de sa carte dans &hellip; <a href=\"https:\/\/arthurlambert.fr\/robotique\/wordpress\/premier-programme-avec-arduino-moteur-capteur-et-evitement-dobstacle\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[24,7,27,28,29,26,12,13],"class_list":["post-107","post","type-post","status-publish","format-standard","hentry","category-projet_robot","tag-aide","tag-arduino","tag-capteur-sharp","tag-eviter-obstacle","tag-moteur","tag-premier-programme","tag-tutorial","tag-tutoriel"],"_links":{"self":[{"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/posts\/107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/comments?post=107"}],"version-history":[{"count":35,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/posts\/107\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/media?parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/categories?post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arthurlambert.fr\/robotique\/wordpress\/wp-json\/wp\/v2\/tags?post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}