MD parola en input via serial.read()

Hallo,

ik ben al een tijdje bezig om de MD Parola bibliotheek van marco_c aan het doorgronden voor een 5x8x8 display om tijden op weer te geven.

nadien wil ik diezelfde data vanuit een MEGA2560 laten komen via RX-TX

maar zo ver ben ik nog niet natuurlijk....

momenteel heb ik de code als dusdanig aangepast, maar het werkt niet

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

#define	MAX_DEVICES	5 // number of displays connected
#define	CLK_PIN		13  //
#define	DATA_PIN	11  //
#define	CS_PIN		10  //

// Hardware SPI connection
MD_Parola Display = MD_Parola(CS_PIN, MAX_DEVICES);
#define ARRAY_SIZE(x)  (sizeof(x)/sizeof(x[0]))

char inData[20]; // Allocate some space for the string
char inChar; // Where to store the character read
byte index = 0; // Index into array; where to store the character


int readline(int readch, char *Buffer, int len)
{
  static int pos = 0;
  int rpos;

  if (readch > 0) {
    switch (readch) {
      case '\n': // Ignore new-lines
        break;
      case '\r': // Return on CR
        rpos = pos;
        pos = 0;  // Reset position index ready for next time
        return rpos;
      default:
        if (pos < len-1) {
          Buffer[pos++] = readch;
          Buffer[pos] = 0;
        }
    }
  }
  // No end of line has been found, so return -1.
  return -1;
}
void setup(void)
{
  Serial.begin(115200);
  Display.begin();
  Display.setInvert(false);
}

void loop(void)
{
  static char Buffer[10];
  if (readline(Serial.read(), Buffer, 10) > 0) 
  {
    Serial.print("You entered: >");
    Serial.print(Buffer);
    Serial.println("<");
  }
  
  Display.displayText(Buffer,CENTER,1,1,NO_EFFECT);

}

iemand een idee waar ik fout bezig ben?

Grtz,
Yves

Opgelost met een voorbeeld uit de MD_MAX72xx bibliotheek

cs_pin lijkt mij dat je die 5 keer moet geven voor elk display een andere.

Nou, net als een 595 kun je die MAX 72xx ook met elkaar doorlussen.
Op die manier kun je CS pinnen uitsparen, en elke pin is kostbaar.
Die library heeft ook de mogelijkheid om op te geven hoeveel devices er zijn, het lijkt me dat dat hiervoor bedoeld is.
Dan kan er dus het aantal devices maal 64 bits uitgeklokt worden.

@Yves: kun je ons ook vertellen waar het verkeerd ging ?
Dan kan een ander er ook iets van opsteken.

Hey Mas3,

Ik had totaal geen idee hoe ik met serial.available() moest werken en character per character inlezen in een NULL terminated string.

Ik had geprobeerd met een aantal voorbeelden aan te passen die in de MD_Parola bibliotheek stonden.
Dit lukte niet omdat ik totaal geen idee had hoe ik zoiets moest doen.

Maar bij nazicht bij de voorbeelden binnen de MD_MAX72xx bibliotheek zat daar wel een voorbeeld in die trouwens ook ogenblikkelijk goed werkte...

Nu ga ik deze avond eens proberen uit te pluizen voor mezelf hoe dit aangepakt moet worden. Eens ik dit doorheb kan ik dingen aanpassen voor mezelf

Grtz,
Yves

Hoi.

Ik heb daar ook ooit mee gestoeid.
Totdat ik Nick Gammon's Serial pagina vond.
Hij legt daar een en ander duidelijk uit, en geeft een stuk of 3 methodes die kunnen worden toegepast.
Ik heb destijds voor mijn toepassing een combinatie weten te brouwen uit zijn voorbeelden, die heel goed lijkt te werken (ik kan dagenlang meekijken met een serieel signaal).

Sowieso is Nick's gehele site een dikke aanrader en een bookmark waard.