Commits

F Malpartida committed 99ea293

Added documentation for Release 1.2.0

Comments (0)

Files changed (51)

docs/html/_i2_c_i_o_8cpp.html

 <div class="contents">
 <div class="textblock"><code>#include &lt;WProgram.h&gt;</code><br/>
 <code>#include &lt;inttypes.h&gt;</code><br/>
-<code>#include &lt;../Wire/Wire.h&gt;</code><br/>
-<code>#include &lt;<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>&gt;</code><br/>
+<code>#include &quot;../Wire/Wire.h&quot;</code><br/>
+<code>#include &quot;<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>&quot;</code><br/>
 </div>
 <p><a href="_i2_c_i_o_8cpp_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_i2_c_i_o_8cpp_source.html

 <a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
 <a name="l00033"></a>00033 <span class="preprocessor"></span>
 <a name="l00034"></a>00034 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;../Wire/Wire.h&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;<a class="code" href="_i2_c_i_o_8h.html">I2CIO.h</a>&gt;</span>
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 <span class="comment">// CLASS VARIABLES</span>
-<a name="l00039"></a>00039 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00040"></a>00040 
+<a name="l00035"></a>00035 <span class="preprocessor">#include &quot;../Wire/Wire.h&quot;</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="preprocessor">#include &quot;<a class="code" href="_i2_c_i_o_8h.html">I2CIO.h</a>&quot;</span>
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="comment">// CLASS VARIABLES</span>
+<a name="l00040"></a>00040 <span class="comment">// ---------------------------------------------------------------------------</span>
 <a name="l00041"></a>00041 
