tag:github.com,2008:https://github.com/pixelmatix/SmartMatrix/releasesRelease notes from SmartMatrix2020-12-01T16:48:39Ztag:github.com,2008:Repository/18809275/4.0.32020-12-18T10:00:53ZSmartMatrix Library 4.0<p>This release adds support for Teensy 4, new Layers compatible with Adafruit_GFX, limited ESP32 support, and a lot of the core code was refactored.</p>
<p>There are some minor changes needed to migrate a SmartMatrix 3.x sketch to SmartMatrix 4.0, see MIGRATION.md for more details</p>
<p>To get this release on Arduino Library Manager, install "SmartMatrix". Previously SmartMatrix Library 3.x was available on Arduino Library Manager under "SmartMatrix3".</p>
<p>Big thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/easone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/easone">@easone</a> for contributing the Teensy 4 support!</p>embedded-creationstag:github.com,2008:Repository/18809275/4.0.22020-12-01T11:28:43Z4.0.2No content.pixelmatixtag:github.com,2008:Repository/18809275/4.0.12020-11-30T20:22:01Z4.0.1No content.pixelmatixtag:github.com,2008:Repository/18809275/4.0.02020-11-26T14:12:56Z4.0.0No content.pixelmatixtag:github.com,2008:Repository/18809275/3.2.02018-12-04T12:32:11Z64x64 /32 Panel Support<h2>New Feature</h2>
<ul>
<li>Support for 64x64 /32 panels with SmartLED Shield V4
<ul>
<li>Enable by setting <code>kPanelType = SMARTMATRIX_HUB75_64ROW_MOD32SCAN</code></li>
<li>These panels are available in high density 2-3mm/pixel, e.g. these 3mm panels available from <a href="https://www.adafruit.com/product/3649" rel="nofollow">Adafruit</a> and <a href="https://www.sparkfun.com/products/14824" rel="nofollow">SparkFun</a></li>
<li>Be careful when buying from other vendors, e.g. Aliexpress, as some of these panels only have two address lines "AB", and these are not compatible with SmartMatrix Library. Look for 5x address lines "ABCDE" and make sure your vendor actually ships you a panel that matches the photos in their listing. (<a href="https://github.com/pixelmatix/SmartMatrix/issues/49" data-hovercard-type="issue" data-hovercard-url="/pixelmatix/SmartMatrix/issues/49/hovercard">More details here</a>)</li>
</ul>
</li>
</ul>
<h2>Misc</h2>
<ul>
<li>SmartLED Shield V4 is now the default config in the included examples, so the <code>#include <SmartLEDShieldV4.h></code> line is now uncommented by default. Make sure to comment out this line if using SmartMatrix Shield V3 or earlier or driving panels directly from the Teensy (or though a buffer, not a latch).</li>
</ul>embedded-creationstag:github.com,2008:Repository/18809275/3.1.02017-11-03T10:47:30ZSupport for Teensy 3.5/3.6 and SmartLED Shield V4<h2>New Features</h2>
<ul>
<li>Initial support for Teensy 3.5/3.6
<ul>
<li>Workaround for other DMA use (e.g. SDIO) delaying shifting data out to panel and messing up timing</li>
<li>Workaround for faster clock speed of Teensy 3.5/3.6 shifting out data too fast to panel and causing glitches (observed at 140MHz and higher)</li>
</ul>
</li>
<li>Support for new SmartLED Shield V4 (formerly "SmartMatrix Shield")
<ul>
<li>SmartLED Shield V4 hardware design added to /extras/hardware folder</li>
<li>ADDX signals are now output on matrix data lines, to be stored by external 74AHCT374 flip flop, triggered by LATCH signal. Driving ADDX pins separately via Teensy pins is now optional, for more efficient DMA usage and savings of 4 GPIO pins over SmartMatrix Shield V3 and earlier.</li>
<li>Add extra <code>#include <SmartLEDShieldV4.h></code> to all examples. Needs to be uncommented if using SmartLED Shield V4</li>
</ul>
</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>Fix bug when using <code>swapBuffers(false)</code> and <code>backBuffer()</code> - add new <code>isSwapPending()</code> function</li>
</ul>
<h2>Misc</h2>
<ul>
<li>Bring AnimatedGIFs sketch up to date
<ul>
<li>Add SmartLED Shield V4 and Teensy 3.5/3.6 support</li>
<li>Refactored with GifDecoder class that uses templates to set the max size of the GIF and LZW decoder complexity: GIF Decoding is now a lot more stable</li>
</ul>
</li>
<li>Added example for SmartMatrix Library V4: <code>FastLED_Panel_Plus_APA</code>. Example shows how to set up FastLED to drive APA102 LEDs through the 4-pin JST connector on the SmartLED Shield, in parallel with driving the panel.</li>
</ul>embedded-creationstag:github.com,2008:Repository/18809275/3.0.22016-04-20T03:07:07Z3.0.2No content.pixelmatixtag:github.com,2008:Repository/18809275/3.0.12016-04-20T14:33:47ZSupport for Arduino 1.6.8 and Teensyduino 1.28<p>This minor release is specifically to add compatibility with Arduino 1.6.8 and Teensyduino 1.28</p>
<h2>New Features</h2>
<p>Support for Arduino 1.6.8 and Teensyduino 1.28</p>
<h2>Bug Fixes</h2>
<p>Increment row after loadMatrixBuffers() call to avoid tearing appearance on row 0</p>
<h2>Misc</h2>
<p>FastLED Compatibility Change - SmartMatrix Library now requires FastLED 3.1 or higher</p>
<p>Note: Version 3.0.1 and the Version 3.0.2 you may see in the Arduino Library Manager are identical</p>embedded-creationstag:github.com,2008:Repository/18809275/3.0.02015-10-23T18:14:16ZSmartMatrix 3<p>SmartMatrix Library v3 is a major update focused on supporting larger sized panels, and separating the Layer code from the Refresh code. A single version of the library can support all panel sizes in contrast to the separate releases for SmartMatrix_32x32 and SmartMatrix_16x32 before. The library is not backwards compatible with sketches created for SmartMatrix 2.x, but by following the MIGRATION.md document you can update your sketch by using find and replace in your text editor. You can have SmartMatrix3 installed in parallel with an existing SmartMatrix_32x32 or SmartMatrix_16x32 library without conflicts.</p>
<p>Big thanks to contributors <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gregfriedland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gregfriedland">@gregfriedland</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for extensive help with this release.</p>
<h2>New Features</h2>
<p>Support for chaining panels to create larger matrix</p>
<ul>
<li>Combine several panels to make a long chain, or stack chained panels in a Z or C shape to make a larger display</li>
<li>Largest supported sizes: 64x64-pixel or 32x128-pixel display using 4x 32x32 panels - 90Hz refresh rate with Teensy 3.1 at 96MHz. Even larger sizes are possible (e.g. 96x64 by sacrificing refresh rate and color depth).</li>
<li>Examples are set to 32x32 by default, but can run at larger resolutions just by changing the <code>kMatrixWidth</code> and <code>kMatrixHeight</code> constants in the sketch</li>
<li>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ncortot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ncortot">@ncortot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GaryBoone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GaryBoone">@GaryBoone</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for pioneering this feature, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for testing and feedback during v3 development</li>
</ul>
<p>Support for configuring library in sketch</p>
<ul>
<li>User-configuration options include: matrix size, layer color depth, refresh color depth, refresh buffer sizes, panel type, refresh and layer options.</li>
<li>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gregfriedland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gregfriedland">@gregfriedland</a> for setting up the library for C++ templates.</li>
</ul>
<p>New Layer class and Background, Scrolling, and Indexed Layers</p>
<ul>
<li>Include just the layers you need for your sketch, saving resources on the Teensy</li>
<li>Add multiple transparent Layers e.g. multiple scrolling text layers (see MultipleTextLayers example)</li>
<li>It's possible to create a custom Layer in your sketch (see the <a href="https://github.com/pixelmatix/SmartMatrix_Fadecandy">port of Fadecandy firmware to SmartMatrix</a> for an example)</li>
<li>Layer-specific methods were moved from the SmartMatrix class to the appropriate Layer class: e.g. <code>matrix.scrollText()</code> is now <code>scrollingLayer.start()</code></li>
<li>The new Indexed Layer can be used to draw simple graphics (1 bit per pixel with transparency) to the screen while saving memory. The buffers for a 32x32-pixel Indexed layer are only 256 bytes, vs 6kB using the Background layer.</li>
<li>Library examples were reworked to use the minimum number of layers and demonstrate the new Layer features</li>
</ul>
<h2>Improvements</h2>
<p>Refresh code now recovers from refresh rate being set too high instead of crashing</p>
<ul>
<li>If the refresh code can't keep up with with the current refresh rate, it blanks the screen until it's caught up, and automatically lowers the refresh rate by 1Hz to move toward a sustainable refresh rate</li>
<li>If the refresh code is just barely keeping up but not allowing the sketch to run, it lowers the refresh rate by 1Hz until the sketch has time to run.</li>
</ul>
<p>Refresh rate calculation is now accurate; in SmartMatrix 2.x the calculation was off by around 10%. The default refresh rate used to be 135Hz which resulted in an actual refresh rate of 120Hz. The default is now an accurate 120Hz.</p>
<p>AnimatedGIFs example now has a more accurate GIF decoding framerate, and has initial support for larger display sizes (works at 64x64 and 32x128 with minor modifications).</p>
<h2>Retired</h2>
<p>Support for FastLED's <code>SMART_MATRIX</code> controller (though SmartMatrix still works with FastLED!)</p>
<ul>
<li>The <code>SMART_MATRIX</code> controller was based on SmartMatrix 2.x, and is incompatible with SmartMatrix 3</li>
<li>The FastLED_Controller example is removed, but FastLED_Functions with the same functionality still works</li>
<li>See the MIGRATION.md document for how to modify sketches like FastLED_Controller for SmartMatrix 3</li>
<li><a href="http://community.pixelmatix.com" rel="nofollow">Let us know</a> if you want to see support for the FastLED <code>SMART_MATRIX</code> controller in the future</li>
</ul>
<h2>Note for Beta Testers</h2>
<p>The changes since SmartMatrix 3 - Beta 1 are minimal:</p>
<ul>
<li>The variables used for dimensions and coordinates for the Layer class and for drawing are now uint16_t/int16_t to support a 256-pixel wide display. (Briefly tested with a 16x256 display - this may be officially supported in the future)</li>
<li>You can now compile with Teensyduino option USB Type: "No USB"</li>
</ul>embedded-creationstag:github.com,2008:Repository/18809275/3.0-b12015-09-16T14:03:22ZSmartMatrix 3 - Beta 1<p>SmartMatrix Library v3 is a major update focused on supporting larger sized panels, and separating the Layer code from the Refresh code. A single version of the library can support all panel sizes in contrast to the separate releases for SmartMatrix_32x32 and SmartMatrix_16x32 before. The library is not backwards compatible with sketches created for SmartMatrix 2.x, but by following the MIGRATION.md document you can update your sketch by using find and replace in your text editor.</p>
<p>Big thanks to contributors <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gregfriedland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gregfriedland">@gregfriedland</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for extensive help with this release.</p>
<h2>New Features</h2>
<p>Support for chaining panels to create larger matrix</p>
<ul>
<li>Combine several panels to make a long chain, or stack chained panels in a Z or C shape to make a larger display</li>
<li>Largest supported sizes: 64x64-pixel or 32x128-pixel display using 4x 32x32 panels - 90Hz refresh rate with Teensy 3.1 at 96MHz. Even larger sizes are possible (e.g. 96x64 by sacrificing refresh rate and color depth).</li>
<li>Examples are set to 32x32 by default, but can run at larger resolutions just by changing the <code>kMatrixWidth</code> and <code>kMatrixHeight</code> constants in the sketch</li>
<li>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ncortot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ncortot">@ncortot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GaryBoone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GaryBoone">@GaryBoone</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for pioneering this feature, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mrwastl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mrwastl">@mrwastl</a> for testing and feedback during v3 development</li>
</ul>
<p>Support for configuring library in sketch</p>
<ul>
<li>User-configuration options include: matrix size, layer color depth, refresh color depth, refresh buffer sizes, panel type, refresh and layer options.</li>
<li>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gregfriedland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gregfriedland">@gregfriedland</a> for setting up the library for C++ templates.</li>
</ul>
<p>New Layer class and Background, Scrolling, and Indexed Layers</p>
<ul>
<li>Include just the layers you need for your sketch, saving resources on the Teensy</li>
<li>Add multiple transparent Layers e.g. multiple scrolling text layers (see MultipleTextLayers example)</li>
<li>It's possible to create a custom Layer in your sketch (example coming soon)</li>
<li>Layer-specific methods were moved from the SmartMatrix class to the appropriate Layer class: e.g. <code>matrix.scrollText()</code> is now <code>scrollingLayer.start()</code></li>
<li>Library examples were reworked to use the minimum number of layers and demonstrate the new Layer features</li>
</ul>
<h2>Improvements</h2>
<p>Refresh code now recovers from refresh rate being set too high</p>
<ul>
<li>If the refresh code can't keep up with with the current refresh rate, it blanks the screen until it's caught up, and automatically lowers the refresh rate by 1Hz instead of crashing</li>
<li>If the refresh code is just barely keeping up but not allowing the sketch to run, it lowers the refresh rate by 1Hz until the sketch has time to run.</li>
</ul>
<p>Refresh rate calculation is now accurate; in SmartMatrix 2.x the calculation was off by around 10%. The default refresh rate used to be 135Hz which resulted in an actual 120Hz. The default is now an accurate 120Hz.</p>
<p>AnimatedGIFs example now has a more accurate framerate, and has initial support for larger display sizes (works at 64x64 and 32x128).</p>
<h2>Retired</h2>
<p>Support for FastLED's <code>SMART_MATRIX</code> controller (though SmartMatrix still works with FastLED!)</p>
<ul>
<li>The <code>SMART_MATRIX</code> controller was based on SmartMatrix 2.x, and is incompatible with SmartMatrix 3</li>
<li>The FastLED_Controller example is removed, but FastLED_Functions with the same functionality still works</li>
<li>See the MIGRATION.md document for how to modify sketches like FastLED_Controller for SmartMatrix 3</li>
<li><a href="http://community.pixelmatix.com" rel="nofollow">Let us know</a> if you want to see support for the FastLED <code>SMART_MATRIX</code> controller in the future</li>
</ul>embedded-creations