{"id":35,"date":"2015-11-09T23:16:02","date_gmt":"2015-11-09T23:16:02","guid":{"rendered":"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/?page_id=35"},"modified":"2017-12-30T10:03:38","modified_gmt":"2017-12-30T09:03:38","slug":"python","status":"publish","type":"page","link":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/python\/","title":{"rendered":"Python"},"content":{"rendered":"<p>Hubo verwendet Hardwarekomponenten, welche auch in vielf\u00e4ltigen anderen Projekten zum Einsatz gelangt. Insofern ist es nicht verwunderlich, da\u00df die Programmierung auch in anderen Sprachen als C++, z.B. Python, sehr einfach ist. Anbei seien zwei Beispiele angef\u00fchrt, wie die analogen und digitalen Eing\u00e4nge des Hubo eingelesen und die digitalen Ausg\u00e4nge gesetzt werden k\u00f6nnen.<\/p>\n<p>Sollte Ihr Betriebssystem noch nicht \u00fcber die Voraussetzungen zur Programmierung unter Python verf\u00fcgen, so k\u00f6nnen Sie das der Hubo C++ Library beiliegende Installationsscript ausf\u00fchren, welches ihnen die notwendigen Bibliotheken und Tools f\u00fcr\u00a0 Python installiert.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen der analogen Eing\u00e4nge des Hubo mittels Python<\/strong><\/p>\n<p>Das folgende Beispiel liest 10 mal im Abstand von 1s den analogen Kanal 0 des Hubo ein und gibt ihn auf der Konsole aus.<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n#!\/usr\/bin\/python\r\nimport spidev\r\nimport time\r\n# Hubo MCP3208 Demo - simple reading of the MCP3208 analog input.\r\ndef Open_SPI_ADC ():\r\n    spiADC = spidev.SpiDev()\r\n    spiADC.open(0, 0)\r\n    spiADC.max_speed_hz = (50000)\r\n    return spiADC\r\n    \r\ndef Get_AI_Channel (spiADC, channel):\r\n    if ((channel &gt; 7) or (channel &lt; 0)): print 'Illegal channel number (0 through 7)' return 0.0 result = spiADC.xfer2([6 + (channel &gt;&gt; 2), channel &lt;&lt; 6, 0])\r\n    count = ((result[1] &amp; 0x0F) &lt;&lt; 8) + (result[2])\r\n    # Use a reference voltage of 2.53V.\r\n    voltage = (2.53 * count) \/ 4096\r\n    return voltage\r\n    \r\n# Read 10 values from analog input 0.\r\nspiADC = Open_SPI_ADC()\r\nfor i in range(0, 9):\r\n    print Get_AI_Channel (spiADC, 0)\r\n    time.sleep(1)\r\nspiADC.close();\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen und setzen der digitalen Ein- und Ausg\u00e4nge des Hubo mittels Python<\/strong><\/p>\n<p>Dieses Beispiel liest in einer Endlosschleife alle 8 digitalen Eing\u00e4nge des Hubo ein und gibt sie unmittelbar danach auf dessen 8 Analogausg\u00e4ngen wieder aus.<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n#!\/usr\/bin\/python\r\nimport smbus\r\nimport time\r\n# Hubo MCP23017 Demo - simple reading and writing of the MCP23017 digital IO.\r\nIODIRA = 0x00\r\nIODIRB = 0x01\r\nGPPUB  = 0x0D\r\nGPIOA  = 0x12\r\nGPIOB  = 0x13\r\nglobal g_ioaddress\r\ng_ioaddress = 0x20  # I2C address - Hubo master modules use 0x20\r\ndef Initialize_MCP23017 ():\r\n    i2cbus = smbus.SMBus(1)                            # Use 1 for the model B variants, use 0 for Banana Pi.\r\n    i2cbus.write_byte_data (g_ioaddress, IODIRA, 0x00) # Configure port A as output\r\n    i2cbus.write_byte_data (g_ioaddress, IODIRB, 0xFF) # Configure port B as input\r\n    i2cbus.write_byte_data (g_ioaddress, GPPUB,  0xFF) # Activate  port B's internal pull up resistors\r\n    return i2cbus\r\n    \r\ndef Get_DI_Channels (i2cbus):\r\n    return i2cbus.read_byte_data(g_ioaddress, GPIOB)\r\ndef Set_DI_Channels (i2cbus, value):\r\n    return i2cbus.write_byte_data(g_ioaddress, GPIOA, value)\r\n    \r\n    \r\n# Read values from the digital input port and output the value on the digital output port.\r\ni2cbus = Initialize_MCP23017()\r\nwhile True:\r\n    value = Get_DI_Channels (i2cbus)\r\n    Set_DI_Channels(i2cbus, value)\r\n    print value\r\n    time.sleep(0.1)\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Hubo verwendet Hardwarekomponenten, welche auch in vielf\u00e4ltigen anderen Projekten zum Einsatz gelangt. Insofern ist es nicht verwunderlich, da\u00df die Programmierung auch in anderen Sprachen als C++, z.B. Python, sehr einfach ist. Anbei seien zwei Beispiele angef\u00fchrt, wie die analogen und digitalen Eing\u00e4nge des Hubo eingelesen und die digitalen Ausg\u00e4nge gesetzt\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/python\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":130,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/35"}],"collection":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":30,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/35\/revisions"}],"predecessor-version":[{"id":844,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/35\/revisions\/844"}],"up":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/130"}],"wp:attachment":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/media?parent=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}