-<a name="l00042"></a>00042 <span class="comment">// CONSTRUCTOR</span>
-<a name="l00043"></a>00043 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00044"></a><a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">00044</a> <a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO::I2CIO</a> ( )
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046    _i2cAddr     = 0x0;
-<a name="l00047"></a>00047    _dirMask     = 0xFF;    <span class="comment">// mark all as INPUTs</span>
-<a name="l00048"></a>00048    _shadow      = 0x0;     <span class="comment">// no values set</span>
-<a name="l00049"></a>00049    _initialised = <span class="keyword">false</span>;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051 
-<a name="l00052"></a>00052 <span class="comment">// PUBLIC METHODS</span>
-<a name="l00053"></a>00053 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 <span class="comment">//</span>
-<a name="l00056"></a>00056 <span class="comment">// begin</span>
-<a name="l00057"></a><a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">00057</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO::begin</a> (  uint8_t i2cAddr )
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059    _i2cAddr = i2cAddr;
-<a name="l00060"></a>00060    
-<a name="l00061"></a>00061    Wire.begin ( );
-<a name="l00062"></a>00062       
-<a name="l00063"></a>00063    _initialised = Wire.requestFrom ( _i2cAddr, (uint8_t)1 );
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span>   _shadow = Wire.receive ();
-<a name="l00067"></a>00067 <span class="preprocessor">#else</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>   _shadow = Wire.read (); <span class="comment">// Remove the byte read don&#39;t need it.</span>
-<a name="l00069"></a>00069 <span class="preprocessor">#endif</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>   
-<a name="l00071"></a>00071    <span class="keywordflow">return</span> ( _initialised );
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 
-<a name="l00074"></a>00074 <span class="comment">//</span>
-<a name="l00075"></a>00075 <span class="comment">// pinMode</span>
-<a name="l00076"></a><a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">00076</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO::pinMode</a> ( uint8_t pin, uint8_t dir )
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078    <span class="keywordflow">if</span> ( _initialised )
-<a name="l00079"></a>00079    {
-<a name="l00080"></a>00080       <span class="keywordflow">if</span> ( OUTPUT == dir )
-<a name="l00081"></a>00081       {
-<a name="l00082"></a>00082          _dirMask &amp;= ~( 1 &lt;&lt; pin );
-<a name="l00083"></a>00083       }
-<a name="l00084"></a>00084       <span class="keywordflow">else</span> 
-<a name="l00085"></a>00085       {
-<a name="l00086"></a>00086          _dirMask |= ( 1 &lt;&lt; pin );
-<a name="l00087"></a>00087       }
-<a name="l00088"></a>00088    }
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090 
-<a name="l00091"></a>00091 <span class="comment">//</span>
-<a name="l00092"></a>00092 <span class="comment">// portMode</span>
-<a name="l00093"></a><a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">00093</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO::portMode</a> ( uint8_t dir )
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095    
-<a name="l00096"></a>00096    <span class="keywordflow">if</span> ( _initialised )
-<a name="l00097"></a>00097    {
-<a name="l00098"></a>00098       <span class="keywordflow">if</span> ( dir == INPUT )
-<a name="l00099"></a>00099       {
-<a name="l00100"></a>00100          _dirMask = 0xFF;
-<a name="l00101"></a>00101       }
-<a name="l00102"></a>00102       <span class="keywordflow">else</span>
-<a name="l00103"></a>00103       {
-<a name="l00104"></a>00104          _dirMask = 0x00;
-<a name="l00105"></a>00105       }
-<a name="l00106"></a>00106    }
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 
-<a name="l00109"></a>00109 <span class="comment">//</span>
-<a name="l00110"></a>00110 <span class="comment">// read</span>
-<a name="l00111"></a><a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">00111</a> uint8_t <a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO::read</a> ( <span class="keywordtype">void</span> )
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113    uint8_t retVal = 0;
-<a name="l00114"></a>00114    
-<a name="l00115"></a>00115    <span class="keywordflow">if</span> ( _initialised )
-<a name="l00116"></a>00116    {
-<a name="l00117"></a>00117       Wire.requestFrom ( _i2cAddr, (uint8_t)1 );
-<a name="l00118"></a>00118 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00119"></a>00119 <span class="preprocessor"></span>      retVal = ( _dirMask &amp; Wire.receive ( ) );
-<a name="l00120"></a>00120 <span class="preprocessor">#else</span>
-<a name="l00121"></a>00121 <span class="preprocessor"></span>      retVal = ( _dirMask &amp; Wire.read ( ) );
-<a name="l00122"></a>00122 <span class="preprocessor">#endif      </span>
-<a name="l00123"></a>00123 <span class="preprocessor"></span>      
-<a name="l00124"></a>00124    }
-<a name="l00125"></a>00125    <span class="keywordflow">return</span> ( retVal );
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 
-<a name="l00128"></a>00128 <span class="comment">//</span>
-<a name="l00129"></a>00129 <span class="comment">// write</span>
-<a name="l00130"></a><a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">00130</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO::write</a> ( uint8_t value )
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132    <span class="keywordtype">int</span> status = 0;
-<a name="l00133"></a>00133    
-<a name="l00134"></a>00134    <span class="keywordflow">if</span> ( _initialised )
-<a name="l00135"></a>00135    {
-<a name="l00136"></a>00136       <span class="comment">// Only write HIGH the values of the ports that have been initialised as</span>
-<a name="l00137"></a>00137       <span class="comment">// outputs updating the output shadow of the device</span>
-<a name="l00138"></a>00138       _shadow = ( value &amp; ~(_dirMask) );
-<a name="l00139"></a>00139    
-<a name="l00140"></a>00140       Wire.beginTransmission ( _i2cAddr );
-<a name="l00141"></a>00141 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00142"></a>00142 <span class="preprocessor"></span>      Wire.send ( _shadow );
-<a name="l00143"></a>00143 <span class="preprocessor">#else</span>
-<a name="l00144"></a>00144 <span class="preprocessor"></span>      Wire.write ( _shadow );
-<a name="l00145"></a>00145 <span class="preprocessor">#endif  </span>
-<a name="l00146"></a>00146 <span class="preprocessor"></span>      status = Wire.endTransmission ();
-<a name="l00147"></a>00147    }
-<a name="l00148"></a>00148    <span class="keywordflow">return</span> ( (status == 0) );
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 
-<a name="l00151"></a>00151 <span class="comment">//</span>
-<a name="l00152"></a>00152 <span class="comment">// digitalRead</span>
-<a name="l00153"></a><a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">00153</a> uint8_t <a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO::digitalRead</a> ( uint8_t pin )
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155    uint8_t pinVal = 0;
-<a name="l00156"></a>00156    
-<a name="l00157"></a>00157    <span class="comment">// Check if initialised and that the pin is within range of the device</span>
-<a name="l00158"></a>00158    <span class="comment">// -------------------------------------------------------------------</span>
-<a name="l00159"></a>00159    <span class="keywordflow">if</span> ( ( _initialised ) &amp;&amp; ( pin &lt;= 7 ) )
-<a name="l00160"></a>00160    {
-<a name="l00161"></a>00161       <span class="comment">// Remove the values which are not inputs and get the value of the pin</span>
-<a name="l00162"></a>00162       pinVal = this-&gt;<a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a>() &amp; _dirMask;
-<a name="l00163"></a>00163       pinVal = ( pinVal &gt;&gt; pin ) &amp; 0x01; <span class="comment">// Get the pin value</span>
-<a name="l00164"></a>00164    }
-<a name="l00165"></a>00165    <span class="keywordflow">return</span> (pinVal);
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167 
-<a name="l00168"></a>00168 <span class="comment">//</span>
-<a name="l00169"></a>00169 <span class="comment">// digitalWrite</span>
-<a name="l00170"></a><a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">00170</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO::digitalWrite</a> ( uint8_t pin, uint8_t level )
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172    uint8_t writeVal;
-<a name="l00173"></a>00173    <span class="keywordtype">int</span> status = 0;
-<a name="l00174"></a>00174    
-<a name="l00175"></a>00175    <span class="comment">// Check if initialised and that the pin is within range of the device</span>
-<a name="l00176"></a>00176    <span class="comment">// -------------------------------------------------------------------</span>
-<a name="l00177"></a>00177    <span class="keywordflow">if</span> ( ( _initialised ) &amp;&amp; ( pin &lt;= 7 ) )
-<a name="l00178"></a>00178    {
-<a name="l00179"></a>00179       <span class="comment">// Only write to HIGH the port if the port has been configured as</span>
-<a name="l00180"></a>00180       <span class="comment">// an OUTPUT pin. Add the new state of the pin to the shadow</span>
-<a name="l00181"></a>00181       writeVal = ( 1 &lt;&lt; pin ) &amp; ~_dirMask;
-<a name="l00182"></a>00182       <span class="keywordflow">if</span> ( level == HIGH )
-<a name="l00183"></a>00183       {
-<a name="l00184"></a>00184          _shadow |= writeVal;
-<a name="l00185"></a>00185                                                       
-<a name="l00186"></a>00186       }
-<a name="l00187"></a>00187       <span class="keywordflow">else</span> 
-<a name="l00188"></a>00188       {
-<a name="l00189"></a>00189          _shadow &amp;= ~writeVal;
-<a name="l00190"></a>00190       }
-<a name="l00191"></a>00191       status = this-&gt;<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> ( _shadow );
-<a name="l00192"></a>00192    }
-<a name="l00193"></a>00193    <span class="keywordflow">return</span> ( status );
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195 
-<a name="l00196"></a>00196 <span class="comment">//</span>
-<a name="l00197"></a>00197 <span class="comment">// PRIVATE METHODS</span>
-<a name="l00198"></a>00198 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="comment">// CONSTRUCTOR</span>
+<a name="l00044"></a>00044 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00045"></a><a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">00045</a> <a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO::I2CIO</a> ( )
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047    _i2cAddr     = 0x0;
+<a name="l00048"></a>00048    _dirMask     = 0xFF;    <span class="comment">// mark all as INPUTs</span>
+<a name="l00049"></a>00049    _shadow      = 0x0;     <span class="comment">// no values set</span>
+<a name="l00050"></a>00050    _initialised = <span class="keyword">false</span>;
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 <span class="comment">// PUBLIC METHODS</span>
+<a name="l00054"></a>00054 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="comment">//</span>
+<a name="l00057"></a>00057 <span class="comment">// begin</span>
+<a name="l00058"></a><a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">00058</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO::begin</a> (  uint8_t i2cAddr )
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060    _i2cAddr = i2cAddr;
+<a name="l00061"></a>00061    
+<a name="l00062"></a>00062    Wire.begin ( );
+<a name="l00063"></a>00063       
+<a name="l00064"></a>00064    _initialised = Wire.requestFrom ( _i2cAddr, (uint8_t)1 );
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>   _shadow = Wire.receive ();
+<a name="l00068"></a>00068 <span class="preprocessor">#else</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>   _shadow = Wire.read (); <span class="comment">// Remove the byte read don&#39;t need it.</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#endif</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>   
+<a name="l00072"></a>00072    <span class="keywordflow">return</span> ( _initialised );
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075 <span class="comment">//</span>
+<a name="l00076"></a>00076 <span class="comment">// pinMode</span>
+<a name="l00077"></a><a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">00077</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO::pinMode</a> ( uint8_t pin, uint8_t dir )
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079    <span class="keywordflow">if</span> ( _initialised )
+<a name="l00080"></a>00080    {
+<a name="l00081"></a>00081       <span class="keywordflow">if</span> ( OUTPUT == dir )
+<a name="l00082"></a>00082       {
+<a name="l00083"></a>00083          _dirMask &amp;= ~( 1 &lt;&lt; pin );
+<a name="l00084"></a>00084       }
+<a name="l00085"></a>00085       <span class="keywordflow">else</span> 
+<a name="l00086"></a>00086       {
+<a name="l00087"></a>00087          _dirMask |= ( 1 &lt;&lt; pin );
+<a name="l00088"></a>00088       }
+<a name="l00089"></a>00089    }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092 <span class="comment">//</span>
+<a name="l00093"></a>00093 <span class="comment">// portMode</span>
+<a name="l00094"></a><a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">00094</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO::portMode</a> ( uint8_t dir )
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096    
+<a name="l00097"></a>00097    <span class="keywordflow">if</span> ( _initialised )
+<a name="l00098"></a>00098    {
+<a name="l00099"></a>00099       <span class="keywordflow">if</span> ( dir == INPUT )
+<a name="l00100"></a>00100       {
+<a name="l00101"></a>00101          _dirMask = 0xFF;
+<a name="l00102"></a>00102       }
+<a name="l00103"></a>00103       <span class="keywordflow">else</span>
+<a name="l00104"></a>00104       {
+<a name="l00105"></a>00105          _dirMask = 0x00;
+<a name="l00106"></a>00106       }
+<a name="l00107"></a>00107    }
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110 <span class="comment">//</span>
+<a name="l00111"></a>00111 <span class="comment">// read</span>
+<a name="l00112"></a><a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">00112</a> uint8_t <a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO::read</a> ( <span class="keywordtype">void</span> )
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114    uint8_t retVal = 0;
+<a name="l00115"></a>00115    
+<a name="l00116"></a>00116    <span class="keywordflow">if</span> ( _initialised )
+<a name="l00117"></a>00117    {
+<a name="l00118"></a>00118       Wire.requestFrom ( _i2cAddr, (uint8_t)1 );
+<a name="l00119"></a>00119 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>      retVal = ( _dirMask &amp; Wire.receive ( ) );
+<a name="l00121"></a>00121 <span class="preprocessor">#else</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span>      retVal = ( _dirMask &amp; Wire.read ( ) );
+<a name="l00123"></a>00123 <span class="preprocessor">#endif      </span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span>      
+<a name="l00125"></a>00125    }
+<a name="l00126"></a>00126    <span class="keywordflow">return</span> ( retVal );
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 <span class="comment">//</span>
+<a name="l00130"></a>00130 <span class="comment">// write</span>
+<a name="l00131"></a><a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">00131</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO::write</a> ( uint8_t value )
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133    <span class="keywordtype">int</span> status = 0;
+<a name="l00134"></a>00134    
+<a name="l00135"></a>00135    <span class="keywordflow">if</span> ( _initialised )
+<a name="l00136"></a>00136    {
+<a name="l00137"></a>00137       <span class="comment">// Only write HIGH the values of the ports that have been initialised as</span>
+<a name="l00138"></a>00138       <span class="comment">// outputs updating the output shadow of the device</span>
+<a name="l00139"></a>00139       _shadow = ( value &amp; ~(_dirMask) );
+<a name="l00140"></a>00140    
+<a name="l00141"></a>00141       Wire.beginTransmission ( _i2cAddr );
+<a name="l00142"></a>00142 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>      Wire.send ( _shadow );
+<a name="l00144"></a>00144 <span class="preprocessor">#else</span>
+<a name="l00145"></a>00145 <span class="preprocessor"></span>      Wire.write ( _shadow );
+<a name="l00146"></a>00146 <span class="preprocessor">#endif  </span>
+<a name="l00147"></a>00147 <span class="preprocessor"></span>      status = Wire.endTransmission ();
+<a name="l00148"></a>00148    }
+<a name="l00149"></a>00149    <span class="keywordflow">return</span> ( (status == 0) );
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="comment">//</span>
+<a name="l00153"></a>00153 <span class="comment">// digitalRead</span>
+<a name="l00154"></a><a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">00154</a> uint8_t <a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO::digitalRead</a> ( uint8_t pin )
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156    uint8_t pinVal = 0;
+<a name="l00157"></a>00157    
+<a name="l00158"></a>00158    <span class="comment">// Check if initialised and that the pin is within range of the device</span>
+<a name="l00159"></a>00159    <span class="comment">// -------------------------------------------------------------------</span>
+<a name="l00160"></a>00160    <span class="keywordflow">if</span> ( ( _initialised ) &amp;&amp; ( pin &lt;= 7 ) )
+<a name="l00161"></a>00161    {
+<a name="l00162"></a>00162       <span class="comment">// Remove the values which are not inputs and get the value of the pin</span>
+<a name="l00163"></a>00163       pinVal = this-&gt;<a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a>() &amp; _dirMask;
+<a name="l00164"></a>00164       pinVal = ( pinVal &gt;&gt; pin ) &amp; 0x01; <span class="comment">// Get the pin value</span>
+<a name="l00165"></a>00165    }
+<a name="l00166"></a>00166    <span class="keywordflow">return</span> (pinVal);
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169 <span class="comment">//</span>
+<a name="l00170"></a>00170 <span class="comment">// digitalWrite</span>
+<a name="l00171"></a><a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">00171</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO::digitalWrite</a> ( uint8_t pin, uint8_t level )
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173    uint8_t writeVal;
+<a name="l00174"></a>00174    <span class="keywordtype">int</span> status = 0;
+<a name="l00175"></a>00175    
+<a name="l00176"></a>00176    <span class="comment">// Check if initialised and that the pin is within range of the device</span>
+<a name="l00177"></a>00177    <span class="comment">// -------------------------------------------------------------------</span>
+<a name="l00178"></a>00178    <span class="keywordflow">if</span> ( ( _initialised ) &amp;&amp; ( pin &lt;= 7 ) )
+<a name="l00179"></a>00179    {
+<a name="l00180"></a>00180       <span class="comment">// Only write to HIGH the port if the port has been configured as</span>
+<a name="l00181"></a>00181       <span class="comment">// an OUTPUT pin. Add the new state of the pin to the shadow</span>
+<a name="l00182"></a>00182       writeVal = ( 1 &lt;&lt; pin ) &amp; ~_dirMask;
+<a name="l00183"></a>00183       <span class="keywordflow">if</span> ( level == HIGH )
+<a name="l00184"></a>00184       {
+<a name="l00185"></a>00185          _shadow |= writeVal;
+<a name="l00186"></a>00186                                                       
+<a name="l00187"></a>00187       }
+<a name="l00188"></a>00188       <span class="keywordflow">else</span> 
+<a name="l00189"></a>00189       {
+<a name="l00190"></a>00190          _shadow &amp;= ~writeVal;
+<a name="l00191"></a>00191       }
+<a name="l00192"></a>00192       status = this-&gt;<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> ( _shadow );
+<a name="l00193"></a>00193    }
+<a name="l00194"></a>00194    <span class="keywordflow">return</span> ( status );
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197 <span class="comment">//</span>
+<a name="l00198"></a>00198 <span class="comment">// PRIVATE METHODS</span>
+<a name="l00199"></a>00199 <span class="comment">// ---------------------------------------------------------------------------</span>
 </pre></div></div>
 </div>
 <!-- window showing the filter options -->
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_i2_c_i_o_8h.html

 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_i2_c_i_o_8h_source.html

 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_l_c_d_8cpp.html

 <code>#include &lt;string.h&gt;</code><br/>
 <code>#include &lt;inttypes.h&gt;</code><br/>
 <code>#include &lt;WProgram.h&gt;</code><br/>
