diff --git a/.project b/.project
new file mode 100644
index 0000000..f0efbca
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+
+
+ LEDText
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/examples/TextExampleAtari/FontAtari.h b/examples/TextExampleAtari/FontAtari.h
new file mode 100644
index 0000000..8b372c3
--- /dev/null
+++ b/examples/TextExampleAtari/FontAtari.h
@@ -0,0 +1,881 @@
+// Atari regular font example with classic spectrum cycling logo
+// Legit 8-bit computer font from https://github.com/a8bit/EightBit-Atari-Fonts
+// converted FNT file with
+// xxd -b -c1 ATARI.FNT > awk '{print "B8("$2"),"}' > FontAtari.h
+// D. Cerisano 2023
+
+#ifndef FontAtari_h
+#define FontAtari_h
+
+const uint8_t AtariFontData[] = {
+ 8, // Font Width
+ 8, // Font Height
+ 32, // Font First Character
+ 127, // Font Last Character
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(11111111),
+ B8(01100110),
+ B8(01100110),
+ B8(11111111),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00011000),
+ B8(00111110),
+ B8(01100000),
+ B8(00111100),
+ B8(00000110),
+ B8(01111100),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01101100),
+ B8(00011000),
+ B8(00110000),
+ B8(01100110),
+ B8(01000110),
+ B8(00000000),
+
+ B8(00011100),
+ B8(00110110),
+ B8(00011100),
+ B8(00111000),
+ B8(01101111),
+ B8(01100110),
+ B8(00111011),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00001110),
+ B8(00011100),
+ B8(00011000),
+ B8(00011000),
+ B8(00011100),
+ B8(00001110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01110000),
+ B8(00111000),
+ B8(00011000),
+ B8(00011000),
+ B8(00111000),
+ B8(01110000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(00111100),
+ B8(11111111),
+ B8(00111100),
+ B8(01100110),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(01111110),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00110000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(01111110),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(01100000),
+ B8(01000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01101110),
+ B8(01110110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00111000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(00001100),
+ B8(00011000),
+ B8(00001100),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00001100),
+ B8(00011100),
+ B8(00111100),
+ B8(01101100),
+ B8(01111110),
+ B8(00001100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(01100000),
+ B8(01111100),
+ B8(00000110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(00000110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(00110000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(00111110),
+ B8(00000110),
+ B8(00001100),
+ B8(00111000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+ B8(00011000),
+ B8(00011000),
+ B8(00110000),
+
+ B8(00000110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(00011000),
+ B8(00001100),
+ B8(00000110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01111110),
+ B8(00000000),
+ B8(00000000),
+ B8(01111110),
+ B8(00000000),
+ B8(00000000),
+
+ B8(01100000),
+ B8(00110000),
+ B8(00011000),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(01100000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(00001100),
+ B8(00011000),
+ B8(00000000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01101110),
+ B8(01101110),
+ B8(01100000),
+ B8(00111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100000),
+ B8(01100000),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111000),
+ B8(01101100),
+ B8(01100110),
+ B8(01100110),
+ B8(01101100),
+ B8(01111000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(01100000),
+ B8(01111100),
+ B8(01100000),
+ B8(01100000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(01100000),
+ B8(01111100),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111110),
+ B8(01100000),
+ B8(01100000),
+ B8(01101110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01111110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000110),
+ B8(00000110),
+ B8(00000110),
+ B8(00000110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01101100),
+ B8(01111000),
+ B8(01111000),
+ B8(01101100),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100011),
+ B8(01110111),
+ B8(01111111),
+ B8(01101011),
+ B8(01100011),
+ B8(01100011),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01110110),
+ B8(01111110),
+ B8(01111110),
+ B8(01101110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111100),
+ B8(01100000),
+ B8(01100000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01101100),
+ B8(00110110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111100),
+ B8(01101100),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111100),
+ B8(01100000),
+ B8(00111100),
+ B8(00000110),
+ B8(00000110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100011),
+ B8(01100011),
+ B8(01101011),
+ B8(01111111),
+ B8(01110111),
+ B8(01100011),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01111110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(01100000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011110),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111110),
+ B8(01100110),
+ B8(00011000),
+
+ B8(00000000),
+ B8(01111000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(01111000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00001000),
+ B8(00011100),
+ B8(00110110),
+ B8(01100011),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(11111111),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111100),
+ B8(00000110),
+ B8(00111110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(01100000),
+ B8(01100000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111100),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000110),
+ B8(00000110),
+ B8(00111110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01111110),
+ B8(01100000),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00001110),
+ B8(00011000),
+ B8(00111110),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000110),
+ B8(01111100),
+
+ B8(00000000),
+ B8(01100000),
+ B8(01100000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(00000000),
+ B8(00111000),
+ B8(00011000),
+ B8(00011000),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000110),
+ B8(00000000),
+ B8(00000110),
+ B8(00000110),
+ B8(00000110),
+ B8(00000110),
+ B8(00111100),
+
+ B8(00000000),
+ B8(01100000),
+ B8(01100000),
+ B8(01101100),
+ B8(01111000),
+ B8(01101100),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00111000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100110),
+ B8(01111111),
+ B8(01111111),
+ B8(01101011),
+ B8(01100011),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100110),
+ B8(01111100),
+ B8(01100000),
+ B8(01100000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000110),
+ B8(00000110),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01111100),
+ B8(01100110),
+ B8(01100000),
+ B8(01100000),
+ B8(01100000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00111110),
+ B8(01100000),
+ B8(00111100),
+ B8(00000110),
+ B8(01111100),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011000),
+ B8(01111110),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00001110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111100),
+ B8(00011000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100011),
+ B8(01101011),
+ B8(01111111),
+ B8(00111110),
+ B8(00110110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100110),
+ B8(00111100),
+ B8(00011000),
+ B8(00111100),
+ B8(01100110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01100110),
+ B8(01100110),
+ B8(01100110),
+ B8(00111110),
+ B8(00001100),
+ B8(01111000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(01111110),
+ B8(00001100),
+ B8(00011000),
+ B8(00110000),
+ B8(01111110),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00011110),
+ B8(00011000),
+ B8(00110000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011110),
+ B8(00000000),
+
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+ B8(00011000),
+
+ B8(00000000),
+ B8(01111000),
+ B8(00011000),
+ B8(00001100),
+ B8(00011000),
+ B8(00011000),
+ B8(01111000),
+ B8(00000000),
+
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+ B8(00110110),
+ B8(01101100),
+ B8(00000000),
+ B8(00000000),
+ B8(00000000),
+
+ B8(01011010),
+ B8(01011010),
+ B8(01011010),
+ B8(01011010),
+ B8(01011010),
+ B8(11011011),
+ B8(11011011),
+ B8(10011001)
+};
+
+#endif
diff --git a/examples/TextExampleAtari/TextExampleAtari.ino b/examples/TextExampleAtari/TextExampleAtari.ino
new file mode 100644
index 0000000..1e13e6f
--- /dev/null
+++ b/examples/TextExampleAtari/TextExampleAtari.ino
@@ -0,0 +1,77 @@
+// 8-bit Atari computer font example with classic spectrum-cycling logo
+// D. Cerisano 2023
+
+// Custom hardware settings.
+#define FASTLED_INTERNAL
+#define LED_PIN 27
+#define COLOR_ORDER GRB
+#define CHIPSET WS2812B
+#define MATRIX_WIDTH 8
+#define MATRIX_HEIGHT 8
+#define MATRIX_TYPE HORIZONTAL_MATRIX
+#define FPS 20
+
+// Include dependencies
+#include
+#include
+#include
+#include "FontAtari.h"
+
+// Display structs
+cLEDMatrix leds;
+cLEDText ScrollingMsg;
+
+// Sequence structs
+unsigned char TxtDemo1[] = {EFFECT_HSV_AV "\x00\xff\xff\x80\xff\xff" " "}; //vertical spectrum
+unsigned char TxtDemo2[] = {EFFECT_SCROLL_LEFT " ATARI regular font "};
+
+// Demo variables
+int hue = 0, inc = 2;
+boolean logo = true;
+
+void setup()
+{
+ FastLED.addLeds(leds[0], leds.Size());
+ FastLED.setBrightness(128);
+
+ // Change first char in seq to custom Atari logo (ASCII 127 DEL) in FontAtari.h
+ TxtDemo1[7] = 127;
+ TxtDemo2[1] = 127;
+
+ ScrollingMsg.SetFont(AtariFontData);
+ ScrollingMsg.Init(&leds, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);
+ ScrollingMsg.SetText((unsigned char *)TxtDemo1, sizeof(TxtDemo1) - 1);
+}
+
+void loop()
+{
+ // Bounce HSV_AV spectrum for the logo sequence then scroll the second sequence, ad infinitum
+
+ if (logo) {
+ TxtDemo1[1] = hue;
+ TxtDemo1[4] = hue + 128;
+ ScrollingMsg.SetText((unsigned char *)TxtDemo1, sizeof(TxtDemo1) - 1);
+ hue += inc;
+
+ // Bounce spectrum
+ if (hue > 127) {
+ hue = 127;
+ inc = -2;
+ }
+
+ // Start the second sequence after logo bounce completes
+ if (hue < 0) {
+ hue = 0;
+ inc = 2;
+ logo = false;
+ ScrollingMsg.SetText((unsigned char *)TxtDemo2, sizeof(TxtDemo2) - 1);
+ }
+ }
+
+ // Restart demo after second sequence scrolls.
+ if (ScrollingMsg.UpdateText() == -1)
+ logo = true;
+
+ // FastLED.delay() calls show() FPS times per second
+ FastLED.delay(1000 / FPS);
+}