{"id":1629,"date":"2018-05-14T23:04:52","date_gmt":"2018-05-14T21:04:52","guid":{"rendered":"http:\/\/yarogniew.net\/arduino\/?p=1629"},"modified":"2018-05-15T22:06:52","modified_gmt":"2018-05-15T20:06:52","slug":"python-arduino-firmata-1","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/python-arduino-firmata-1\/","title":{"rendered":"Python rozmawia z Arduino; biblioteki firmata oraz pyfirmata"},"content":{"rendered":"<p>Dzi\u015b uda\u0142o mi si\u0119 nawi\u0105za\u0107 po\u0142\u0105czenie mi\u0119dzy Pythonem i Arduino. Skorzysta\u0142em z biblioteki <em>firmata<\/em>.<\/p>\n<p>Najpierw do Arduino IDE nale\u017cy za\u0142adowa\u0107 bibliotek\u0119 <em>firmata<\/em>. Nast\u0119pnie do p\u0142ytki wgrywamy program <em>StandardFirmata<\/em>, kt\u00f3ry znajduje si\u0119 w przyk\u0142adach. <\/p>\n<p>Je\u015bli chodzi o Python 3, praktycznie nic nie trzeba robi\u0107 poza wpisaniem portu na kt\u00f3rym uruchomione jest Arduino.<br \/>\nNazw\u0119 portu znajdziemy wpisuj\u0105c (w macos) w Terminalu polecenie: <\/p>\n<p><code>ls -l \/dev\/tty.*<\/code><\/p>\n<p>Program sam zainstaluje bibliotek\u0119 <em>pyfirmata<\/em>. <\/p>\n<p>Diod\u0119 LED (obowi\u0105zkowo z rezystorem 220R) pod\u0142\u0105czy\u0142em pod PIN 12.<br \/>\nJak \u0142atwo odkry\u0107, efektem dzia\u0142ania programu jest migaj\u0105ca 5 razy dioda.<\/p>\n<pre class=\"brush: python; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\r\ntry:\r\n    from pyfirmata import Arduino, util\r\nexcept ModuleNotFoundError:\r\n    import pip\r\n    pip.main(&#x5B;'install', 'pyfirmata'])\r\n    from pyfirmata import Arduino, util\r\nexcept Exception as e:\r\n    print(&quot;Rodzaj b\u0142\u0119du: {}&quot; .format(e))\r\n              \r\nfrom time import sleep\r\n\r\ni = 0\r\n\r\nboard = Arduino('\/dev\/cu.usbmodem1A13121') # nazwa portu Arduino\r\nwhile i &lt; 5:\r\n    board.digital&#x5B;13].write(1)\r\n    sleep(0.5)\r\n    board.digital&#x5B;13].write(0)\r\n    sleep(0.15)\r\n    i = i + 1\r\n\r\n<\/pre>\n<h6>Kod drugi.<\/h6>\n<p> Tym razem kr\u0119cimy potencjometrem na pinie A0 w Arduino i przesy\u0142amy dane do programu napisanego w Pythonie. Gdy warto\u015b\u0107 odebrana bliska jest zeru lub maksymalnej, Python wysy\u0142a informacj\u0119 do Arduino i w\u0142\u0105czana jest dioda na pinie 12-tym. Czyli tym razem mamy komunikacj\u0119 w obie strony. <\/p>\n<pre class=\"brush: python; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\r\ntry:\r\n    from pyfirmata import Arduino, util\r\nexcept ModuleNotFoundError:\r\n    import pip\r\n\r\n    pip.main(&#x5B;'install', 'pyfirmata'])\r\n    from pyfirmata import Arduino, util\r\nexcept Exception as e:\r\n    print(&quot;Rodzaj bledu: {}&quot;.format(e))\r\n\r\nfrom time import sleep\r\n\r\nwynik = 0\r\nboard = Arduino('\/dev\/cu.usbmodem1A13121')\r\n# pin = 12\r\n\r\ndef ledin(pin):\r\n\r\n    board.digital&#x5B;pin].write(1)\r\n    sleep(1)\r\n    board.digital&#x5B;pin].write(0)\r\n    sleep(0.15)\r\n\r\n\r\n# iterator = util.Iterator(board)\r\n# iterator.start()\r\n\r\n# pin0 = board.get_pin('a:0:i')\r\n# sleep(1.0)\r\n# print(pin0.read()*1000.0)\r\n\r\nwhile True:\r\n    try:\r\n        it = util.Iterator(board)\r\n        it.start()\r\n        board.analog&#x5B;0].enable_reporting()\r\n        sleep(0.5)\r\n        wynik = int(board.analog&#x5B;0].read() * 10000)\r\n        print(wynik)\r\n        if wynik &lt; 100 or wynik &gt; 9900:\r\n            ledin(12)\r\n\r\n    except KeyboardInterrupt:\r\n        exit()\r\n        break\r\n<\/pre>\n<p>Linki:<\/p>\n<p><a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2018\/05\/pyfirmata.pdf\">pyFirmata Documentation<\/a><\/p>\n<p><a href=\"https:\/\/create.arduino.cc\/editor\/LogMaker360\/b518d1e3-c2e5-471a-9e81-b320b160b1b9\/preview\">pyfirmata<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzi\u015b uda\u0142o mi si\u0119 nawi\u0105za\u0107 po\u0142\u0105czenie mi\u0119dzy Pythonem i Arduino. Skorzysta\u0142em z biblioteki firmata. Najpierw do Arduino IDE nale\u017cy za\u0142adowa\u0107 bibliotek\u0119 firmata. Nast\u0119pnie do p\u0142ytki wgrywamy program StandardFirmata, kt\u00f3ry znajduje&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,37,59],"tags":[9,60],"class_list":["post-1629","post","type-post","status-publish","format-standard","hentry","category-arduino","category-komunikacja","category-python","tag-arduino","tag-firmata"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1629"}],"version-history":[{"count":10,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1629\/revisions"}],"predecessor-version":[{"id":1645,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/1629\/revisions\/1645"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}