#define PxMATRIX_MAX_HEIGHT 64
#define PxMATRIX_MAX_WIDTH 128
#include <PxMatrix.h>
#include <Ticker.h>
Ticker display_ticker;
#define P_LAT D0
#define P_A D1
#define P_B D2
#define P_C D8
#define P_OE D4
#define matrix_width 128
#define matrix_height 64
uint8_t display_draw_time=20; //10-50 is usually fine
PxMATRIX display(128,64,P_LAT, P_OE,P_A,P_B,P_C);
// Some standard colors
uint16_t myRED = display.color565(255, 0, 0);
uint16_t myGREEN = display.color565(0, 255, 0);
uint16_t myBLUE = display.color565(0, 0, 255);
uint16_t myWHITE = display.color565(255, 255, 255);
uint16_t myYELLOW = display.color565(255, 255, 0);
uint16_t myCYAN = display.color565(0, 255, 255);
uint16_t myMAGENTA = display.color565(255, 0, 255);
uint16_t myBLACK = display.color565(0, 0, 0);
uint16_t myCOLORS[8]={myRED,myGREEN,myBLUE,myWHITE,myYELLOW,myCYAN,myMAGENTA,myBLACK};
// ISR for display refresh
void display_updater()
{
display.display(display_draw_time);
}
void display_update_enable(bool is_enable)
{
if (is_enable){
display_ticker.attach(0.01, display_updater);
} else {
display_ticker.detach();
}
}
void setup() {
Serial.begin(9600);
display.begin(32);
display.setMuxPattern(ABC);
display.setFastUpdate(true);
display_update_enable(true);
display.clearDisplay();
display.setTextColor(myYELLOW);
display.setCursor(2,2);
display.print("This is a test");
display.drawLine(2, 10, 85, 10, myCYAN);
display.setTextColor(myMAGENTA);
display.setCursor(97,2);
display.print("15:50");
display.setCursor(2,11);
display.setTextColor(myCYAN);
display.print("Line 1");
display.setCursor(2,19);
display.setTextColor(myWHITE);
display.print("Second Line");
display.setCursor(2,27);
display.setTextColor(myCYAN);
display.print("Third Line");
display.setCursor(2,35);
display.setTextColor(myWHITE);
display.print("Fourth Line");
display.setCursor(2,43);
display.setTextColor(myCYAN);
display.print("Sixth Line");
display.setCursor(2,51);
display.setTextColor(myWHITE);
display.print("Seventh Line");
display.setCursor(73,25);
display.setTextSize(3);
display.setTextColor(myMAGENTA);
display.print("IDK");
delay(5000);
}
int line = 0;
void loop() {
display.clearDisplay();
display.drawLine(0, line, 128, line, myCYAN);
delay(100);
if(line == 64){
line = 0;
} else {
line++;
}
}