-<code>#include &lt;<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>&gt;</code><br/>
+<code>#include &quot;<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>&quot;</code><br/>
 </div>
 <p><a href="_l_c_d_8cpp_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_l_c_d_8cpp_source.html

 <a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span>
 <a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span>
 <a name="l00011"></a>00011 <span class="comment">//</span>
-<a name="l00012"></a>00012 <span class="comment">// @file HD44780.h</span>
+<a name="l00012"></a>00012 <span class="comment">// @file LCD.cpp</span>
 <a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span>
 <a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK.</span>
 <a name="l00015"></a>00015 <span class="comment">// </span>
 <a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the HD44780 library of the</span>
 <a name="l00018"></a>00018 <span class="comment">// Arduino SDK. This library is a refactored version of the one supplied</span>
 <a name="l00019"></a>00019 <span class="comment">// in the Arduino SDK in such a way that it simplifies its extension</span>
-<a name="l00020"></a>00020 <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial.</span>
+<a name="l00020"></a>00020 <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, ...</span>
 <a name="l00021"></a>00021 <span class="comment">// The original library has been reworked in such a way that this will be</span>
 <a name="l00022"></a>00022 <span class="comment">// the base class implementing all generic methods to command an LCD based</span>
 <a name="l00023"></a>00023 <span class="comment">// on the Hitachi HD44780 and compatible chipsets.</span>
 <a name="l00027"></a>00027 <span class="comment">// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC.</span>
 <a name="l00028"></a>00028 <span class="comment">//</span>
 <a name="l00029"></a>00029 <span class="comment">//</span>
-<a name="l00030"></a>00030 <span class="comment">// This library is only compatible with Arduino&#39;s SDK version 1.0</span>
+<a name="l00030"></a>00030 <span class="comment">// @version API 1.0.0</span>
 <a name="l00031"></a>00031 <span class="comment">//</span>
-<a name="l00032"></a>00032 <span class="comment">// @version API 1.0.0</span>
-<a name="l00033"></a>00033 <span class="comment">//</span>
-<a name="l00034"></a>00034 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span>
-<a name="l00035"></a>00035 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#else</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#endif</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="_l_c_d_8h.html">LCD.h</a>&gt;</span>
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047 <span class="comment">// CLASS CONSTRUCTORS</span>
-<a name="l00048"></a>00048 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00049"></a>00049 <span class="comment">// Constructor</span>
-<a name="l00050"></a><a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">00050</a> <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD::LCD</a> () 
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052    
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 <span class="comment">// PUBLIC METHODS</span>
-<a name="l00056"></a>00056 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058 <span class="comment">// Common LCD Commands</span>
-<a name="l00059"></a>00059 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00060"></a><a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">00060</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD::clear</a>()
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD_CLEARDISPLAY</a>);             <span class="comment">// clear display, set cursor position to zero</span>
-<a name="l00063"></a>00063    delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>);    <span class="comment">// this command is time consuming</span>
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065 
-<a name="l00066"></a><a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">00066</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD::home</a>()
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD_RETURNHOME</a>);             <span class="comment">// set cursor position to zero</span>
-<a name="l00069"></a>00069    delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>);  <span class="comment">// This command is time consuming</span>
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">00072</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD::setCursor</a>(uint8_t col, uint8_t row)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074    <span class="keyword">const</span> byte row_offsetsDef[]   = { 0x00, 0x40, 0x14, 0x54 }; <span class="comment">// For regular LCDs</span>
-<a name="l00075"></a>00075    <span class="keyword">const</span> byte row_offsetsLarge[] = { 0x00, 0x40, 0x10, 0x50 }; <span class="comment">// For 16x4 LCDs</span>
-<a name="l00076"></a>00076    
-<a name="l00077"></a>00077    <span class="keywordflow">if</span> ( row &gt;= <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> ) 
+<a name="l00032"></a>00032 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span>
+<a name="l00033"></a>00033 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#else</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="_l_c_d_8h.html">LCD.h</a>&quot;</span>
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 <span class="comment">// CLASS CONSTRUCTORS</span>
+<a name="l00046"></a>00046 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00047"></a>00047 <span class="comment">// Constructor</span>
+<a name="l00048"></a><a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">00048</a> <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD::LCD</a> () 
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050    
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 <span class="comment">// PUBLIC METHODS</span>
+<a name="l00054"></a>00054 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00055"></a>00055 <span class="comment">// When the display powers up, it is configured as follows:</span>
+<a name="l00056"></a>00056 <span class="comment">//</span>
+<a name="l00057"></a>00057 <span class="comment">// 1. Display clear</span>
+<a name="l00058"></a>00058 <span class="comment">// 2. Function set: </span>
+<a name="l00059"></a>00059 <span class="comment">//    DL = 1; 8-bit interface data </span>
+<a name="l00060"></a>00060 <span class="comment">//    N = 0; 1-line display </span>
+<a name="l00061"></a>00061 <span class="comment">//    F = 0; 5x8 dot character font </span>
+<a name="l00062"></a>00062 <span class="comment">// 3. Display on/off control: </span>
+<a name="l00063"></a>00063 <span class="comment">//    D = 0; Display off </span>
+<a name="l00064"></a>00064 <span class="comment">//    C = 0; Cursor off </span>
+<a name="l00065"></a>00065 <span class="comment">//    B = 0; Blinking off </span>
+<a name="l00066"></a>00066 <span class="comment">// 4. Entry mode set: </span>
+<a name="l00067"></a>00067 <span class="comment">//    I/D = 1; Increment by 1 </span>
+<a name="l00068"></a>00068 <span class="comment">//    S = 0; No shift </span>
+<a name="l00069"></a>00069 <span class="comment">//</span>
+<a name="l00070"></a>00070 <span class="comment">// Note, however, that resetting the Arduino doesn&#39;t reset the LCD, so we</span>
+<a name="l00071"></a>00071 <span class="comment">// can&#39;t assume that its in that state when a sketch starts (and the</span>
+<a name="l00072"></a>00072 <span class="comment">// LiquidCrystal constructor is called).</span>
+<a name="l00073"></a>00073 <span class="comment">// A call to begin() will reinitialize the LCD.</span>
+<a name="l00074"></a>00074 <span class="comment">//</span>
+<a name="l00075"></a><a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">00075</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD::begin</a>(uint8_t cols, uint8_t lines, uint8_t dotsize) 
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077    <span class="keywordflow">if</span> (lines &gt; 1) 
 <a name="l00078"></a>00078    {
-<a name="l00079"></a>00079       row = <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a>-1;    <span class="comment">// rows start at 0</span>
+<a name="l00079"></a>00079       <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> |= <a class="code" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD_2LINE</a>;
 <a name="l00080"></a>00080    }
