Infodisplay mit Max7219

Einen wunderschönen guten Abend an die Arduinogemeinde :slight_smile:

Um was geht es:

Was geht schon:
Zeit, Datum über DCF geht schon war auch kein Problem.

Wo hängt es:
Ich möchte gern über die serielle Schnittstelle noch optional Texte senden und diese sollen dann angezeigt werden.

Mit dem Code werden Daten angenommen.

void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read(); 
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Mit diesem soll es angezeigt werden:

if (stringComplete) {
    
    printStringWithShift(inputString, shiftSpeed);
    Serial.println(inputString); 
    // clear the string:
    inputString = "";
    stringComplete = false;
  }

Für die Max7219 kommt die MaxMatrix.h zum Einsatz.

Beim Kompilieren des Code kommt folgende Fehlermeldung:

MAX7219_DOT_MATRIX_CLOCK_Neu:252: error: cannot convert 'String' to 'char*' for argument '1' to 'void printStringWithShift(char*, int)'

Wenn man den gesamten Code betrachtet gibt es sicher noch das eine oder andere was man verbessern kann.
Aber das kommt später.

Eins noch, ich bin nicht so bewandert in C. Arduino ist mein erster Versuch. Deshalb etwas Nachsicht mit dem alten Mann.

Ich bedanke mich einstweilen.

MAX.zip (7.73 KB)

Tach

Da sich hier ja nicht viel tut und ich nicht untätig war hier mal eine mögliche Lösung:

void serialEvent() {
 
  while (Serial.available() > 0)
  {
    byte c = Serial.read();
    Serial.println(c, DEC);
    printCharWithShift(c, 40);
  }
  
  delay(20);
  m.shiftLeft(false, false);
}

.
.
.

void printCharWithShift(char c, int shift_speed){
  if (c < 32) return;
  c -= 32;
  memcpy_P(buffer, CH + 7*c, 7);
  m.writeSprite(64, 0, buffer);
  m.setColumn(64 + buffer[0], 0);
  for (int i=0; i<buffer[0]+1; i++) 
  {
    delay(shift_speed);
    m.shiftLeft(false, false);
  }
}

Schönen Tach

Haben wir uns schon gedacht, dass du selber merkst, dass dies

String inputString = ""; // a string to hold incoming data

der Fehler ist.

:wink:

Glückwunsch !

Abend

Hat mich schon ein paar Tage und Flaschen Bier gekostet.
Versuch und Irrtum war auch dabei.
Von daher.

Trotzdem Danke.

habe fast das selbe projekt aller ding wollte ich es über webserver steuern mit lan modul . hast du mir mal dein code weil ich bekomme es nicht hin das die eingabe über seriel geht