mirror of
https://github.com/taigrr/arduinolibs
synced 2025-01-18 04:33:12 -08:00
583 lines
42 KiB
HTML
583 lines
42 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<title>ArduinoLibs: DMD Class Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
|
</head>
|
|
<body onload='searchBox.OnSelectItem(0);'>
|
|
<!-- Generated by Doxygen 1.7.4 -->
|
|
<script type="text/javascript"><!--
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
--></script>
|
|
<div id="top">
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">ArduinoLibs</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
<li id="searchli">
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="annotated.html"><span>Class List</span></a></li>
|
|
<li><a href="classes.html"><span>Class Index</span></a></li>
|
|
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
|
<li><a href="functions.html"><span>Class Members</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
<a href="#pub-static-methods">Static Public Member Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">DMD Class Reference</div> </div>
|
|
</div>
|
|
<div class="contents">
|
|
<!-- doxytag: class="DMD" --><!-- doxytag: inherits="Bitmap" -->
|
|
<p>Handle large dot matrix displays composed of LED's.
|
|
<a href="classDMD.html#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="DMD_8h_source.html">DMD.h</a>></code></p>
|
|
<div class="dynheader">
|
|
Inheritance diagram for DMD:</div>
|
|
<div class="dyncontent">
|
|
<div class="center">
|
|
<img src="classDMD.png" usemap="#DMD_map" alt=""/>
|
|
<map id="DMD_map" name="DMD_map">
|
|
<area href="classBitmap.html" title="Represents a monochrome bitmap within main memory." alt="Bitmap" shape="rect" coords="0,0,49,24"/>
|
|
</map>
|
|
</div></div>
|
|
|
|
<p><a href="classDMD-members.html">List of all members.</a></p>
|
|
<table class="memberdecls">
|
|
<tr><td colspan="2"><h2><a name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#affd37accffe951c8878434dfa1245809">DMD</a> (int widthPanels=1, int heightPanels=1)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. <a href="#affd37accffe951c8878434dfa1245809"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b37e05584d3e0308163700920df99b2"></a><!-- doxytag: member="DMD::~DMD" ref="a7b37e05584d3e0308163700920df99b2" args="()" -->
|
|
 </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a7b37e05584d3e0308163700920df99b2">~DMD</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys this dot matrix display handler. <br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec">doubleBuffer</a> () const </td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the display is double-buffered; false if single-buffered. The default is false. <a href="#aab1f3ba29c053d630ae12865d22166ec"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723">setDoubleBuffer</a> (bool doubleBuffer)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Enables or disables double-buffering according to <em>doubleBuffer</em>. <a href="#a6fbdcf8832f91d02500cb7a9b84d2723"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a">swapBuffers</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the buffers that are used for rendering to the display. <a href="#a80269ccd44b3ef9ee15f0a1009b7a60a"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736">swapBuffersAndCopy</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. <a href="#a0b1771cf790b2b62eea55e56b02e3736"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114">loop</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs regular display refresh activities from the application's main loop. <a href="#a2c74a0845ef6080056b972d490648114"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8">refresh</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Refresh the display. <a href="#a9e4bf2a9d247312d35c1401ff61261c8"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2">enableTimer1</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Enables Timer1 overflow interrupts for updating this display. <a href="#a4c3b04b384f3d656a9b59690836775e2"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33">disableTimer1</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Disables Timer1 overflow interrupts. <a href="#a39af27e216f654ecc7e60b0614cb6b33"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97">enableTimer2</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Enables Timer2 overflow interrupts for updating this display. <a href="#a5469775db7fafebca2cdbc6a6372fb97"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff">disableTimer2</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Disables Timer2 overflow interrupts. <a href="#a52fe885bfb380b74df54c96221811cff"></a><br/></td></tr>