-<a name="l00081"></a>00081    
-<a name="l00082"></a>00082    <span class="comment">// 16x4 LCDs have special memory map layout</span>
-<a name="l00083"></a>00083    <span class="comment">// ----------------------------------------</span>
-<a name="l00084"></a>00084    <span class="keywordflow">if</span> ( <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a> == 16 &amp;&amp; <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> == 4 )
-<a name="l00085"></a>00085    {
-<a name="l00086"></a>00086       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsLarge[row]));
-<a name="l00087"></a>00087    }
-<a name="l00088"></a>00088    <span class="keywordflow">else</span> 
-<a name="l00089"></a>00089    {
-<a name="l00090"></a>00090       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsDef[row]));
-<a name="l00091"></a>00091    }
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095 <span class="comment">// Turn the display on/off</span>
-<a name="l00096"></a><a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">00096</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a>() 
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>;
-<a name="l00099"></a>00099    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 
-<a name="l00102"></a><a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">00102</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a>() 
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>;
-<a name="l00105"></a>00105    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 
-<a name="l00108"></a>00108 <span class="comment">// Turns the underline cursor on/off</span>
-<a name="l00109"></a><a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">00109</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD::noCursor</a>() 
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>;
-<a name="l00112"></a>00112    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00113"></a>00113 }
-<a name="l00114"></a><a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">00114</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD::cursor</a>() 
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>;
-<a name="l00117"></a>00117    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120 <span class="comment">// Turns on/off the blinking cursor</span>
-<a name="l00121"></a><a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">00121</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD::noBlink</a>() 
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>;
-<a name="l00124"></a>00124    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 
-<a name="l00127"></a><a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">00127</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD::blink</a>() 
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>;
-<a name="l00130"></a>00130    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 
-<a name="l00133"></a>00133 <span class="comment">// These commands scroll the display without changing the RAM</span>
-<a name="l00134"></a><a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">00134</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD::scrollDisplayLeft</a>(<span class="keywordtype">void</span>) 
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD_MOVELEFT</a>);
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 
-<a name="l00139"></a><a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">00139</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD::scrollDisplayRight</a>(<span class="keywordtype">void</span>) {
-<a name="l00140"></a>00140    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD_MOVERIGHT</a>);
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 
-<a name="l00143"></a>00143 <span class="comment">// This is for text that flows Left to Right</span>
-<a name="l00144"></a><a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">00144</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD::leftToRight</a>(<span class="keywordtype">void</span>) 
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>;
-<a name="l00147"></a>00147    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150 <span class="comment">// This is for text that flows Right to Left</span>
-<a name="l00151"></a><a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">00151</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD::rightToLeft</a>(<span class="keywordtype">void</span>) 
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>;
-<a name="l00154"></a>00154    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157 <span class="comment">// This will &#39;right justify&#39; text from the cursor</span>
-<a name="l00158"></a><a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">00158</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD::autoscroll</a>(<span class="keywordtype">void</span>) 
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>;
-<a name="l00161"></a>00161    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 
-<a name="l00164"></a>00164 <span class="comment">// This will &#39;left justify&#39; text from the cursor</span>
-<a name="l00165"></a><a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">00165</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD::noAutoscroll</a>(<span class="keywordtype">void</span>) 
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>;
-<a name="l00168"></a>00168    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 
-<a name="l00171"></a>00171 <span class="comment">// Write to CGRAM of new characters</span>
-<a name="l00172"></a><a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">00172</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD::createChar</a>(uint8_t location, uint8_t charmap[]) 
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174    location &amp;= 0x7;            <span class="comment">// we only have 8 locations 0-7</span>
-<a name="l00175"></a>00175    
-<a name="l00176"></a>00176    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD_SETCGRAMADDR</a> | (location &lt;&lt; 3));
+<a name="l00081"></a>00081    <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> = lines;
+<a name="l00082"></a>00082    <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a> = cols;
+<a name="l00083"></a>00083    
+<a name="l00084"></a>00084    <span class="comment">// for some 1 line displays you can select a 10 pixel high font</span>
+<a name="l00085"></a>00085    <span class="comment">// ------------------------------------------------------------</span>
+<a name="l00086"></a>00086    <span class="keywordflow">if</span> ((dotsize != 0) &amp;&amp; (lines == 1)) 
+<a name="l00087"></a>00087    {
+<a name="l00088"></a>00088       <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> |= <a class="code" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD_5x10DOTS</a>;
+<a name="l00089"></a>00089    }
+<a name="l00090"></a>00090    
+<a name="l00091"></a>00091    <span class="comment">// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!</span>
+<a name="l00092"></a>00092    <span class="comment">// according to datasheet, we need at least 40ms after power rises above 2.7V</span>
+<a name="l00093"></a>00093    <span class="comment">// before sending commands. Arduino can turn on way before 4.5V so we&#39;ll wait </span>
+<a name="l00094"></a>00094    <span class="comment">// 50</span>
+<a name="l00095"></a>00095    <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00096"></a>00096    delayMicroseconds(100000); 
+<a name="l00097"></a>00097       
+<a name="l00098"></a>00098    <span class="comment">//put the LCD into 4 bit or 8 bit mode</span>
+<a name="l00099"></a>00099    <span class="comment">// -------------------------------------</span>
+<a name="l00100"></a>00100    <span class="keywordflow">if</span> (! (<a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> &amp; <a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD_8BITMODE</a>)) 
+<a name="l00101"></a>00101    {
+<a name="l00102"></a>00102       <span class="comment">// this is according to the hitachi HD44780 datasheet</span>
+<a name="l00103"></a>00103       <span class="comment">// figure 24, pg 46</span>
+<a name="l00104"></a>00104       
+<a name="l00105"></a>00105       <span class="comment">// we start in 8bit mode, try to set 4 bit mode</span>
+<a name="l00106"></a>00106       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a> ( 0x03 );
+<a name="l00107"></a>00107       delayMicroseconds(4500); <span class="comment">// wait min 4.1ms</span>
+<a name="l00108"></a>00108       
+<a name="l00109"></a>00109       <span class="comment">// second try</span>
+<a name="l00110"></a>00110       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a> ( 0x03 );
+<a name="l00111"></a>00111       delayMicroseconds(4500); <span class="comment">// wait min 4.1ms</span>
+<a name="l00112"></a>00112       
+<a name="l00113"></a>00113       <span class="comment">// third go!</span>
+<a name="l00114"></a>00114       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a> ( 0x03 ); 
+<a name="l00115"></a>00115       delayMicroseconds(150);
+<a name="l00116"></a>00116       
+<a name="l00117"></a>00117       <span class="comment">// finally, set to 4-bit interface</span>
+<a name="l00118"></a>00118       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a> ( 0x02 ); 
+<a name="l00119"></a>00119    } 
+<a name="l00120"></a>00120    <span class="keywordflow">else</span> 
+<a name="l00121"></a>00121    {
+<a name="l00122"></a>00122       <span class="comment">// this is according to the hitachi HD44780 datasheet</span>
+<a name="l00123"></a>00123       <span class="comment">// page 45 figure 23</span>
+<a name="l00124"></a>00124       
+<a name="l00125"></a>00125       <span class="comment">// Send function set command sequence</span>
+<a name="l00126"></a>00126       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>);
+<a name="l00127"></a>00127       delayMicroseconds(4500);  <span class="comment">// wait more than 4.1ms</span>
+<a name="l00128"></a>00128       
+<a name="l00129"></a>00129       <span class="comment">// second try</span>
+<a name="l00130"></a>00130       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>);
+<a name="l00131"></a>00131       delayMicroseconds(150);
+<a name="l00132"></a>00132       
+<a name="l00133"></a>00133       <span class="comment">// third go</span>
+<a name="l00134"></a>00134       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>);
+<a name="l00135"></a>00135    }
+<a name="l00136"></a>00136    
+<a name="l00137"></a>00137    <span class="comment">// finally, set # lines, font size, etc.</span>
+<a name="l00138"></a>00138    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>);  
+<a name="l00139"></a>00139    
+<a name="l00140"></a>00140    <span class="comment">// turn the display on with no cursor or blinking default</span>
+<a name="l00141"></a>00141    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> = <a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a> | <a class="code" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">LCD_CURSOROFF</a> | <a class="code" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">LCD_BLINKOFF</a>;  
+<a name="l00142"></a>00142    <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();
+<a name="l00143"></a>00143    
+<a name="l00144"></a>00144    <span class="comment">// clear the LCD</span>
+<a name="l00145"></a>00145    <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>();
+<a name="l00146"></a>00146    
+<a name="l00147"></a>00147    <span class="comment">// Initialize to default text direction (for romance languages)</span>
+<a name="l00148"></a>00148    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> = <a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a> | <a class="code" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">LCD_ENTRYSHIFTDECREMENT</a>;
+<a name="l00149"></a>00149    <span class="comment">// set the entry mode</span>
+<a name="l00150"></a>00150    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
+<a name="l00151"></a>00151    
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 <span class="comment">// Common LCD Commands</span>
+<a name="l00155"></a>00155 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00156"></a><a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">00156</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD::clear</a>()
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD_CLEARDISPLAY</a>);             <span class="comment">// clear display, set cursor position to zero</span>
+<a name="l00159"></a>00159    delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>);    <span class="comment">// this command is time consuming</span>
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 
+<a name="l00162"></a><a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">00162</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD::home</a>()
+<a name="l00163"></a>00163 {
+<a name="l00164"></a>00164    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD_RETURNHOME</a>);             <span class="comment">// set cursor position to zero</span>
+<a name="l00165"></a>00165    delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>);  <span class="comment">// This command is time consuming</span>
+<a name="l00166"></a>00166 }
+<a name="l00167"></a>00167 
+<a name="l00168"></a><a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">00168</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD::setCursor</a>(uint8_t col, uint8_t row)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170    <span class="keyword">const</span> byte row_offsetsDef[]   = { 0x00, 0x40, 0x14, 0x54 }; <span class="comment">// For regular LCDs</span>
+<a name="l00171"></a>00171    <span class="keyword">const</span> byte row_offsetsLarge[] = { 0x00, 0x40, 0x10, 0x50 }; <span class="comment">// For 16x4 LCDs</span>
+<a name="l00172"></a>00172    
+<a name="l00173"></a>00173    <span class="keywordflow">if</span> ( row &gt;= <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> ) 
+<a name="l00174"></a>00174    {
+<a name="l00175"></a>00175       row = <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a>-1;    <span class="comment">// rows start at 0</span>
+<a name="l00176"></a>00176    }
 <a name="l00177"></a>00177    
