<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/</id><updated>2020-02-27T15:57:46.459000Z</updated><subtitle>Recent posts to Gerhard Schillhubers IO for Arduino</subtitle><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#8570" rel="alternate"/><published>2020-02-27T15:57:46.459000Z</published><updated>2020-02-27T15:57:46.459000Z</updated><author><name>alverman</name><uri>https://forge.codesys.com/u/alverman/</uri></author><id>https://forge.codesys.com3f596a1b50199c707d36d9bbd8d6de22928e9d0a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Do you know that you are right KKempeneers?&lt;br/&gt;
Compiling with 1.6.3 works which is a wonder !!&lt;/p&gt;
&lt;p&gt;Thanks  &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#8d67" rel="alternate"/><published>2020-02-27T15:57:45.685000Z</published><updated>2020-02-27T15:57:45.685000Z</updated><author><name>alverman</name><uri>https://forge.codesys.com/u/alverman/</uri></author><id>https://forge.codesys.com6ecf926f9ac70f5cddde220df2dd13c5cdc9f033</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
I was very happy to be able to use Arduino I2C with CoDeSys but I have instability problems !!&lt;br/&gt;
By the time I compiled with ide 1.8 and Arduino, with your example, it is very unstable.&lt;br/&gt;
The LED flashes for a while then stops to continue maybe or maybe not.&lt;br/&gt;
Now they will try to compile with 1.6.3 as you did, but I wonder how it is possible to have a stable according to the compiler !!&lt;/p&gt;
&lt;p&gt;Another thing: I do not understand your last comment snippet.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
So you should remove the &amp;amp; before sendBuffer in the Wire.write() call (Compiled with Arduino 1.6.3 on Windows 7 64bit)&lt;br/&gt;
With these corrections everything works fine!&lt;br/&gt;
Thanks,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Where is the '&amp;amp;' in the old code ?&lt;br/&gt;
Greetings, Alberto&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#1757" rel="alternate"/><published>2020-02-27T15:57:43.341000Z</published><updated>2020-02-27T15:57:43.341000Z</updated><author><name>KKempeneers</name><uri>https://forge.codesys.com/u/kkempeneers/</uri></author><id>https://forge.codesys.com38590a42f84988c9c48b2f6acdcf7e20390f238a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;For future reference ...&lt;/p&gt;
&lt;p&gt;The Arduino slave code in the requestEvent reads:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;void&lt;/span&gt; &lt;span class="nv"&gt;requestEvent&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt; {
  &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;5&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;digitalIn&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;lt;4; i++) {&lt;/span&gt;
    &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;analogIn&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  }
  &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;write&lt;/span&gt;&lt;span class="ss"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;,&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;  &lt;/span&gt;
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;So you should remove the &amp;amp; before sendBuffer in the Wire.write() call&lt;/strong&gt; (Compiled with Arduino 1.6.3 on Windows 7 64bit)&lt;br/&gt;
With these corrections everything works fine!&lt;br/&gt;
Thanks,&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#4ad0" rel="alternate"/><published>2020-02-27T15:57:42.461000Z</published><updated>2020-02-27T15:57:42.461000Z</updated><author><name>KKempeneers</name><uri>https://forge.codesys.com/u/kkempeneers/</uri></author><id>https://forge.codesys.com9aad68b314bddec938ce44a39691fa1c9410966c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi again,&lt;/p&gt;
&lt;p&gt;I found that in the Arduino sketch packed with the original example project is assuming that on a Arduino Wire receiveEvent the complete packet of 12 bytes is readily available (i.e. received). Since this is not always the case the sketch looses synchronization, resulting in unpredictable behavior. I modified the code so that it waits for the packet to complete before processing the received data.&lt;/p&gt;
&lt;p&gt;I included the new sketch below.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;const&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;I2C_ADDRESS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
\#&lt;span class="k"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;pinConfig&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;PWMConfig&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;digitalIn&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;analogIn&lt;/span&gt;[&lt;span class="mi"&gt;4&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;digitalOut&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;6&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;byte&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;12&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;volatile&lt;/span&gt; &lt;span class="nv"&gt;byte&lt;/span&gt; &lt;span class="nv"&gt;cnt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;void&lt;/span&gt; &lt;span class="nv"&gt;setup&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt; {
  &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;begin&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;I2C_ADDRESS&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;      &lt;/span&gt;
  &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;onReceive&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;receiveEvent&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
  &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;onRequest&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;requestEvent&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
  &lt;span class="nv"&gt;Serial&lt;/span&gt;.&lt;span class="nv"&gt;begin&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9600&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;  &lt;/span&gt;
  &lt;span class="nv"&gt;Serial&lt;/span&gt;.&lt;span class="nv"&gt;println&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ready to accept I2C data ...&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
}
&lt;span class="nv"&gt;void&lt;/span&gt; &lt;span class="k"&gt;loop&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt; {
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;lt;14; i++) {&lt;/span&gt;
    &lt;span class="nv"&gt;bool&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;bitRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;pinConfig&lt;/span&gt;, &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;bool&lt;/span&gt; &lt;span class="nv"&gt;pwm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;bitRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;PWMConfig&lt;/span&gt;, &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;byte&lt;/span&gt; &lt;span class="nv"&gt;pwmvalue&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
      &lt;span class="nv"&gt;pinMode&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;, &lt;span class="nv"&gt;OUTPUT&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      
      &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;pwm&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
        &lt;span class="nv"&gt;switch&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;2&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;3&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;4&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;:
          &lt;span class="nv"&gt;pwmvalue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="mi"&gt;5&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        }
        &lt;span class="nv"&gt;analogWrite&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;,&lt;span class="nv"&gt;pwmvalue&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      } &lt;span class="k"&gt;else&lt;/span&gt; {
        &lt;span class="nv"&gt;digitalWrite&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;, &lt;span class="nv"&gt;bitRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;digitalOut&lt;/span&gt;,&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      }
    } &lt;span class="k"&gt;else&lt;/span&gt; {
      &lt;span class="nv"&gt;pinMode&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;,&lt;span class="nv"&gt;INPUT&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    }
  }
  
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;lt;14; i++) {&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nv"&gt;bitRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;pinConfig&lt;/span&gt;, &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="nv"&gt;bitWrite&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;digitalIn&lt;/span&gt;, &lt;span class="nv"&gt;i&lt;/span&gt;, &lt;span class="nv"&gt;digitalRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  }
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;lt;4; i++) {&lt;/span&gt;
    &lt;span class="nv"&gt;analogIn&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;analogRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  }
}
&lt;span class="nv"&gt;void&lt;/span&gt; &lt;span class="nv"&gt;receiveEvent&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;howMany&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; {
  &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;available&lt;/span&gt;&lt;span class="ss"&gt;())&lt;/span&gt; {
    &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="nv"&gt;cnt&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;read&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
    &lt;span class="nv"&gt;cnt&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  }
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;cnt&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;cnt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;pinConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;]&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;PWMConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;3&lt;/span&gt;]&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;2&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;digitalOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;5&lt;/span&gt;]&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;4&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;j&amp;lt;6;j++) {&lt;/span&gt;
    &lt;span class="nv"&gt;PWMOut&lt;/span&gt;[&lt;span class="nv"&gt;j&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;receiveBuffer&lt;/span&gt;[&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  }
}
&lt;span class="nv"&gt;void&lt;/span&gt; &lt;span class="nv"&gt;requestEvent&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt; {
  &lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;5&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;digitalIn&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;lt;4; i++) {&lt;/span&gt;
    &lt;span class="nv"&gt;sendBuffer&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;analogIn&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
  }
  &lt;span class="nv"&gt;Wire&lt;/span&gt;.&lt;span class="nv"&gt;write&lt;/span&gt;&lt;span class="ss"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;sendBuffer&lt;/span&gt;,&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Hope this helps someone,&lt;/p&gt;
&lt;p&gt;Koen.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#50dd" rel="alternate"/><published>2020-02-27T15:57:40.305000Z</published><updated>2020-02-27T15:57:40.305000Z</updated><author><name>DDP</name><uri>https://forge.codesys.com/u/ddp/</uri></author><id>https://forge.codesys.com7ed0d6e5521105ada81b79cfccf8aac7bf0d100c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;what sketch do you have loaded on the arduino?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#cc39" rel="alternate"/><published>2020-02-27T15:57:39.538000Z</published><updated>2020-02-27T15:57:39.538000Z</updated><author><name>KKempeneers</name><uri>https://forge.codesys.com/u/kkempeneers/</uri></author><id>https://forge.codesys.coma882bad31e086cb11a47918b34bfd65f770649a5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I do not pretend to know the answer to your problem. I managed to make a project with the library (attached) but found it to be very very unstable.&lt;/p&gt;
&lt;p&gt;In fact all the project does is to toggle the LED at pin 13 of an Arduino Uno r3. This project compiles and runs at RPi model B and an Arduino Uno r3. It toggles the LED a few times and then synchronization is apparently lost, that is the program when monitored keeps on running but the LED doesn't blink anymore.&lt;/p&gt;
&lt;p&gt;When I try the same using the PCF8574 library the communications seems to be far more stable.&lt;/p&gt;
&lt;p&gt;Can somebody please clarify why the Arduino Uno library or solution seems to be so unstable?&lt;/p&gt;
&lt;p&gt;KK&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum.codesys.com//download/file.php?id=1177" rel="nofollow"&gt;FischerTechnicMetVellemanIOShield.project &lt;span&gt;&lt;span&gt;[138.82 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Gerhard Schillhubers IO for Arduino</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/0449f1d24c/?limit=25#a5a8" rel="alternate"/><published>2020-02-27T15:57:38.781000Z</published><updated>2020-02-27T15:57:38.781000Z</updated><author><name>DDP</name><uri>https://forge.codesys.com/u/ddp/</uri></author><id>https://forge.codesys.com3491165a0bf48201d807e00fa12f22b941d796f3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I downloaded the i2c libraries from Gerhard and having problems... I think Im down to only one problem, maybe 2...&lt;br/&gt;
I cannot find IoDrvArduino, 1.1.0.0 &lt;br/&gt;
I try to download missing library and download fails.&lt;br/&gt;
I do have the IoDrvArduinoUNO... but I 16 Library Manager errors with lots of placeholder errors.&lt;/p&gt;
&lt;p&gt;Anyone (Gerhard?) have an idea? can I just change the name and delete UNO from the end?&lt;/p&gt;
&lt;p&gt;The second problem is my raspberry pi says it is missing the device description (3.5.4.10) and I have a newer description...   If I click on update device, I lose the Arduino I2c....&lt;/p&gt;
&lt;p&gt;Im sure my question shows Im a newb hahaha   sorry and thanks in advance&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>