//#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
//#include <Adafruit_NeoPixel.h>
// DATA PIN
// If you want to use a different data pin on your microcontroller CHANGE THIS!
#define DATA_PIN 13
// Matrix setup params
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, DATA_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,// + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
unsigned long timeBetweenPixShift = 110;
unsigned long nextPixShiftTime;
int center = matrix.width();
int pixCount = 0;
//String message = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String message = "000007";
int textPixCount = 0;
int loopCount = 3;
const uint16_t colors[] = {
matrix.Color(255, 0, 255),
matrix.Color(100, 255, 0),
matrix.Color(255, 255, 0),
matrix.Color(0, 0, 255),
matrix.Color(100, 100, 100),
matrix.Color(0, 255, 255),
matrix.Color(255, 255, 255)};
void setup()
{
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(40);
matrix.setTextColor(colors[0]);
}
void loop()
{
DisplayMessage(message);
// delay(100);
}
void DisplayMessage(String Text)
{
if (millis() > nextPixShiftTime)
{
if(loopCount == 0)
return;
int Y = 0;
textPixCount = (Text.length()*6)+32;
pixCount++;
if(pixCount == textPixCount)
{
pixCount = 0;
loopCount--;
}
if(message.length()<6)
Y = startPos(Text, center, 3);
else
Y = 32 - pixCount;
if(loopCount == 0)
Text = "";
matrix.fillScreen(0);
matrix.setCursor(Y, 0);
matrix.setTextColor(colors[1]);
matrix.print(Text);
matrix.drawPixel(loopCount, 7, colors[4]);
matrix.show();
nextPixShiftTime = millis() + timeBetweenPixShift;
}
}
int startPos(String text, int width, int offset)
{
int retnum = 0;
retnum = width/2 - ((text.length()+1)*5+text.length())/2 + offset;
return retnum;
}