// Adafruit_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation.
#include <EEPROM.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define PIN 3
// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
// NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
// Position of the FIRST LED in the matrix; pick two, e.g.
// NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
// NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
// rows or in vertical columns, respectively; pick one or the other.
// NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
// in the same order, or alternate lines reverse direction; pick one.
// See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_GRBW Pixels are wired for GRBW bitstream (RGB+W NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// Example for NeoPixel Shield. In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino. When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order. The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(17, 5, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);
const PROGMEM uint8_t digits[][5] = {
{B11100000, B10100000, B10100000, B10100000, B11100000, }, //0
{B00100000, B00100000, B00100000, B00100000, B00100000, }, //1
{B11100000, B00100000, B11100000, B10000000, B11100000, }, //2
{B11100000, B00100000, B11100000, B00100000, B11100000, }, //3
{B10100000, B10100000, B11100000, B00100000, B00100000, }, //4
{B11100000, B10000000, B11100000, B00100000, B11100000, }, //5
{B11100000, B10000000, B11100000, B10100000, B11100000, }, //6
{B11100000, B00100000, B00100000, B00100000, B00100000, }, //7
{B11100000, B10100000, B11100000, B10100000, B11100000, }, //8
{B11100000, B10100000, B11100000, B00100000, B11100000, }, //9
};
const uint16_t colors[] = {
matrix.Color(255, 255, 255), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };
static uint8_t bmx = 0;
static uint8_t bmy = 0;
void setup() {
matrix.begin();
matrix.setBrightness(100);
matrix.fillScreen(0);
}
void loop() {
Ds1302::DateTime now;
rtc.getDateTime(&now);
static uint8_t last_second = 0;
if (last_second != now.second){
last_second = now.second;
Serial.print("20");
Serial.print(now.year); // 00-99
Serial.print('-');
if (now.month < 10) Serial.print('0');
Serial.print(now.month); // 01-12
Serial.print('-');
if (now.day < 10) Serial.print('0');
Serial.print(now.day); // 01-31
Serial.print(' ');
Serial.print(WeekDays[now.dow - 1]); // 1-7
Serial.print(' ');
if (now.hour < 10) Serial.print('0');
Serial.print(now.hour); // 00-23
Serial.print(':');
if (now.minute < 10) Serial.print('0');
Serial.print(now.minute); // 00-59
Serial.print(':');
if (now.second < 10) Serial.print('0');
Serial.print(now.second); // 00-59
Serial.println();
}
matrix.fillScreen(0);
matrix.drawBitmap(0 ,0, digits[minT],3,5,colors[0]);
matrix.drawBitmap(4 ,0, digits[minU],3,5,colors[0]);
matrix.drawBitmap(10,0, digits[secT],3,5,colors[0]);
matrix.drawBitmap(14,0, digits[secU],3,5,colors[0]);
if(secU % 2 == 1){
matrix.drawPixel(8, 1, colors[1]);
matrix.drawPixel(8, 3, colors[1]);
}
matrix.show();
}
}
}
}
}