-<a name="l00178"></a>00178    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;8; i++) 
-<a name="l00179"></a>00179    {
-<a name="l00180"></a>00180       <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(charmap[i]);      <span class="comment">// call the virtual write method</span>
-<a name="l00181"></a>00181    }
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 
-<a name="l00184"></a>00184 <span class="comment">// General LCD commands - generic methods used by the rest of the commands</span>
-<a name="l00185"></a>00185 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00186"></a><a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">00186</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">LCD::command</a>(uint8_t value) 
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>);
+<a name="l00178"></a>00178    <span class="comment">// 16x4 LCDs have special memory map layout</span>
+<a name="l00179"></a>00179    <span class="comment">// ----------------------------------------</span>
+<a name="l00180"></a>00180    <span class="keywordflow">if</span> ( <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a> == 16 &amp;&amp; <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> == 4 )
+<a name="l00181"></a>00181    {
+<a name="l00182"></a>00182       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsLarge[row]));
+<a name="l00183"></a>00183    }
+<a name="l00184"></a>00184    <span class="keywordflow">else</span> 
+<a name="l00185"></a>00185    {
+<a name="l00186"></a>00186       <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsDef[row]));
+<a name="l00187"></a>00187    }
+<a name="l00188"></a>00188 
 <a name="l00189"></a>00189 }
 <a name="l00190"></a>00190 
-<a name="l00191"></a>00191 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00192"></a><a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">00192</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value)
+<a name="l00191"></a>00191 <span class="comment">// Turn the display on/off</span>
+<a name="l00192"></a><a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">00192</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a>() 
 <a name="l00193"></a>00193 {
-<a name="l00194"></a>00194    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>);
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 <span class="preprocessor">#else</span>
-<a name="l00197"></a>00197 <span class="preprocessor"></span><span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value) 
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>);
-<a name="l00200"></a>00200    <span class="keywordflow">return</span> 1;             <span class="comment">// assume OK</span>
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202 <span class="preprocessor">#endif</span>
+<a name="l00194"></a>00194    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>;
+<a name="l00195"></a>00195    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197 
+<a name="l00198"></a><a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">00198</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a>() 
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>;
+<a name="l00201"></a>00201    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204 <span class="comment">// Turns the underline cursor on/off</span>
+<a name="l00205"></a><a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">00205</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD::noCursor</a>() 
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>;
+<a name="l00208"></a>00208    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00209"></a>00209 }
+<a name="l00210"></a><a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">00210</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD::cursor</a>() 
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>;
+<a name="l00213"></a>00213    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 
+<a name="l00216"></a>00216 <span class="comment">// Turns on/off the blinking cursor</span>
+<a name="l00217"></a><a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">00217</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD::noBlink</a>() 
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>;
+<a name="l00220"></a>00220    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 
+<a name="l00223"></a><a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">00223</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD::blink</a>() 
+<a name="l00224"></a>00224 {
+<a name="l00225"></a>00225    <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>;
+<a name="l00226"></a>00226    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>);
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229 <span class="comment">// These commands scroll the display without changing the RAM</span>
+<a name="l00230"></a><a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">00230</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD::scrollDisplayLeft</a>(<span class="keywordtype">void</span>) 
+<a name="l00231"></a>00231 {
+<a name="l00232"></a>00232    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD_MOVELEFT</a>);
+<a name="l00233"></a>00233 }
+<a name="l00234"></a>00234 
+<a name="l00235"></a><a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">00235</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD::scrollDisplayRight</a>(<span class="keywordtype">void</span>) {
+<a name="l00236"></a>00236    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD_MOVERIGHT</a>);
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239 <span class="comment">// This is for text that flows Left to Right</span>
+<a name="l00240"></a><a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">00240</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD::leftToRight</a>(<span class="keywordtype">void</span>) 
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>;
+<a name="l00243"></a>00243    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246 <span class="comment">// This is for text that flows Right to Left</span>
+<a name="l00247"></a><a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">00247</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD::rightToLeft</a>(<span class="keywordtype">void</span>) 
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>;
+<a name="l00250"></a>00250    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 <span class="comment">// This will &#39;right justify&#39; text from the cursor</span>
+<a name="l00254"></a><a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">00254</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD::autoscroll</a>(<span class="keywordtype">void</span>) 
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>;
+<a name="l00257"></a>00257    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260 <span class="comment">// This will &#39;left justify&#39; text from the cursor</span>
+<a name="l00261"></a><a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">00261</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD::noAutoscroll</a>(<span class="keywordtype">void</span>) 
+<a name="l00262"></a>00262 {
+<a name="l00263"></a>00263    <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &amp;= ~<a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>;
+<a name="l00264"></a>00264    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>);
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266 
+<a name="l00267"></a>00267 <span class="comment">// Write to CGRAM of new characters</span>
+<a name="l00268"></a><a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">00268</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD::createChar</a>(uint8_t location, uint8_t charmap[]) 
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270    location &amp;= 0x7;            <span class="comment">// we only have 8 locations 0-7</span>
+<a name="l00271"></a>00271    
+<a name="l00272"></a>00272    <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(<a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD_SETCGRAMADDR</a> | (location &lt;&lt; 3));
+<a name="l00273"></a>00273    delayMicroseconds(30);
+<a name="l00274"></a>00274    
+<a name="l00275"></a>00275    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;8; i++) 
+<a name="l00276"></a>00276    {
+<a name="l00277"></a>00277       <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(charmap[i]);      <span class="comment">// call the virtual write method</span>
+<a name="l00278"></a>00278       delayMicroseconds(30);
+<a name="l00279"></a>00279    }
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281 
+<a name="l00282"></a>00282 <span class="comment">// General LCD commands - generic methods used by the rest of the commands</span>
+<a name="l00283"></a>00283 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00284"></a><a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">00284</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">LCD::command</a>(uint8_t value) 
+<a name="l00285"></a>00285 {
+<a name="l00286"></a>00286    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>);
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 
+<a name="l00289"></a>00289 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00290"></a><a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">00290</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value)
+<a name="l00291"></a>00291 {
+<a name="l00292"></a>00292    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>);
+<a name="l00293"></a>00293 }
+<a name="l00294"></a>00294 <span class="preprocessor">#else</span>
+<a name="l00295"></a>00295 <span class="preprocessor"></span><span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value) 
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297    <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>);
+<a name="l00298"></a>00298    <span class="keywordflow">return</span> 1;             <span class="comment">// assume OK</span>
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300 <span class="preprocessor">#endif</span>
 </pre></div></div>
 </div>
 <!-- window showing the filter options -->
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_l_c_d_8h.html

 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>&#160;&#160;&#160;0</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>&#160;&#160;&#160;1</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ac707c9605a0b9ca67aa757ad23377feb">FAST_MODE</a></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>&#160;&#160;&#160;2000</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a>&#160;&#160;&#160;0x00</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD_2LINE</a>&#160;&#160;&#160;0x08</td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00132">132</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00129">129</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00133">133</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00130">130</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac707c9605a0b9ca67aa757ad23377feb"></a><!-- doxytag: member="LCD.h::FAST_MODE" ref="ac707c9605a0b9ca67aa757ad23377feb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define FAST_MODE</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Enables disables fast waits for write operations for <a class="el" href="class_l_c_d.html">LCD</a>  If defined, the library will avoid doing un-necessary waits. this can be done, because the time taken by Arduino's slow digitalWrite operations. If fast digitalIO operations, comment this line out or undefine the mode. </p>
+
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00055">55</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 <div class="memdoc">
 <p>Defines the duration of the home and clear commands  This constant defines the time it takes for the home and clear commands in the <a class="el" href="class_l_c_d.html">LCD</a> - Time in microseconds. </p>
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00141">141</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00138">138</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00123">123</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00120">120</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00122">122</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00119">119</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00127">127</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00124">124</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00121">121</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00118">118</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00124">124</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00121">121</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00125">125</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00122">122</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00128">128</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00125">125</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00120">120</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00117">117</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00109">109</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00106">106</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00108">108</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00105">105</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 <div class="memdoc">
 <p>All these definitions shouldn't be used unless you are writing a driver.  All these definitions are for driver implementation only and shouldn't be used by applications. </p>
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00086">86</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00083">83</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00114">114</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00111">111</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00107">107</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00104">104</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00106">106</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00103">103</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00090">90</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00087">87</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00089">89</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00086">86</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00113">113</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00110">110</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00105">105</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00102">102</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00104">104</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00101">101</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00098">98</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00095">95</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00088">88</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00085">85</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00097">97</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00094">94</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00100">100</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00097">97</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00099">99</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00096">96</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00091">91</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00088">88</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00116">116</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00113">113</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00115">115</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00112">112</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00087">87</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00084">84</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00092">92</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00089">89</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00093">93</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00090">90</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
       </table>
 </div>
 <div class="memdoc">