|
|
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
|
|
Static Public Member Functions</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">Color</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDMD.html#a557412f734fc4596e1102bf71e110ea0">fromRGB</a> (uint8_t r, uint8_t g, uint8_t b)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts an RGB value into a pixel color value. <a href="#a557412f734fc4596e1102bf71e110ea0"></a><br/></td></tr>
|
|
</table>
|
|
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
|
<div class="textblock"><p>Handle large dot matrix displays composed of LED's. </p>
|
|
<p>This class is designed for use with <a href="http://www.freetronics.com/dmd">Freetronics Large Dot Matrix Displays</a>. These displays have 512 LED's arranged in a 32x16 matrix and controlled by an SPI interface. The displays are available in red, blue, green, yellow, and white variations (for which this class always uses the constant <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> regardless of the physical color).</p>
|
|
<h2><a class="anchor" id="dmd_drawing"></a>
|
|
Drawing</h2>
|
|
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> inherits from <a class="el" href="classBitmap.html" title="Represents a monochrome bitmap within main memory.">Bitmap</a> so that any of the drawing functions in that class can be used to draw directly to dot matrix displays. The following example initializes a single display panel and draws a rectangle and a circle into it at setup time:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classBitmap.html#aac61e3f7f625db568e37d88b52b3b2fc" title="Draws a rectangle from (x1, y1) to (x2, y2), with the outline in borderColor and the interior filled ...">drawRect</a>(5, 2, 27, 13);
|
|
display.<a class="code" href="classBitmap.html#a933763a4f3cba79fbcf97ae6d0a864aa" title="Draws a circle with a specific center (centerX, centerY) and radius, with the outline in borderColor ...">drawCircle</a>(16, 8, 4);
|
|
}
|
|
</pre></div><p>The display must be updated frequently from the application's main loop:</p>
|
|
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop</a>() {
|
|
display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop</a>();
|
|
}
|
|
</pre></div><h2><a class="anchor" id="dmd_interrupts"></a>
|
|
Interrupt-driven display refresh</h2>
|
|
<p>The <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a> method simplifies updating the display from the application's main loop but it can sometimes be inconvenient to arrange for it to be called regularly, especially if the application wishes to use <code>delay()</code> or <code>delayMicroseconds()</code>.</p>
|
|
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> provides an asynchronous display update mechanism using Timer1 interrupts. The application turns on interrupts using <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> and then calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> from the interrupt service routine:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
ISR(TIMER1_OVF_vect)
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();
|
|
}
|
|
</pre></div><p>If Timer1 is already in use by some other part of your application, then Timer2 can be used as an alternative interrupt source:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
ISR(TIMER2_OVF_vect)
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();
|
|
}
|
|
</pre></div><p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> can also be used with third-party timer libraries such as <a href="http://code.google.com/p/arduino-timerone/downloads/list">TimerOne</a>:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
<span class="preprocessor"> #include <TimerOne.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
<span class="keywordtype">void</span> refreshDisplay()
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
Timer1.initialize(5000);
|
|
Timer1.attachInterrupt(refreshDisplay);
|
|
}
|
|
</pre></div><h2><a class="anchor" id="dmd_double_buffer"></a>
|
|
Double buffering</h2>
|
|
<p>When using interrupts, the system can sometimes exhibit "tearing" artifacts where half-finished images are displayed because an interrupt fired in the middle of a screen update.</p>
|
|
<p>This problem can be alleviated using double buffering: all rendering is done to an off-screen buffer that is swapped onto the screen once it is ready for display. Rendering then switches to the other buffer that is now off-screen. The following example demonstrates this:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
ISR(TIMER1_OVF_vect)
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer</a>(<span class="keyword">true</span>);
|
|
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop</a>() {
|
|
updateDisplay();
|
|
display.<a class="code" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers</a>();
|
|
delay(50); <span class="comment">// Delay between frames.</span>
|
|
}
|
|
|
|
<span class="keywordtype">void</span> updateDisplay() {
|
|
<span class="comment">// Draw the new display contents into the off-screen buffer.</span>
|
|
display.<a class="code" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear</a>();
|
|
...
|
|
}
|
|
</pre></div><p>The downside of double buffering is that it uses twice as much main memory to manage the contents of the screen.</p>
|
|
<h2><a class="anchor" id="dmd_multi"></a>
|
|
Multiple panels</h2>
|
|
<p>Multiple panels can be daisy-chained together using ribbon cables. If there is a single row of panels, then they must be connected to the Arduino board as follows:</p>
|
|
<div class="image">
|
|
<img src="dmd-4x1.png" alt="dmd-4x1.png"/>
|
|
</div>
|
|
<p>If there are multiple rows of panels, then alternating rows are flipped upside-down so that the short ribbon cables provided by Freetronics reach (this technique is thanks to Chris Debenham; see <a href="http://www.adebenham.com/category/arduino/dmd/">http://www.adebenham.com/category/arduino/dmd/</a> for more details):</p>
|
|
<div class="image">
|
|
<img src="dmd-4x2.png" alt="dmd-4x2.png"/>
|
|
</div>
|
|
<p>This technique can be repeated for as many rows as required, with the bottom row always right-way-up:</p>
|
|
<div class="image">
|
|
<img src="dmd-4x3.png" alt="dmd-4x3.png"/>
|
|
</div>
|
|
<p><a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> automatically takes care of flipping the data for panels in the alternating rows. No special action is required by the user except to physically connect the panels as shown and to initialize the <a class="el" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> class appropriately:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display(4, 2); <span class="comment">// 4 panels wide, 2 panels high</span>
|
|
</pre></div>
|
|
<p>Definition at line <a class="el" href="DMD_8h_source.html#l00028">28</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p>
|
|
</div><hr/><h2>Constructor & Destructor Documentation</h2>
|
|
<a class="anchor" id="affd37accffe951c8878434dfa1245809"></a><!-- doxytag: member="DMD::DMD" ref="affd37accffe951c8878434dfa1245809" args="(int widthPanels=1, int heightPanels=1)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">DMD::DMD </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>widthPanels</em> = <code>1</code>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>heightPanels</em> = <code>1</code> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td><code> [explicit]</code></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Constructs a new dot matrix display handler for a display that is <em>widthPanels</em> x <em>heightPanels</em> in size. </p>
|
|
<p>Note: the parameters to this constructor are specified in panels, whereas <a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a> and <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> are specified in pixels.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classBitmap.html#a76c3b49e535761f07c553e7336daf523" title="Returns the width of the bitmap in pixels.">width()</a>, <a class="el" href="classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3" title="Returns the height of the bitmap in pixels.">height()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00237">237</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/><h2>Member Function Documentation</h2>
|
|
<a class="anchor" id="a39af27e216f654ecc7e60b0614cb6b33"></a><!-- doxytag: member="DMD::disableTimer1" ref="a39af27e216f654ecc7e60b0614cb6b33" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::disableTimer1 </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Disables Timer1 overflow interrupts. </p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00614">614</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a52fe885bfb380b74df54c96221811cff"></a><!-- doxytag: member="DMD::disableTimer2" ref="a52fe885bfb380b74df54c96221811cff" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::disableTimer2 </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Disables Timer2 overflow interrupts. </p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00674">674</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="aab1f3ba29c053d630ae12865d22166ec"></a><!-- doxytag: member="DMD::doubleBuffer" ref="aab1f3ba29c053d630ae12865d22166ec" args="() const " -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool DMD::doubleBuffer </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td> const<code> [inline]</code></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Returns true if the display is double-buffered; false if single-buffered. The default is false. </p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8h_source.html#l00034">34</a> of file <a class="el" href="DMD_8h_source.html">DMD.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a4c3b04b384f3d656a9b59690836775e2"></a><!-- doxytag: member="DMD::enableTimer1" ref="a4c3b04b384f3d656a9b59690836775e2" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::enableTimer1 </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Enables Timer1 overflow interrupts for updating this display. </p>
|
|
<p>The application must also provide an interrupt service routine for Timer1 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
ISR(TIMER1_OVF_vect)
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1</a>();
|
|
}
|
|
</pre></div><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a>.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a39af27e216f654ecc7e60b0614cb6b33" title="Disables Timer1 overflow interrupts.">disableTimer1()</a>, <a class="el" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00563">563</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a5469775db7fafebca2cdbc6a6372fb97"></a><!-- doxytag: member="DMD::enableTimer2" ref="a5469775db7fafebca2cdbc6a6372fb97" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::enableTimer2 </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Enables Timer2 overflow interrupts for updating this display. </p>
|
|
<p>The application must also provide an interrupt service routine for Timer2 that calls <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>:</p>
|
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <DMD.h></span>
|
|
|
|
<a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
ISR(TIMER2_OVF_vect)
|
|
{
|
|
display.<a class="code" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh</a>();
|
|
}
|
|
|
|
<span class="keywordtype">void</span> setup() {
|
|
display.<a class="code" href="classDMD.html#a5469775db7fafebca2cdbc6a6372fb97" title="Enables Timer2 overflow interrupts for updating this display.">enableTimer2</a>();
|
|
}
|
|
</pre></div><p>If timer interrupts are being used to update the display, then it is unnecessary to call <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a>.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a>, <a class="el" href="classDMD.html#a52fe885bfb380b74df54c96221811cff" title="Disables Timer2 overflow interrupts.">disableTimer2()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00646">646</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a557412f734fc4596e1102bf71e110ea0"></a><!-- doxytag: member="DMD::fromRGB" ref="a557412f734fc4596e1102bf71e110ea0" args="(uint8_t r, uint8_t g, uint8_t b)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="classBitmap.html#a88d386944a7017aa776a177b10d8b2ba">DMD::Color</a> DMD::fromRGB </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>r</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>g</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>b</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td><code> [static]</code></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Converts an RGB value into a pixel color value. </p>
|
|
<p>Returns <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> if any of <em>r</em>, <em>g</em>, or <em>b</em> are non-zero; otherwise returns <a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a>.</p>
|
|
<p>This function is provided for upwards compatibility with future displays that support full color. Monochrome applications should use the <a class="el" href="classBitmap.html#a2c7faeeb89d3624b5bbca58871785adc">Black</a> and <a class="el" href="classBitmap.html#a39b6754cfe50a457bbfdb1980fd87eb7">White</a> constants directly. </p>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00690">690</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a2c74a0845ef6080056b972d490648114"></a><!-- doxytag: member="DMD::loop" ref="a2c74a0845ef6080056b972d490648114" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::loop </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Performs regular display refresh activities from the application's main loop. </p>
|
|
<div class="fragment"><pre class="fragment"> <a class="code" href="classDMD.html" title="Handle large dot matrix displays composed of LED's.">DMD</a> display;
|
|
|
|
<span class="keywordtype">void</span> <a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop</a>() {
|
|
display.<a class="code" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop</a>();
|
|
}
|
|
</pre></div><p>If you are using a timer interrupt service routine, then call <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> in response to the interrupt instead of calling <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a>.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00420">420</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a9e4bf2a9d247312d35c1401ff61261c8"></a><!-- doxytag: member="DMD::refresh" ref="a9e4bf2a9d247312d35c1401ff61261c8" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::refresh </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Refresh the display. </p>
|
|
<p>This function must be called at least once every 5 milliseconds for smooth non-flickering update of the display. It is usually called by <a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a>, but can also be called in response to a timer interrupt.</p>
|
|
<p>If this function is called from an interrupt service routine, then it is recommended that double-buffering be enabled with <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a2c74a0845ef6080056b972d490648114" title="Performs regular display refresh activities from the application's main loop.">loop()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a>, <a class="el" href="classDMD.html#a4c3b04b384f3d656a9b59690836775e2" title="Enables Timer1 overflow interrupts for updating this display.">enableTimer1()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00478">478</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a6fbdcf8832f91d02500cb7a9b84d2723"></a><!-- doxytag: member="DMD::setDoubleBuffer" ref="a6fbdcf8832f91d02500cb7a9b84d2723" args="(bool doubleBuffer)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::setDoubleBuffer </td>
|
|
<td>(</td>
|
|
<td class="paramtype">bool </td>
|
|
<td class="paramname"><em>doubleBuffer</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Enables or disables double-buffering according to <em>doubleBuffer</em>. </p>
|
|
<p>When double-buffering is enabled, rendering operations are sent to a memory buffer that isn't currently displayed on-screen. Once the application has completed the screen update, it calls <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> to display the current buffer and switch rendering to the other now invisible buffer.</p>
|
|
<p>Double-buffering is recommended if <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> is being called from an interrupt service routine, to prevent "tearing" artifacts that result from simultaneous update of a single shared buffer.</p>
|
|
<p>This function will allocate memory for the extra buffer when <em>doubleBuffer</em> is true. If there is insufficient memory for the second screen buffer, then this class will revert to single-buffered mode.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a>, <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8" title="Refresh the display.">refresh()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00314">314</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a80269ccd44b3ef9ee15f0a1009b7a60a"></a><!-- doxytag: member="DMD::swapBuffers" ref="a80269ccd44b3ef9ee15f0a1009b7a60a" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::swapBuffers </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Swaps the buffers that are used for rendering to the display. </p>
|
|
<p>When <a class="el" href="classDMD.html#aab1f3ba29c053d630ae12865d22166ec" title="Returns true if the display is double-buffered; false if single-buffered. The default is false...">doubleBuffer()</a> is false, this function does nothing. Otherwise the front and back rendering buffers are swapped. See the description of <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> for more information.</p>
|
|
<p>The new rendering back buffer will have undefined contents and will probably need to be re-inialized with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before drawing to it. The <a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a> function can be used instead to preserve the screen contents from one frame to the next.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a0b1771cf790b2b62eea55e56b02e3736" title="Swaps the buffers that are used for rendering to the display and copies the former back buffer conten...">swapBuffersAndCopy()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00363">363</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="a0b1771cf790b2b62eea55e56b02e3736"></a><!-- doxytag: member="DMD::swapBuffersAndCopy" ref="a0b1771cf790b2b62eea55e56b02e3736" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void DMD::swapBuffersAndCopy </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Swaps the buffers that are used for rendering to the display and copies the former back buffer contents to the new back buffer. </p>
|
|
<p>Normally when <a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a> is called, the new rendering back buffer will have undefined contents from two frames prior and must be cleared with <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> before writing new contents to it. This function instead copies the previous frame into the new rendering buffer so that it can be updated in-place.</p>
|
|
<p>This function is useful if the screen does not change much from one frame to the next. If the screen changes a lot between frames, then it is usually better to explicitly <a class="el" href="classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1" title="Clears the entire bitmap to the specified color.">clear()</a> or <a class="el" href="classBitmap.html#a99da820f9280aace6b512801d5a5e2b2" title="Fills the width x height pixels starting at top-left corner (x, y) with color.">fill()</a> the new back buffer.</p>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classDMD.html#a80269ccd44b3ef9ee15f0a1009b7a60a" title="Swaps the buffers that are used for rendering to the display.">swapBuffers()</a>, <a class="el" href="classDMD.html#a6fbdcf8832f91d02500cb7a9b84d2723" title="Enables or disables double-buffering according to doubleBuffer.">setDoubleBuffer()</a> </dd></dl>
|
|
|
|
<p>Definition at line <a class="el" href="DMD_8cpp_source.html#l00396">396</a> of file <a class="el" href="DMD_8cpp_source.html">DMD.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
<li><a class="el" href="DMD_8h_source.html">DMD.h</a></li>
|
|
<li><a class="el" href="DMD_8cpp_source.html">DMD.cpp</a></li>
|
|
</ul>
|
|
</div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<hr class="footer"/><address class="footer"><small>Generated on Tue Jun 12 2012 11:29:25 for ArduinoLibs by 
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
|
</body>
|
|
</html>
|