Here is a video of it working.
This is a close up of the Teensy and SmartMatrix shield. Note that everything is on the top side of the board.
Now to fix the Teensy code to support the newer 64x32 LED panels.
Here is a video of the Teensy working with two 64x32 LED panels after being "Reset" with the code below.
This is the reset code.
// SMart Matrix Panel Reset Program
// For use with newer LED Panels
// Written 3/28/2019 by Bob Davis
int MaxLed = 256;
#define GPIO_PIN_CLK_TEENSY_PIN 14
#define GPIO_PIN_LATCH_TEENSY_PIN 3
#define GPIO_PIN_OE_TEENSY_PIN 4
#define GPIO_PIN_B0_TEENSY_PIN 6
#define GPIO_PIN_R0_TEENSY_PIN 2
#define GPIO_PIN_R1_TEENSY_PIN 21
#define GPIO_PIN_G0_TEENSY_PIN 5
#define GPIO_PIN_G1_TEENSY_PIN 7
#define GPIO_PIN_B1_TEENSY_PIN 20
#define ADDX_TEENSY_PIN_0 9
#define ADDX_TEENSY_PIN_1 10
#define ADDX_TEENSY_PIN_2 22
#define ADDX_TEENSY_PIN_3 23
int C12[16] = {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int C13[16] = {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0};
void setup() {
// put your setup code here, to run once:
pinMode(GPIO_PIN_CLK_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_LATCH_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_OE_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_B0_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_R0_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_R1_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_G0_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_G1_TEENSY_PIN, OUTPUT);
pinMode(GPIO_PIN_B1_TEENSY_PIN, OUTPUT);
pinMode(ADDX_TEENSY_PIN_0, OUTPUT);
pinMode(ADDX_TEENSY_PIN_1, OUTPUT);
pinMode(ADDX_TEENSY_PIN_2, OUTPUT);
pinMode(ADDX_TEENSY_PIN_3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// Send Data to control register 11
digitalWrite (GPIO_PIN_OE_TEENSY_PIN, HIGH); // Display reset
digitalWrite (GPIO_PIN_LATCH_TEENSY_PIN, LOW);
digitalWrite (GPIO_PIN_CLK_TEENSY_PIN, LOW);
for (int l=0; l<MaxLed; l++){
int y=l%16;
digitalWrite (GPIO_PIN_R0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_G0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_B0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_R1_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_G1_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_B1_TEENSY_PIN,LOW);
if (C12[y]==1){
digitalWrite (GPIO_PIN_R0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_G0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_B0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_R1_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_G1_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_B1_TEENSY_PIN,HIGH);
}
if (l>MaxLed-12){digitalWrite(GPIO_PIN_LATCH_TEENSY_PIN, HIGH);}
else{digitalWrite(GPIO_PIN_LATCH_TEENSY_PIN, LOW);}
digitalWrite(GPIO_PIN_CLK_TEENSY_PIN, HIGH);
digitalWrite(GPIO_PIN_CLK_TEENSY_PIN, LOW);
}
digitalWrite (GPIO_PIN_LATCH_TEENSY_PIN, LOW);
digitalWrite (GPIO_PIN_CLK_TEENSY_PIN, LOW);
// Send Data to control register 12
for (int l=0; l<MaxLed; l++){
int y=l%16;
digitalWrite (GPIO_PIN_R0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_G0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_B0_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_R1_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_G1_TEENSY_PIN,LOW);
digitalWrite (GPIO_PIN_B1_TEENSY_PIN,LOW);
if (C13[y]==1){
digitalWrite (GPIO_PIN_R0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_G0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_B0_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_R1_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_G1_TEENSY_PIN,HIGH);
digitalWrite (GPIO_PIN_B1_TEENSY_PIN,HIGH);
}
if (l>MaxLed-13){digitalWrite(GPIO_PIN_LATCH_TEENSY_PIN, HIGH);}
else{digitalWrite(GPIO_PIN_LATCH_TEENSY_PIN, LOW);}
digitalWrite(GPIO_PIN_CLK_TEENSY_PIN, HIGH);
digitalWrite(GPIO_PIN_CLK_TEENSY_PIN, LOW);
}
digitalWrite (GPIO_PIN_LATCH_TEENSY_PIN, LOW);
digitalWrite (GPIO_PIN_CLK_TEENSY_PIN, LOW);
}
Here is a video of the Teensy displaying text on two 64x32 LED arrays.
1 comment:
Hi,
Your for loop is broken, you're missing the end of the line.
Is it meant to be
for (int l=0; l< MaxLed; l++) {
int y=l%16;
Also, could you jump onto this discussion to get it fixed for good in SmartMatrix?
https://community.pixelmatix.com/t/smartmatrix-doesnt-support-fm6126a-driver-chips/421
Post a Comment