-<p>Enables disables fast waits for write operations for <a class="el" href="class_l_c_d.html">LCD</a>  If defined, the library will avoid doing un-necessary waits. this can be done, because the time taken by Arduino's slow digitalWrite operations. If fast digitalIO operations, comment this line out or undefine the mode.</p>
 <p>waits for a given time in microseconds (compilation dependent).  Waits for a given time defined in microseconds depending on the FAST_MODE define. If the FAST_MODE is defined the call will return inmediatelly. </p>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table class="params">
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>None </dd></dl>
 
-<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00069">69</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
+<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00066">66</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p>
 
 </div>
 </div>
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_l_c_d_8h_source.html

 <a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span>
 <a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span>
 <a name="l00011"></a>00011 <span class="comment">//</span>
-<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal.h</span>
+<a name="l00012"></a>00012 <span class="comment">// @file LCD.h</span>
 <a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span>
 <a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK.</span>
 <a name="l00015"></a>00015 <span class="comment">// </span>
 <a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span>
 <a name="l00018"></a>00018 <span class="comment">// Arduino SDK. This library is a refactored version of the one supplied</span>
 <a name="l00019"></a>00019 <span class="comment">// in the Arduino SDK in such a way that it simplifies its extension</span>
-<a name="l00020"></a>00020 <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial.</span>
+<a name="l00020"></a>00020 <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, </span>
 <a name="l00021"></a>00021 <span class="comment">// The original library has been reworked in such a way that this will be</span>
 <a name="l00022"></a>00022 <span class="comment">// the base class implementing all generic methods to command an LCD based</span>
 <a name="l00023"></a>00023 <span class="comment">// on the Hitachi HD44780 and compatible chipsets.</span>
 <a name="l00026"></a>00026 <span class="comment">// it has been extended to drive 4 and 8 bit mode control, LCDs and I2C extension</span>
 <a name="l00027"></a>00027 <span class="comment">// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC.</span>
 <a name="l00028"></a>00028 <span class="comment">//</span>
-<a name="l00029"></a>00029 <span class="comment">//</span>
-<a name="l00030"></a>00030 <span class="comment">// This library is only compatible with Arduino&#39;s SDK version 1.0</span>
+<a name="l00029"></a>00029 <span class="comment">// @version API 1.0.0</span>
+<a name="l00030"></a>00030 <span class="comment">//</span>
 <a name="l00031"></a>00031 <span class="comment">//</span>
-<a name="l00032"></a>00032 <span class="comment">// @version API 1.0.0</span>
-<a name="l00033"></a>00033 <span class="comment">//</span>
-<a name="l00034"></a>00034 <span class="comment">//</span>
-<a name="l00035"></a>00035 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span>
-<a name="l00036"></a>00036 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#ifndef _LCD_H_</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define _LCD_H_</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#else</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#endif</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;Print.h&gt;</span>
-<a name="l00048"></a>00048 
-<a name="l00049"></a>00049 
-<a name="l00058"></a>00058 <span class="comment">//#define FAST_MODE</span>
-<a name="l00059"></a>00059 
-<a name="l00069"></a><a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">00069</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a> ( uint16_t uSec )
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="preprocessor">#ifndef FAST_MODE</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>   delayMicroseconds ( uSec );
-<a name="l00073"></a>00073 <span class="preprocessor">#endif // FAST_MODE</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>}
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076 
-<a name="l00084"></a>00084 <span class="comment">// LCD Commands</span>
-<a name="l00085"></a>00085 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00086"></a><a class="code" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">00086</a> <span class="preprocessor">#define LCD_CLEARDISPLAY        0x01</span>
-<a name="l00087"></a><a class="code" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">00087</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RETURNHOME          0x02</span>
-<a name="l00088"></a><a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">00088</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYMODESET        0x04</span>
-<a name="l00089"></a><a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">00089</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DISPLAYCONTROL      0x08</span>
-<a name="l00090"></a><a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">00090</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORSHIFT         0x10</span>
-<a name="l00091"></a><a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">00091</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_FUNCTIONSET         0x20</span>
-<a name="l00092"></a><a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">00092</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_SETCGRAMADDR        0x40</span>
-<a name="l00093"></a><a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">00093</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_SETDDRAMADDR        0x80</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>
-<a name="l00095"></a>00095 <span class="comment">// flags for display entry mode</span>
-<a name="l00096"></a>00096 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00097"></a><a class="code" href="_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad">00097</a> <span class="preprocessor">#define LCD_ENTRYRIGHT          0x00</span>
-<a name="l00098"></a><a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">00098</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYLEFT           0x02</span>
-<a name="l00099"></a><a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">00099</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYSHIFTINCREMENT 0x01</span>
-<a name="l00100"></a><a class="code" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">00100</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYSHIFTDECREMENT 0x00</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span>
-<a name="l00102"></a>00102 <span class="comment">// flags for display on/off and cursor control</span>
-<a name="l00103"></a>00103 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00104"></a><a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">00104</a> <span class="preprocessor">#define LCD_DISPLAYON           0x04</span>
-<a name="l00105"></a><a class="code" href="_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a">00105</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DISPLAYOFF          0x00</span>
-<a name="l00106"></a><a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">00106</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORON            0x02</span>
-<a name="l00107"></a><a class="code" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">00107</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSOROFF           0x00</span>
-<a name="l00108"></a><a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">00108</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_BLINKON             0x01</span>
-<a name="l00109"></a><a class="code" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">00109</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_BLINKOFF            0x00</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span>
-<a name="l00111"></a>00111 <span class="comment">// flags for display/cursor shift</span>
-<a name="l00112"></a>00112 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00113"></a><a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">00113</a> <span class="preprocessor">#define LCD_DISPLAYMOVE         0x08</span>
-<a name="l00114"></a><a class="code" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">00114</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORMOVE          0x00</span>
-<a name="l00115"></a><a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">00115</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_MOVERIGHT           0x04</span>
-<a name="l00116"></a><a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">00116</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_MOVELEFT            0x00</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span>
-<a name="l00118"></a>00118 <span class="comment">// flags for function set</span>
-<a name="l00119"></a>00119 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00120"></a><a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">00120</a> <span class="preprocessor">#define LCD_8BITMODE            0x10</span>
-<a name="l00121"></a><a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">00121</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_4BITMODE            0x00</span>
-<a name="l00122"></a><a class="code" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">00122</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_2LINE               0x08</span>
-<a name="l00123"></a><a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">00123</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_1LINE               0x00</span>
-<a name="l00124"></a><a class="code" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">00124</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_5x10DOTS            0x04</span>
-<a name="l00125"></a><a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">00125</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_5x8DOTS             0x00</span>
+<a name="l00032"></a>00032 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span>
+<a name="l00033"></a>00033 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#ifndef _LCD_H_</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define _LCD_H_</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#else</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;Print.h&gt;</span>
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 
+<a name="l00055"></a><a class="code" href="_l_c_d_8h.html#ac707c9605a0b9ca67aa757ad23377feb">00055</a> <span class="preprocessor">#define FAST_MODE</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00066"></a><a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">00066</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a> ( uint16_t uSec )
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 <span class="preprocessor">#ifndef FAST_MODE</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>   delayMicroseconds ( uSec );
+<a name="l00070"></a>00070 <span class="preprocessor">#endif // FAST_MODE</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>}
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073 
+<a name="l00081"></a>00081 <span class="comment">// LCD Commands</span>
+<a name="l00082"></a>00082 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00083"></a><a class="code" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">00083</a> <span class="preprocessor">#define LCD_CLEARDISPLAY        0x01</span>
+<a name="l00084"></a><a class="code" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">00084</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RETURNHOME          0x02</span>
+<a name="l00085"></a><a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">00085</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYMODESET        0x04</span>
+<a name="l00086"></a><a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">00086</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DISPLAYCONTROL      0x08</span>
+<a name="l00087"></a><a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">00087</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORSHIFT         0x10</span>
+<a name="l00088"></a><a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">00088</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_FUNCTIONSET         0x20</span>
+<a name="l00089"></a><a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">00089</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_SETCGRAMADDR        0x40</span>
+<a name="l00090"></a><a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">00090</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_SETDDRAMADDR        0x80</span>
+<a name="l00091"></a>00091 <span class="preprocessor"></span>
+<a name="l00092"></a>00092 <span class="comment">// flags for display entry mode</span>
+<a name="l00093"></a>00093 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00094"></a><a class="code" href="_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad">00094</a> <span class="preprocessor">#define LCD_ENTRYRIGHT          0x00</span>
+<a name="l00095"></a><a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">00095</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYLEFT           0x02</span>
+<a name="l00096"></a><a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">00096</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYSHIFTINCREMENT 0x01</span>
+<a name="l00097"></a><a class="code" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">00097</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_ENTRYSHIFTDECREMENT 0x00</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span>
+<a name="l00099"></a>00099 <span class="comment">// flags for display on/off and cursor control</span>
+<a name="l00100"></a>00100 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00101"></a><a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">00101</a> <span class="preprocessor">#define LCD_DISPLAYON           0x04</span>
+<a name="l00102"></a><a class="code" href="_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a">00102</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DISPLAYOFF          0x00</span>
+<a name="l00103"></a><a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">00103</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORON            0x02</span>
+<a name="l00104"></a><a class="code" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">00104</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSOROFF           0x00</span>
+<a name="l00105"></a><a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">00105</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_BLINKON             0x01</span>
+<a name="l00106"></a><a class="code" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">00106</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_BLINKOFF            0x00</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span>
+<a name="l00108"></a>00108 <span class="comment">// flags for display/cursor shift</span>
+<a name="l00109"></a>00109 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00110"></a><a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">00110</a> <span class="preprocessor">#define LCD_DISPLAYMOVE         0x08</span>
+<a name="l00111"></a><a class="code" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">00111</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CURSORMOVE          0x00</span>
+<a name="l00112"></a><a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">00112</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_MOVERIGHT           0x04</span>
+<a name="l00113"></a><a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">00113</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_MOVELEFT            0x00</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span>
+<a name="l00115"></a>00115 <span class="comment">// flags for function set</span>
+<a name="l00116"></a>00116 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00117"></a><a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">00117</a> <span class="preprocessor">#define LCD_8BITMODE            0x10</span>
+<a name="l00118"></a><a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">00118</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_4BITMODE            0x00</span>
+<a name="l00119"></a><a class="code" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">00119</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_2LINE               0x08</span>
+<a name="l00120"></a><a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">00120</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_1LINE               0x00</span>
+<a name="l00121"></a><a class="code" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">00121</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_5x10DOTS            0x04</span>
+<a name="l00122"></a><a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">00122</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_5x8DOTS             0x00</span>
+<a name="l00123"></a>00123 <span class="preprocessor"></span>
+<a name="l00124"></a><a class="code" href="_l_c_d_8h.html#a31e1c14e8c2845dec3301f0ebd36b43c">00124</a> <span class="preprocessor">#define LCD_4BIT                1</span>
+<a name="l00125"></a><a class="code" href="_l_c_d_8h.html#a57d84af8cf61ceee4eb91db77889f071">00125</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_8BIT                0</span>
 <a name="l00126"></a>00126 <span class="preprocessor"></span>
