0

I have this sample code:

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>


#define MAX_DEVICES 4
#define CLK_PIN   11
#define DATA_PIN  12
#define CS_PIN    10

MD_Parola P = MD_Parola(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

void setup(void) {
  P.begin();
  P.print("PPPPPPPP");
}

void loop(void) {
}

And this is how it lights up the display:

enter image description here

I presume that the code displays text incorrectly, because the display manufacturer has connected individual 8x8 displays "differently than any library expects" (i.e. in red I have annotated the column addresses for my display, while with green I have annotated what they would have to be for this library to show text correctly).

I have two questions:

  1. Is there any good Arduino graphics library that would allow me to fix from software the addressing issue specific to my display?
  2. Since in the future I plan to make a 16x64 display out of 4 of these, then is there a library capable of doing that as well (i.e. have vertical font size of 12-16 pixels)?
  • No software will work properly when hardware doesn't. – Ignacio Vazquez-Abrams Dec 3 '17 at 20:26
  • @IgnacioVazquez-Abrams I imagine that if there was graphics library that would allow me to render pixels in memory buffer instead of hardware directly, then I could compensate this hardware bug by using LedControl library and calling something like setColumn((7-addr&0x7)+addr&252,value). So is there a library that allows to render pixlels in memory buffer? – Hans Solo Dec 3 '17 at 20:35
  • This may help. It's hard to say if you have bad hardware or a bad library. – Nick Gammon Jan 3 '18 at 6:11
1

The issue is minor. It looks like the library was designed for a slightly different matrix display / wiring.

Take a look at the library and it likely maps the input buffer to segment / dot-matrix information. Play with that.

The author did 99% of the work for you. You just need to finish the last 1%.

  • You mean to change the code in library itself? This somewhat puts maintenance burden on me to share a fork of patched Parola library with my code until I get these Parola changes upstreamed and downstream (ie. Arduino Web IDE) picks them up. So I would prefer to use a library that can deal with this issue out of the box, if there is one. – Hans Solo Dec 3 '17 at 21:01
  • 1
    the solution is really simple: swap bit orders. so you just need to write a function that swaps bit 7 <-> bit 0, bit 6 <-> bit 1, bit 5 <-> bit 2, bit 4 <-> bit 3. very easy to do. – dannyf Dec 4 '17 at 1:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.