Although this is included in the "Learn Arduino" posting, here is just the P10 info.
( http://www.sadarc.org/xenforo/upload/index.php?threads/learn-arduino.261/page-5 post #81...... )
Here is the P10 board circuit..
and the board layout...
An Arduino Uno can be connected as so...
This was the earlier version..

I have made up a PCB that suits the Arduino Uno or the Nano.
The board has an Arduino Nano installed, then screwed to the back of the P10 panel.
Here is the connections with the +5V being supplied via one of the I2C connectors.
This board can be used for other things as most of the ports are connected to 4pin connectors.
And some example code.
( http://www.sadarc.org/xenforo/upload/index.php?threads/learn-arduino.261/page-5 post #81...... )
Here is the P10 board circuit..
and the board layout...
An Arduino Uno can be connected as so...
This was the earlier version..

I have made up a PCB that suits the Arduino Uno or the Nano.
The board has an Arduino Nano installed, then screwed to the back of the P10 panel.
Here is the connections with the +5V being supplied via one of the I2C connectors.
This board can be used for other things as most of the ports are connected to 4pin connectors.
And some example code.
Code:
// Arduino P10 display based on....
// https://circuitdigest.com/microcontroller-projects/digital-notice-board-using-p10-led-matrix-display-and-arduino
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
const char* message = "Test Massage....."; // <<<<< just edit this message.
#define LEDs_across 32 // <<<< number of LEDs per panel width. In this case, the panels are 32x16.
#define ROW 1 // <<<< number of panels in line horizontally. I have tested 1 and 2 only.
#define COLUMN 1
#define FONT Arial_Black_16
#define ScanSpeed 20 // <<<< set the scan speed
DMD led_module(ROW, COLUMN);
void scan_module()
{
led_module.scanDisplayBySPI();
}
void setup()
{
Timer1.initialize(2000);
Timer1.attachInterrupt(scan_module);
led_module.clearScreen( true );
}
void loop()
{
led_module.selectFont(FONT);
// text to display, text length, number of panels * rows, dunno.
led_module.drawMarquee(message, strlen(message), (LEDs_across * ROW), 0);
long start = millis();
long timming = start;
boolean flag = false;
while (!flag)
{
if ((timming + ScanSpeed) < millis())
{
flag = led_module.stepMarquee(-1, 0);
timming = millis();
}
}
}
Last edited: