{"id":2831,"date":"2020-04-20T16:02:47","date_gmt":"2020-04-20T14:02:47","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=2831"},"modified":"2020-05-10T17:06:09","modified_gmt":"2020-05-10T15:06:09","slug":"gestion-des-entrees-analogiques","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=2831","title":{"rendered":"Gestion des entr\u00e9es analogiques"},"content":{"rendered":"\n<h2 style=\"text-align: center;\"><strong>(par le protocole \u201dFirmata standard\u201d)<\/strong><\/h2>\n<p>&nbsp;<\/p>\n<p><br>Pour lire la valeur de la tension d\u2019une entr\u00e9e analogique (par exemple, la broche A0), il faut la d\u00e9clarer au pr\u00e9alable en entr\u00e9e analogique avec la commande suivante&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n<p style=\"padding-left: 40px;\"><strong>pinA0 = board.get_pin(&lsquo;a:0:i&rsquo;)<\/strong>&nbsp;<\/p>\n<p>La syntaxe est:<\/p>\n<p style=\"padding-left: 40px;\">.<strong>\u201d<\/strong><strong>a\u201d<\/strong>&nbsp;pour analogique,<\/p>\n<p style=\"padding-left: 40px;\">. <strong>\u201d<\/strong><strong>0\u201d<\/strong>&nbsp;est le num\u00e9ro de la broche A0,<\/p>\n<p style=\"padding-left: 40px;\">. <strong>\u201d<\/strong><strong>i\u201d<\/strong>&nbsp;pour input ,<\/p>\n<p style=\"padding-left: 40px;\"><strong>. \u201dboard\u201d<\/strong> est l\u2019objet cr\u00e9\u00e9 lors de l\u2019appel de la m\u00e9thode <strong>\u201dArduino\u201d<\/strong> du module <strong>\u201dpyfirmata\u201d<\/strong>.<br><br><\/p>\n<p>On peut d\u00e9finir une fonction d\u00e9clarant plus facilement une broche en entr\u00e9e analogique :<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">def AnalogInput(board,pin):<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #000000;\">AnalogInputPin=board.get_pin(&lsquo;a:&rsquo;+ str(pin) +&rsquo;:i&rsquo;)<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #000000;\">return AnalogInputPin<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p><br \/>La syntaxe pour d\u00e9clarer la broche A0 en entr\u00e9e analogique est alors\u00a0plus simple :<\/p>\n<p style=\"padding-left: 40px;\"><strong>pinA0 <\/strong><strong>= AnalogInput(board,0)<br \/><br \/><\/strong><\/p>\n<p>Ensuite, on utilise la fonction <strong>\u201d<\/strong><strong>read()\u201d<\/strong>\u00a0pour lire la valeur de la tension de la broche\u00a0:<\/p>\n<p style=\"padding-left: 40px;\"><strong>pinA0.read()<\/strong>\u00a0<br \/><br \/><\/p>\n<p><u>Attention<\/u> :<\/p>\n<p>. La fonction <strong>\u201d<\/strong><strong>read()\u201d<\/strong>\u00a0pour une broche d\u00e9clar\u00e9e en entr\u00e9e analogique retourne une valeur d\u00e9cimale entre 0 et 1 (alors qu&rsquo;en langage Arduino, <strong>\u201danalogRead()\u201d<\/strong> retourne un entier entre 0 et 1023).\u00a0\u00a0<\/p>\n<p>. Il faut \u00e9galement utiliser un it\u00e9rateur afin d&rsquo;\u00e9viter de saturer la communication s\u00e9rie entre l&rsquo;Arduino et l&rsquo;ordinateur h\u00f4te.<br \/><br \/><\/p>\n<p><u>Exemple<\/u>\u00a0:<\/p>\n<p>Notre <a href=\"https:\/\/www.ardpylab.fr\/?page_id=2497\/#circuit\" data-wplink-url-error=\"true\">circuit<\/a>, support des exemples, dispose d\u2019un potentiom\u00e8tre dont le \u201dpoint milieu\u201d est reli\u00e9 \u00e0 la broche A0 de l\u2019Arduino. Suivant la position du \u201dpoint milieu\u201d, la tension appliqu\u00e9e \u00e0 la broche A0 varie entre 0 et 5 V. On peut donc utiliser le potentiom\u00e8tre pour r\u00e9gler la luminosit\u00e9 de la DEL rouge, par exemple.<\/p>\n<p>Le programme (<strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata-standard\/ledrvbanaloginput.zip\" data-wplink-url-error=\"true\">LedRVBAnalogInput.py<\/a>\u201d<\/strong>) suivant, lit la valeur de la broche A0 et r\u00e8gle la luminosit\u00e9 de la DEL rouge \u00e0 cette valeur :<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2500 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-ms5.png\" alt=\"\" width=\"611\" height=\"333\" \/><\/figure>\n<\/div>\n<p>\u00a0<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata-standard\/codes\/py\/LedRVBAnalogInput.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"784\" class=\"wp-image-2836 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm8.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm8.png 894w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm8-300x263.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm8-768x674.png 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p><strong><u><br>D\u00e9roulement du programme<\/u><\/strong><strong>&nbsp;:<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Importation des librairies&nbsp;et d\u00e9finition de fonctions<\/span> :<\/p>\n<p style=\"padding-left: 40px;\">. Le module <strong>\u201dConnectToArduino.py\u201d, <\/strong>contenant les fonctions de connexion \u00e0 l\u2019arduino via le protocole <strong>\u201dFirmata standard\u201d<\/strong>,<\/p>\n<p style=\"padding-left: 40px;\">. Toutes les fonctions utiles \u00e0 l\u2019utilisation de <strong>\u201d<\/strong><strong>PyFirmata\u201d <\/strong>(fonction de d\u00e9claration des entr\u00e9es et sorties, d\u2019it\u00e9rateur, d\u2019\u00e9critures\u2026) que nous avons d\u00e9finies jusqu\u2019\u00e0 pr\u00e9sent ont \u00e9t\u00e9 regroup\u00e9es dans un fichier Python, nomm\u00e9 <strong>\u201d<\/strong><strong>PyFirmataDef.Py\u201d<\/strong>&nbsp;que l\u2019on peut importer dans tous les programmes, \u00e0 condition que le fichier des fonctions soit dans le m\u00eame dossier que le fichier du programme, avec l\u2019instruction&nbsp;:<\/p>\n<p style=\"padding-left: 80px;\"><strong>from PyFirmataDef import *<br><\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata-standard\/codes\/py\/PyFirmataDef.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"892\" height=\"508\" class=\"wp-image-2837 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm9.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm9.png 892w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm9-300x171.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm9-768x437.png 768w\" sizes=\"auto, (max-width: 892px) 100vw, 892px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p style=\"padding-left: 40px;\">. <strong>\u201dtime\u201d <\/strong>pour la gestion des temps de pause.<br \/><br \/><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">D\u00e9claration des constantes et variables<\/span>\u00a0:<\/p>\n<p style=\"padding-left: 40px;\">. <strong>PinLedR = 11<\/strong> (constante correspondant au n\u00b0 de la broche sur laquelle la DEL rouge est connect\u00e9e)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>PinPot = 0<\/strong> (constante correspondant au n\u00b0 de la broche A0 sur laquelle le potentiom\u00e8tre est connect\u00e9)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>ValPot = 0<\/strong> (variable pour stocker la valeur de l\u2019entr\u00e9e analogique A0)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>PortComArduino <\/strong>(port COM sur lequel l\u2019Arduino est connect\u00e9)<br \/>\u00a0<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Connexion \u00e0 l&rsquo;Arduino<\/span>\u00a0(Idem programme pr\u00e9c\u00e9dent)<\/p>\n<p style=\"padding-left: 40px;\">. D\u00e9tection du port COM , <span style=\"font-size: inherit;\">tentative d\u2019ouverture du port COM s\u00e9lectionn\u00e9 et connexion \u00e0 l\u2019Arduino:<\/span><\/p>\n<p style=\"padding-left: 80px;\"><strong>PortComArduino = SelectPortCOM()<br \/><\/strong><br \/><strong>board = OpenPortCom(PortComArduino)<br \/><br \/><\/strong><\/p>\n<p style=\"padding-left: 40px;\">. Si la connexion \u00e0 l\u2019Arduino est r\u00e9ussie :<\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; D\u00e9claration de la broche de la DEL rouge en sortie analogique :<\/p>\n<p style=\"padding-left: 80px;\"><strong>PinPWM = AnalogOutput(board, PinLedR)<\/strong><\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; D\u00e9claration de la broche du potentiom\u00e8tre en entr\u00e9e analogique :<\/p>\n<p style=\"padding-left: 80px;\"><strong>InputPin = AnalogInput(board, PinPot))<\/strong><\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; Lancement de l\u2019it\u00e9rateur :<\/p>\n<p style=\"padding-left: 80px;\"><strong>ArduinoIterateur = Iterateur(board)<br \/><br \/><\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Boucle principale du programme (boucle \u201dwhile True\u201d)<\/span> :<\/p>\n<p style=\"padding-left: 40px;\">. Lecture de la valeur (nombre d\u00e9cimal flottant entre 0 et 1) de la broche du potentiom\u00e8tre :<\/p>\n<p style=\"padding-left: 80px;\"><strong>ValPot = InputPin.read()<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. La luminosit\u00e9 de la DEL rouge est r\u00e9gl\u00e9e \u00e0 cette valeur\u00a0:<\/p>\n<p style=\"padding-left: 80px;\"><strong>AnalogWrite(board,PinLedR, ValPot)<br \/><br \/><\/strong><\/p>\n<p>&#8211; Fin du programme en appuyant sur Ctrl-C<\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; La DEL rouge est \u00e9teinte et le port COM est ferm\u00e9.<\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2808\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2852\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>(par le protocole \u201dFirmata standard\u201d) &nbsp; Pour lire la valeur de la tension d\u2019une entr\u00e9e analogique (par exemple, la broche A0), il faut la d\u00e9clarer au pr\u00e9alable en entr\u00e9e analogique avec la commande suivante&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pinA0 = board.get_pin(&lsquo;a:0:i&rsquo;)&nbsp; La syntaxe est: .\u201da\u201d&nbsp;pour analogique, . \u201d0\u201d&nbsp;est le num\u00e9ro de la broche A0, . \u201di\u201d&nbsp;pour input , . [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2831","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2831"}],"version-history":[{"count":0,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2831\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}