Arduino P10 display

VK3ZYZ

Moderator
Staff member
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..
1741835902515.png

and the board layout...
1741835944469.png


An Arduino Uno can be connected as so...
1741836001587.png

This was the earlier version..
1741837053364.png

I have made up a PCB that suits the Arduino Uno or the Nano.
1741836049187.png


The board has an Arduino Nano installed, then screwed to the back of the P10 panel.
ArduinoP10-1panel.jpg



Here is the connections with the +5V being supplied via one of the I2C connectors.
ArduinoP10Closeup.jpg


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:

VK3ZYZ

Moderator
Staff member
Much to my delight, I found the P10 code runs well on the Arduino Nano ATmega168 boards I received in place of the ATmega328 versions. So now I have a use for them :)
On the current setup, a 2200uF electro was added across the 5V supply as the Nano was resetting randomly.
Photo on 5-8-2025 at 7.26 pm.jpg
 
Top