-<a name="l00127"></a><a class="code" href="_l_c_d_8h.html#a31e1c14e8c2845dec3301f0ebd36b43c">00127</a> <span class="preprocessor">#define LCD_4BIT                1</span>
-<a name="l00128"></a><a class="code" href="_l_c_d_8h.html#a57d84af8cf61ceee4eb91db77889f071">00128</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_8BIT                0</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span>
-<a name="l00130"></a>00130 <span class="comment">// Define COMMAND and DATA LCD Rs</span>
-<a name="l00131"></a>00131 <span class="comment">// ---------------------------------------------------------------------------</span>
-<a name="l00132"></a><a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">00132</a> <span class="preprocessor">#define COMMAND                 0</span>
-<a name="l00133"></a><a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">00133</a> <span class="preprocessor"></span><span class="preprocessor">#define DATA                    1</span>
-<a name="l00134"></a>00134 <span class="preprocessor"></span>
-<a name="l00141"></a><a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">00141</a> <span class="preprocessor">#define HOME_CLEAR_EXEC      2000</span>
-<a name="l00142"></a>00142 <span class="preprocessor"></span>
-<a name="l00143"></a><a class="code" href="class_l_c_d.html">00143</a> <span class="keyword">class </span><a class="code" href="class_l_c_d.html">LCD</a> : <span class="keyword">public</span> Print 
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 <span class="keyword">public</span>:
-<a name="l00146"></a>00146    
-<a name="l00153"></a>00153    <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ( );
-<a name="l00154"></a>00154    
-<a name="l00169"></a>00169 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00170"></a><a class="code" href="class_l_c_d.html#a541bfac06ec95dcb6460d14906f50925">00170</a> <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a541bfac06ec95dcb6460d14906f50925">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>) { };
-<a name="l00171"></a>00171 <span class="preprocessor">#else</span>
-<a name="l00172"></a>00172 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a541bfac06ec95dcb6460d14906f50925">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>) = 0;
-<a name="l00173"></a>00173 <span class="preprocessor">#endif</span>
-<a name="l00174"></a>00174 <span class="preprocessor"></span>   
-<a name="l00185"></a>00185    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>();
-<a name="l00186"></a>00186    
-<a name="l00198"></a>00198    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>();
-<a name="l00199"></a>00199    
-<a name="l00208"></a>00208    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>();
-<a name="l00209"></a>00209    
-<a name="l00219"></a>00219    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();
-<a name="l00220"></a>00220    
-<a name="l00227"></a>00227    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>();
-<a name="l00228"></a>00228    
-<a name="l00237"></a>00237    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>();
-<a name="l00238"></a>00238    
-<a name="l00245"></a>00245    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>();
-<a name="l00246"></a>00246    
-<a name="l00255"></a>00255    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>();
-<a name="l00256"></a>00256    
-<a name="l00264"></a>00264    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>();
-<a name="l00265"></a>00265    
-<a name="l00273"></a>00273    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>();
-<a name="l00274"></a>00274    
-<a name="l00286"></a>00286    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>();
-<a name="l00287"></a>00287    
-<a name="l00299"></a>00299    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>();
-<a name="l00300"></a>00300    
-<a name="l00314"></a>00314    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>();
-<a name="l00315"></a>00315    
-<a name="l00324"></a>00324    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>();
-<a name="l00325"></a>00325    
-<a name="l00342"></a>00342    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[]);
-<a name="l00343"></a>00343    
-<a name="l00353"></a>00353    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row);
-<a name="l00354"></a>00354    
-<a name="l00355"></a>00355    
-<a name="l00367"></a>00367    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(uint8_t value);
-<a name="l00368"></a>00368    
-<a name="l00380"></a>00380 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00381"></a>00381 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);
-<a name="l00382"></a>00382 <span class="preprocessor">#else</span>
-<a name="l00383"></a>00383 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);
-<a name="l00384"></a>00384 <span class="preprocessor">#endif</span>
-<a name="l00385"></a>00385 <span class="preprocessor"></span>   
-<a name="l00386"></a>00386    
-<a name="l00400"></a>00400 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00401"></a><a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">00401</a> <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(uint8_t value, uint8_t mode) { };
-<a name="l00402"></a>00402 <span class="preprocessor">#else</span>
-<a name="l00403"></a>00403 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(uint8_t value, uint8_t mode) = 0;
-<a name="l00404"></a>00404 <span class="preprocessor">#endif</span>
-<a name="l00405"></a>00405 <span class="preprocessor"></span>   
-<a name="l00406"></a>00406 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
-<a name="l00407"></a>00407 <span class="preprocessor"></span>   <span class="keyword">using</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">Print::write</a>;
-<a name="l00408"></a>00408 <span class="preprocessor">#else</span>
-<a name="l00409"></a>00409 <span class="preprocessor"></span>   <span class="keyword">using</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">Print::write</a>;
-<a name="l00410"></a>00410 <span class="preprocessor">#endif   </span>
-<a name="l00411"></a>00411 <span class="preprocessor"></span>   
-<a name="l00412"></a>00412 <span class="keyword">protected</span>:
-<a name="l00413"></a>00413    <span class="comment">// Internal LCD variables to control the LCD shared between all derived</span>
-<a name="l00414"></a>00414    <span class="comment">// classes.</span>
-<a name="l00415"></a><a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">00415</a>    uint8_t <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>;  <span class="comment">// LCD_5x10DOTS or LCD_5x8DOTS, LCD_4BITMODE or </span>
-<a name="l00416"></a>00416    <span class="comment">// LCD_8BITMODE, LCD_1LINE or LCD_2LINE</span>
-<a name="l00417"></a><a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">00417</a>    uint8_t <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>;   <span class="comment">// LCD base control command LCD on/off, blink, cursor</span>
-<a name="l00418"></a>00418    <span class="comment">// all commands are &quot;ored&quot; to its contents.</span>
-<a name="l00419"></a><a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">00419</a>    uint8_t <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>;      <span class="comment">// Text entry mode to the LCD</span>
-<a name="l00420"></a><a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">00420</a>    uint8_t <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a>;         <span class="comment">// Number of lines of the LCD, initialized with begin()</span>
-<a name="l00421"></a><a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">00421</a>    uint8_t <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a>;             <span class="comment">// Number of columns in the LCD</span>
-<a name="l00422"></a>00422    
-<a name="l00423"></a>00423 <span class="keyword">private</span>:
-<a name="l00424"></a>00424    
-<a name="l00425"></a>00425 };
-<a name="l00426"></a>00426 
-<a name="l00427"></a>00427 <span class="preprocessor">#endif</span>
+<a name="l00127"></a>00127 <span class="comment">// Define COMMAND and DATA LCD Rs</span>
+<a name="l00128"></a>00128 <span class="comment">// ---------------------------------------------------------------------------</span>
+<a name="l00129"></a><a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">00129</a> <span class="preprocessor">#define COMMAND                 0</span>
+<a name="l00130"></a><a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">00130</a> <span class="preprocessor"></span><span class="preprocessor">#define DATA                    1</span>
+<a name="l00131"></a>00131 <span class="preprocessor"></span>
+<a name="l00138"></a><a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">00138</a> <span class="preprocessor">#define HOME_CLEAR_EXEC      2000</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>
+<a name="l00140"></a><a class="code" href="class_l_c_d.html">00140</a> <span class="keyword">class </span><a class="code" href="class_l_c_d.html">LCD</a> : <span class="keyword">public</span> Print 
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 <span class="keyword">public</span>:
+<a name="l00143"></a>00143    
+<a name="l00150"></a>00150    <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ( );
+<a name="l00151"></a>00151    
+<a name="l00166"></a>00166    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>);
+<a name="l00167"></a>00167   
+<a name="l00178"></a>00178    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>();
+<a name="l00179"></a>00179    
+<a name="l00191"></a>00191    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>();
+<a name="l00192"></a>00192    
+<a name="l00201"></a>00201    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>();
+<a name="l00202"></a>00202    
+<a name="l00212"></a>00212    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();
+<a name="l00213"></a>00213    
+<a name="l00220"></a>00220    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>();
+<a name="l00221"></a>00221    
+<a name="l00230"></a>00230    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>();
+<a name="l00231"></a>00231    
+<a name="l00238"></a>00238    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>();
+<a name="l00239"></a>00239    
+<a name="l00248"></a>00248    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>();
+<a name="l00249"></a>00249    
+<a name="l00257"></a>00257    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>();
+<a name="l00258"></a>00258    
+<a name="l00266"></a>00266    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>();
+<a name="l00267"></a>00267    
+<a name="l00279"></a>00279    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>();
+<a name="l00280"></a>00280    
+<a name="l00292"></a>00292    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>();
+<a name="l00293"></a>00293    
+<a name="l00307"></a>00307    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>();
+<a name="l00308"></a>00308    
+<a name="l00317"></a>00317    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>();
+<a name="l00318"></a>00318    
+<a name="l00335"></a>00335    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[]);
+<a name="l00336"></a>00336    
+<a name="l00346"></a>00346    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row);
+<a name="l00347"></a>00347    
+<a name="l00348"></a>00348    
+<a name="l00360"></a>00360    <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(uint8_t value);
+<a name="l00361"></a>00361    
+<a name="l00373"></a>00373 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00374"></a>00374 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);
+<a name="l00375"></a>00375 <span class="preprocessor">#else</span>
+<a name="l00376"></a>00376 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);
+<a name="l00377"></a>00377 <span class="preprocessor">#endif</span>
+<a name="l00378"></a>00378 <span class="preprocessor"></span>   
+<a name="l00379"></a>00379    
+<a name="l00393"></a>00393 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00394"></a><a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">00394</a> <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(uint8_t value, uint8_t mode) { };
+<a name="l00395"></a>00395 <span class="preprocessor">#else</span>
+<a name="l00396"></a>00396 <span class="preprocessor"></span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">send</a>(uint8_t value, uint8_t mode) = 0;
+<a name="l00397"></a>00397 <span class="preprocessor">#endif</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span>   
+<a name="l00399"></a>00399 <span class="preprocessor">#if (ARDUINO &lt;  100)</span>
+<a name="l00400"></a>00400 <span class="preprocessor"></span>   <span class="keyword">using</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">Print::write</a>;
+<a name="l00401"></a>00401 <span class="preprocessor">#else</span>
+<a name="l00402"></a>00402 <span class="preprocessor"></span>   <span class="keyword">using</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">Print::write</a>;
+<a name="l00403"></a>00403 <span class="preprocessor">#endif   </span>
+<a name="l00404"></a>00404 <span class="preprocessor"></span>   
+<a name="l00405"></a>00405 <span class="keyword">protected</span>:
+<a name="l00406"></a>00406    <span class="comment">// Internal LCD variables to control the LCD shared between all derived</span>
+<a name="l00407"></a>00407    <span class="comment">// classes.</span>
+<a name="l00408"></a><a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">00408</a>    uint8_t <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>;  <span class="comment">// LCD_5x10DOTS or LCD_5x8DOTS, LCD_4BITMODE or </span>
+<a name="l00409"></a>00409    <span class="comment">// LCD_8BITMODE, LCD_1LINE or LCD_2LINE</span>
+<a name="l00410"></a><a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">00410</a>    uint8_t <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>;   <span class="comment">// LCD base control command LCD on/off, blink, cursor</span>
+<a name="l00411"></a>00411    <span class="comment">// all commands are &quot;ored&quot; to its contents.</span>
+<a name="l00412"></a><a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">00412</a>    uint8_t <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>;      <span class="comment">// Text entry mode to the LCD</span>
+<a name="l00413"></a><a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">00413</a>    uint8_t <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a>;         <span class="comment">// Number of lines of the LCD, initialized with begin()</span>
+<a name="l00414"></a><a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">00414</a>    uint8_t <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a>;             <span class="comment">// Number of columns in the LCD</span>
+<a name="l00415"></a>00415    
+<a name="l00416"></a>00416 <span class="keyword">private</span>:
+<a name="l00417"></a>00417    
+<a name="l00418"></a>00418 };
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420 <span class="preprocessor">#endif</span>
 </pre></div></div>
 </div>
 <!-- window showing the filter options -->
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_liquid_crystal_8cpp.html

 <code>#include &lt;string.h&gt;</code><br/>
 <code>#include &lt;inttypes.h&gt;</code><br/>
 <code>#include &lt;WProgram.h&gt;</code><br/>
-<code>#include &lt;<a class="el" href="_liquid_crystal_8h_source.html">LiquidCrystal.h</a>&gt;</code><br/>
+<code>#include &quot;<a class="el" href="_liquid_crystal_8h_source.html">LiquidCrystal.h</a>&quot;</code><br/>
 </div>
 <p><a href="_liquid_crystal_8cpp_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
 </iframe>
 </div>
 
-<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 5 2012 12:37:32 for LCD Library by&#160;
+<hr class="footer"/><address class="footer"><small>Generated on Sun Feb 12 2012 21:39:43 for LCD Library by&#160;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>

docs/html/_liquid_crystal_8cpp_source.html

 <a name="l00038"></a>00038 <span class="preprocessor">#else</span>
 <a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
 <a name="l00040"></a>00040 <span class="preprocessor">#endif</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="_liquid_crystal_8h.html">LiquidCrystal.h</a>&gt;</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="_liquid_crystal_8h.html">LiquidCrystal.h</a>&quot;</span>
 <a name="l00042"></a>00042 
 <a name="l00043"></a>00043 <span class="comment">// STATIC helper functions</span>
 <a name="l00044"></a>00044 <span class="comment">// ---------------------------------------------------------------------------</span>
 <a name="l00075"></a>00075 <span class="comment">// PRIVATE METHODS</span>
 <a name="l00076"></a>00076 <span class="comment">// ---------------------------------------------------------------------------</span>
 <a name="l00077"></a>00077 
-<a name="l00078"></a>00078 <span class="comment">// When the display powers up, it is configured as follows:</span>
-<a name="l00079"></a>00079 <span class="comment">//</span>
-<a name="l00080"></a>00080 <span class="comment">// 1. Display clear</span>
-<a name="l00081"></a>00081 <span class="comment">// 2. Function set: </span>
-<a name="l00082"></a>00082 <span class="comment">//    DL = 1; 8-bit interface data </span>
-<a name="l00083"></a>00083 <span class="comment">//    N = 0; 1-line display </span>
-<a name="l00084"></a>00084 <span class="comment">//    F = 0; 5x8 dot character font </span>
-<a name="l00085"></a>00085 <span class="comment">// 3. Display on/off control: </span>
-<a name="l00086"></a>00086 <span class="comment">//    D = 0; Display off </span>
-<a name="l00087"></a>00087 <span class="comment">//    C = 0; Cursor off </span>
-<a name="l00088"></a>00088 <span class="comment">//    B = 0; Blinking off </span>
-<a name="l00089"></a>00089 <span class="comment">// 4. Entry mode set: </span>
-<a name="l00090"></a>00090 <span class="comment">//    I/D = 1; Increment by 1 </span>
-<a name="l00091"></a>00091 <span class="comment">//    S = 0; No shift </span>
-<a name="l00092"></a>00092 <span class="comment">//</span>
-<a name="l00093"></a>00093 <span class="comment">// Note, however, that resetting the Arduino doesn&#39;t reset the LCD, so we</span>
-<a name="l00094"></a>00094 <span class="comment">// can&#39;t assume that its in that state when a sketch starts (and the</span>
-<a name="l00095"></a>00095 <span class="comment">// LiquidCrystal constructor is called).</span>
-<a name="l00096"></a>00096 <span class="comment">// A call to begin() will reinitialize the LCD.</span>
-<a name="l00097"></a>00097 <span class="comment">//</span>
-<a name="l00098"></a>00098 <span class="comment">// init</span>
-<a name="l00099"></a>00099 <span class="keywordtype">void</span> LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
-<a name="l00100"></a>00100                          uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
-<a name="l00101"></a>00101                          uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103    uint8_t i;
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079 <span class="comment">// init</span>
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
+<a name="l00081"></a>00081                          uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
+<a name="l00082"></a>00082                          uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084    uint8_t i;
+<a name="l00085"></a>00085    
+<a name="l00086"></a>00086    <span class="comment">// Initialize the IO pins</span>
+<a name="l00087"></a>00087    <span class="comment">// -----------------------</span>
+<a name="l00088"></a>00088    
+<a name="l00089"></a>00089    _rs_pin = rs;