{"id":1407,"date":"2017-10-30T10:11:19","date_gmt":"2017-10-30T10:11:19","guid":{"rendered":"http:\/\/www.horter.de\/blog\/?p=1407"},"modified":"2023-01-14T18:19:55","modified_gmt":"2023-01-14T18:19:55","slug":"ftdi-nero-i2c-digital-output","status":"publish","type":"post","link":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/","title":{"rendered":"FTDI NerO + I2C-Digital Output"},"content":{"rendered":"<p>Auf dieser Bildschirmseite sind acht runde Kn\u00f6pfe eingebaut, mit denen man die Ausg\u00e4nge der I2C-DO Baugruppe steuern kann.<\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/ftdi-nero-cleo-mit-i2c-bus-und-am2322\/digital_output\/\" rel=\"attachment wp-att-1333\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1333 alignnone\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Digital_Output-200x300.jpg\" alt=\"\" width=\"200\" height=\"300\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Digital_Output-200x300.jpg 200w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Digital_Output.jpg 320w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a><\/p>\n<pre><span style=\"color: #7e7e7e;\">\/\/Variablen\u00a0f\u00fcr\u00a0Touchlogik<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">bool<\/span> penDownOn1 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn2 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn3 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn4 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn5 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn6 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn7 = <span style=\"color: #cc6600;\">false<\/span>, penDownOn8 = <span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">bool<\/span> but1Dwn = <span style=\"color: #cc6600;\">false<\/span>, but2Dwn = <span style=\"color: #cc6600;\">false<\/span>, but3Dwn = <span style=\"color: #cc6600;\">false<\/span>, but4Dwn = <span style=\"color: #cc6600;\">false<\/span>, but5Dwn = <span style=\"color: #cc6600;\">false<\/span>, but6Dwn = <span style=\"color: #cc6600;\">false<\/span>, but7Dwn = <span style=\"color: #cc6600;\">false<\/span>, but8Dwn = <span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">void<\/span> display_do()\r\n\u00a0{\r\n\u00a0CleO.Start();\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0160,\u00a00,\u00a0BLUE,\u00a0TM,\u00a00,\u00a00,\u00a0\u201eHOKA\u00a0I2C\u00a0DEMO\u201c);\r\nCleO.RectangleExt(0,\u00a050,\u00a0350,\u00a0500,\u00a0WHITE,\u00a0TL,\u00a00,\u00a00);\r\n\u00a0CleO.LineWidth(30);\r\n\r\n<span style=\"color: #7e7e7e;\">\/\/Funktionen\u00a0Buttons<\/span>\r\n\r\n<span style=\"color: #cc6600;\">if<\/span> (penDownOn1) { <span style=\"color: #7e7e7e;\">\/\/wenn penDownOn1<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but1Dwn) { <span style=\"color: #7e7e7e;\">\/\/wenn bt1Dwn true<\/span>\r\n\u00a0VAL\u00a0-=1;\u00a0<span style=\"color: #7e7e7e;\">\/\/globale Variable wird -1 gesetzt<\/span>\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> { <span style=\"color: #7e7e7e;\">\/\/ansonsten<\/span>\r\n\u00a0VAL\u00a0+=\u00a01;\u00a0<span style=\"color: #7e7e7e;\">\/\/globale Variable wird +1 gesetzt<\/span>\r\n\u00a0}\r\n\u00a0but1Dwn\u00a0=\u00a0!but1Dwn;\u00a0<span style=\"color: #7e7e7e;\">\/\/bt1Dwn \u201eschaltet\u201c<\/span>\r\n<span style=\"color: #cc6600;\">delay<\/span>(del); <span style=\"color: #7e7e7e;\">\/\/kurze Pause zum Finger wegnehmen<\/span>\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn2) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but2Dwn) {\r\n\u00a0VAL\u00a0-=2;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a02;\r\n\u00a0}\r\n\u00a0but2Dwn\u00a0=\u00a0!but2Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn3) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but3Dwn) {\r\n\u00a0VAL\u00a0-=4;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a04;\r\n\u00a0}\r\n\u00a0but3Dwn\u00a0=\u00a0!but3Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn4) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but4Dwn) {\r\n\u00a0VAL\u00a0-=8;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a08;\r\n\u00a0}\r\n\u00a0but4Dwn\u00a0=\u00a0!but4Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn5) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but5Dwn) {\r\n\u00a0VAL\u00a0-=16;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a016;\r\n\u00a0}\r\n\u00a0but5Dwn\u00a0=\u00a0!but5Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn6) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but6Dwn) {\r\n\u00a0VAL\u00a0-=32;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a032;\r\n\u00a0}\r\n\u00a0but6Dwn\u00a0=\u00a0!but6Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn7) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but7Dwn) {\r\n\u00a0VAL\u00a0-=64;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a064;\r\n\u00a0}\r\n\u00a0but7Dwn\u00a0=\u00a0!but7Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOn8) {\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (but8Dwn) {\r\n\u00a0VAL\u00a0-=128;\r\n\u00a0}\u00a0<span style=\"color: #cc6600;\">else<\/span> {\r\n\u00a0VAL\u00a0+=\u00a0128;\r\n\u00a0}\r\n\u00a0but8Dwn\u00a0=\u00a0!but8Dwn;\r\n\u00a0<span style=\"color: #cc6600;\">delay<\/span>(del);\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (penDownOnBack) {\r\n\u00a0penDownOnBack\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0globalCurrSite\u00a0=\u00a00;\r\n\u00a0}\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> {}\r\n\r\n<span style=\"color: #cc6600;\">int<\/span> tiefe = 175; <span style=\"color: #7e7e7e;\">\/\/Tiefe aller 8 Buttons (Des ganzen Kontainers)<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> fromLeft1 = 40; <span style=\"color: #7e7e7e;\">\/\/Abstand von Links aller 8 Buttons<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> width1 = 40; <span style=\"color: #7e7e7e;\">\/\/Radius der Buttons<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> abst = 68; <span style=\"color: #7e7e7e;\">\/\/Abstand zwischen Buttons<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> tiefe1 = tiefe+60;\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> fromLeft = fromLeft1+35;\r\n\u00a0<span style=\"color: #cc6600;\">int<\/span> width = width1+35;\r\n\r\n<span style=\"color: #7e7e7e;\">\/\/setValue-Funktion\u00a0zum\u00a0Ansteuern\u00a0des\u00a0Moduls<\/span>\r\n\u00a0setValue(VAL);\r\n\r\n<span style=\"color: #7e7e7e;\">\/\/Layout\u00a0Buttons<\/span>\r\n\u00a0CleO.Tag(1);\u00a0<span style=\"color: #7e7e7e;\">\/\/Tag fuer identifizierung<\/span>\r\n\u00a0CleO.CircleExt(fromLeft1,\u00a0tiefe1,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\u00a0<span style=\"color: #7e7e7e;\">\/\/Button zeichnen<\/span>\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft1,\u00a0tiefe1,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e1\u201c);\u00a0<span style=\"color: #7e7e7e;\">\/\/Beschriftung<\/span>\r\n\u00a0CleO.Tag(3);\r\n\u00a0CleO.CircleExt(fromLeft1+abst,\u00a0tiefe1,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft1+abst,\u00a0tiefe1,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e3\u201c);\r\nCleO.Tag(5);\r\n\u00a0CleO.CircleExt(fromLeft1+abst*2,\u00a0tiefe1,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft1+abst*2,\u00a0tiefe1,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e5\u201c);\r\nCleO.Tag(7);\r\n\u00a0CleO.CircleExt(fromLeft1+abst*3,\u00a0tiefe1,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft1+abst*3,\u00a0tiefe1,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e7\u201c);\r\nCleO.Tag(2);\r\n\u00a0CleO.LineColor(BLUE);\r\n\u00a0CleO.CircleExt(fromLeft,\u00a0tiefe,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft,\u00a0tiefe,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e2\u201c);\r\nCleO.Tag(4);\r\n\u00a0CleO.LineColor(BLUE);\r\n\u00a0CleO.CircleExt(fromLeft+abst,\u00a0tiefe,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft+abst,\u00a0tiefe,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e4\u201c);\r\nCleO.Tag(6);\r\n\u00a0CleO.LineColor(BLUE);\r\n\u00a0CleO.CircleExt(fromLeft+abst*2,\u00a0tiefe,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft+abst*2,\u00a0tiefe,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e6\u201c);\r\nCleO.Tag(8);\r\n\u00a0CleO.LineColor(BLUE);\r\n\u00a0CleO.CircleExt(fromLeft+abst*3,\u00a0tiefe,\u00a00,\u00a030,\u00a0BLUE,\u00a0MM,\u00a00,\u00a00);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,\u00a0fromLeft+abst*3,\u00a0tiefe,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201e8\u201c);\r\nCleO.Tag(100);\r\n\u00a0CleO.LineColor(BLUE);\r\n\u00a0CleO.Line(0,\u00a0375,\u00a0350,\u00a0375);\r\n\u00a0CleO.StringExt(FONT_MEDIUM,160,\u00a0375,\u00a0WHITE,\u00a0MM,\u00a00,\u00a00,\u00a0\u201eStartseite\u201c);\r\n\u00a0<span style=\"color: #7e7e7e;\">\/\/Footer<\/span>\r\n\u00a0CleO.StringExt(FONT_SANS_2,\u00a0160,\u00a0440,\u00a0BLUE,\u00a0TM,\u00a00,\u00a00,\u00a0\u201ewww.horter.de\u201c);\r\n\r\nCleO.Show();\r\n\u00a0}\r\n\r\n<span style=\"color: #cc6600;\">void<\/span> setValue(<span style=\"color: #cc6600;\">byte<\/span> wert)\r\n\u00a0{\r\n\u00a0<span style=\"color: #cc6600;\">byte<\/span> val = 255-wert; <span style=\"color: #7e7e7e;\">\/\/val mit invertiertem Wert belegen<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">Wire<\/span>.<span style=\"color: #cc6600;\">beginTransmission<\/span>(I2C_OUT_ADDR); <span style=\"color: #7e7e7e;\">\/\/Uebertragung beginnen<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">Wire<\/span>.<span style=\"color: #cc6600;\">write<\/span>(val); <span style=\"color: #7e7e7e;\">\/\/Werte uebertragen<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">Wire<\/span>.<span style=\"color: #cc6600;\">endTransmission<\/span>(); <span style=\"color: #7e7e7e;\">\/\/Uebertragung beenden<\/span>\r\n\u00a0}\r\n\r\n<span style=\"color: #cc6600;\">void<\/span> control_do()\r\n\u00a0{\r\n\u00a0int16_t\u00a0x,\u00a0y,\u00a0dur,\u00a0tag;\r\n\u00a0CleO.TouchCoordinates(x,\u00a0y,\u00a0dur,\u00a0tag);\u00a0<span style=\"color: #7e7e7e;\">\/\/Tag des Beruehrungspunktes einlesen<\/span>\r\n\u00a0<span style=\"color: #cc6600;\">if<\/span> (previousDur == 0 &amp;&amp; dur != 0) <span style=\"color: #7e7e7e;\">\/\/Wenn previousDur == 0 -&gt; Beruehrung aktiv und Dauer der Beruehrung nicht 0<\/span>\r\n\u00a0{\r\n\u00a0previousTag\u00a0=\u00a0tag;\u00a0<span style=\"color: #7e7e7e;\">\/\/Tag zwischenspeichern<\/span>\r\n\u00a0previousDur\u00a0=\u00a01;\u00a0<span style=\"color: #7e7e7e;\">\/\/Setze previousDur = 1 fuer \u201ewurde gedrueckt\u201c<\/span>\r\n<span style=\"color: #cc6600;\">if<\/span> (tag == 1) <span style=\"color: #7e7e7e;\">\/\/Button-Tag herausfinden<\/span>\r\n\u00a0penDownOn1\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>; <span style=\"color: #7e7e7e;\">\/\/entsprechende bool-Variable schalten (Weitere Verarbeitung in \u201edisplay_do()\u201c)<\/span>\r\n<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 2)\r\n\u00a0penDownOn2\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 3)\r\n\u00a0penDownOn3\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 4)\r\n\u00a0penDownOn4\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 5)\r\n\u00a0penDownOn5\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 6)\r\n\u00a0penDownOn6\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 7)\r\n\u00a0penDownOn7\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 8)\r\n\u00a0penDownOn8\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (tag == 100)\r\n\u00a0penDownOnBack\u00a0=\u00a0<span style=\"color: #cc6600;\">true<\/span>;\r\n\u00a0}\r\n\r\n<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousDur == 1 &amp;&amp; dur == 0) <span style=\"color: #7e7e7e;\">\/\/Wenn previousDur == 1 -&gt; beruehrung inaktiv und Dauer der Beruehrung ist 0<\/span>\r\n\u00a0{\r\n\u00a0previousDur\u00a0=\u00a00;\u00a0<span style=\"color: #7e7e7e;\">\/\/Setze previousDur = 1 fuer \u201ewurde losgelassen\u201c<\/span>\r\n<span style=\"color: #cc6600;\">if<\/span> (previousTag == 1)\r\n\u00a0penDownOn1\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 2)\r\n\u00a0penDownOn2\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 3)\r\n\u00a0penDownOn3\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 4)\r\n\u00a0penDownOn4\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 5)\r\n\u00a0penDownOn5\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 6)\r\n\u00a0penDownOn6\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 7)\r\n\u00a0penDownOn7\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 8)\r\n\u00a0penDownOn8\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0<span style=\"color: #cc6600;\">else<\/span> <span style=\"color: #cc6600;\">if<\/span> (previousTag == 8)\r\n\u00a0penDownOnBack\u00a0=\u00a0<span style=\"color: #cc6600;\">false<\/span>;\r\n\u00a0}\r\n\u00a0}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf dieser Bildschirmseite sind acht runde Kn\u00f6pfe eingebaut, mit denen man die Ausg\u00e4nge der I2C-DO Baugruppe steuern kann. \/\/Variablen\u00a0f\u00fcr\u00a0Touchlogik \u00a0bool penDownOn1 = false, penDownOn2 = false, penDownOn3 = false, penDownOn4 = false, penDownOn5 = false, penDownOn6 = false, penDownOn7 =&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\">mehr lesen<\/a><\/p>\n","protected":false},"author":3,"featured_media":1331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[224],"tags":[160,40,174,191,58,7,78,175,120,87,92,177],"class_list":["post-1407","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ftdi-nero-cleo","tag-ansteuern","tag-arduino","tag-cleo","tag-digitaler-ausgang","tag-ftdi","tag-i2c","tag-i2c-output","tag-nero","tag-relais","tag-schalten","tag-steuerung","tag-touchdisplay"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog\" \/>\n<meta property=\"og:description\" content=\"Auf dieser Bildschirmseite sind acht runde Kn\u00f6pfe eingebaut, mit denen man die Ausg\u00e4nge der I2C-DO Baugruppe steuern kann. \/\/Variablen\u00a0f\u00fcr\u00a0Touchlogik \u00a0bool penDownOn1 = false, penDownOn2 = false, penDownOn3 = false, penDownOn4 = false, penDownOn5 = false, penDownOn6 = false, penDownOn7 =... mehr lesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\" \/>\n<meta property=\"og:site_name\" content=\"Horter &amp; Kalb Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-30T10:11:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-14T18:19:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"320\" \/>\n\t<meta property=\"og:image:height\" content=\"480\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"JH\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"JH\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\"},\"author\":{\"name\":\"JH\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2\"},\"headline\":\"FTDI NerO + I2C-Digital Output\",\"datePublished\":\"2017-10-30T10:11:19+00:00\",\"dateModified\":\"2023-01-14T18:19:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\"},\"wordCount\":27,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg\",\"keywords\":[\"ansteuern\",\"Arduino\",\"Cleo\",\"digitaler Ausgang\",\"FTDI\",\"I2C\",\"I2C Output\",\"Nero\",\"Relais\",\"schalten\",\"Steuerung\",\"Touchdisplay\"],\"articleSection\":[\"FTDI NerO &amp; CleO\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\",\"url\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\",\"name\":\"FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg\",\"datePublished\":\"2017-10-30T10:11:19+00:00\",\"dateModified\":\"2023-01-14T18:19:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg\",\"width\":320,\"height\":480},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\/\/www.horter.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FTDI NerO + I2C-Digital Output\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.horter.de\/blog\/#website\",\"url\":\"https:\/\/www.horter.de\/blog\/\",\"name\":\"Horter & Kalb Blog\",\"description\":\"SPS, I2C und mehr\",\"publisher\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.horter.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\",\"name\":\"Horter & Kalb Blog\",\"url\":\"https:\/\/www.horter.de\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png\",\"width\":400,\"height\":400,\"caption\":\"Horter & Kalb Blog\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2\",\"name\":\"JH\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg\",\"caption\":\"JH\"},\"url\":\"https:\/\/www.horter.de\/blog\/author\/j-horter\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/","og_locale":"de_DE","og_type":"article","og_title":"FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog","og_description":"Auf dieser Bildschirmseite sind acht runde Kn\u00f6pfe eingebaut, mit denen man die Ausg\u00e4nge der I2C-DO Baugruppe steuern kann. \/\/Variablen\u00a0f\u00fcr\u00a0Touchlogik \u00a0bool penDownOn1 = false, penDownOn2 = false, penDownOn3 = false, penDownOn4 = false, penDownOn5 = false, penDownOn6 = false, penDownOn7 =... mehr lesen","og_url":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/","og_site_name":"Horter &amp; Kalb Blog","article_published_time":"2017-10-30T10:11:19+00:00","article_modified_time":"2023-01-14T18:19:55+00:00","og_image":[{"width":320,"height":480,"url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg","type":"image\/jpeg"}],"author":"JH","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"JH","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#article","isPartOf":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/"},"author":{"name":"JH","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2"},"headline":"FTDI NerO + I2C-Digital Output","datePublished":"2017-10-30T10:11:19+00:00","dateModified":"2023-01-14T18:19:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/"},"wordCount":27,"commentCount":0,"publisher":{"@id":"https:\/\/www.horter.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg","keywords":["ansteuern","Arduino","Cleo","digitaler Ausgang","FTDI","I2C","I2C Output","Nero","Relais","schalten","Steuerung","Touchdisplay"],"articleSection":["FTDI NerO &amp; CleO"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/","url":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/","name":"FTDI NerO + I2C-Digital Output - Horter &amp; Kalb Blog","isPartOf":{"@id":"https:\/\/www.horter.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage"},"image":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg","datePublished":"2017-10-30T10:11:19+00:00","dateModified":"2023-01-14T18:19:55+00:00","breadcrumb":{"@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#primaryimage","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2017\/05\/Startseite.jpg","width":320,"height":480},{"@type":"BreadcrumbList","@id":"https:\/\/www.horter.de\/blog\/ftdi-nero-i2c-digital-output\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/www.horter.de\/blog\/"},{"@type":"ListItem","position":2,"name":"FTDI NerO + I2C-Digital Output"}]},{"@type":"WebSite","@id":"https:\/\/www.horter.de\/blog\/#website","url":"https:\/\/www.horter.de\/blog\/","name":"Horter & Kalb Blog","description":"SPS, I2C und mehr","publisher":{"@id":"https:\/\/www.horter.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.horter.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.horter.de\/blog\/#organization","name":"Horter & Kalb Blog","url":"https:\/\/www.horter.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png","width":400,"height":400,"caption":"Horter & Kalb Blog"},"image":{"@id":"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2","name":"JH","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg","caption":"JH"},"url":"https:\/\/www.horter.de\/blog\/author\/j-horter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/comments?post=1407"}],"version-history":[{"count":6,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1407\/revisions"}],"predecessor-version":[{"id":1435,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1407\/revisions\/1435"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/media\/1331"}],"wp:attachment":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/media?parent=1407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/categories?post=1407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/tags?post=1407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}