INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
09.08.2019, 21:39
Beitrag #1
ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
Hallo Leute,

vorab: die Hardware funktioniert... Für mein Projekt ist ein ESP32 mit einer MAX7219-Matrix (4 Module) im Einsatz (+ plus ein paar Sensoren und LEDs).

Ich möchte eigentlich einen Webserver realisieren, über welche ich die Laufschrift der DOT-Matrix ändern kann. Das verrückte: es funktioniert sogar!

Aber... ich möchte das der Text des Webservers nur 3x ausgegeben wird und danach die Uhrzeit (welche per NTP geholt wird) wieder erscheint.
Und hier komme ich einfach nicht weiter. ich habe versucht mit verschiedenen globalen Variablen und Prüfungen zu arbeiten, mir viele Beispiele angesehen und sogar skizzen angefertigt, welche Variable, wann welchen Wert hat. Mittlerweile habe ich den Code so oft umgeschrieben, dass ich mir keinen Rat mehr weis.

Die Ausgabe der Matrix ist zum aktuellen Zeitpunkt rasend schnell, was ich nicht verstehe. Außerdem wird der Text der über den Webserver kommt nicht angezeigt, dafür scheinbar die Uhrzeit.

Neben den sonstigen Librarys habe ich vorallem die MD_Parola - Lib's im Einsatz.

Über Denkanstöße wäre ich sehr dankbar, damit ich die "newMessage"-Schleife nur dreimal ausführe.

Hier der Code der Loop:

Code:
/***********************************( Hauptprogramm )*************************************/
void loop() {  
  char buffer[10];
  
  server.handleClient(); //HTML Seite abfragen ob neue Nachricht gesendet wurde

  textArg = server.arg("lauftext");

  // nRepeatLoop mit 0 initialisiet
  nRepeatLoop++;

  if(nRepeatLoop == 3)
  {
    nRepeatLoop = 0;
    textArg = "";
    newMessageAvailable = false;
  }
  else
  {
    // Schleife wurde dreimal wiederholt, möglichen neuen Text abholen
    newMessageAvailable = true;
  }

  //Abfragen ob ein Text übermittelt wurde über das WebFormular auf der HTML Seite
  if (newMessageAvailable)
  {
    nMessage = 0;
    LaufschriftText = server.arg("lauftext"); //Wurde ein Text geschickt Laufschrift aktualisieren

    LaufschriftText.toCharArray(curMessage, sizeof(curMessage));

    oldArg = LaufschriftText;
    
    P.setIntensity(server.arg("helligkeit").toInt()); //Helligkeit einstellen
    speed = server.arg("wartenMs").toInt();            //Wartezeit überschreiben
    wait = server.arg("pause").toInt();
    timeWait = server.arg("timeWait").toInt();
  }
  else
  {
    nMessage = 1;
    timeClient.update();
    sprintf(buffer, "%.02d:%.02d", timeClient.getHours(), timeClient.getMinutes());
    strcpy(curMessage,buffer);
  }

  switch (state)
  {
  case 0: // initialising
    switch (nMessage)
    {
      case 0:
        //Textzeile anzeigen

        scrollEffectIn = PA_SCROLL_LEFT;
        scrollEffectOut = PA_SCROLL_LEFT;

        P.displayText(curMessage, ausrichtung, speed, wait, scrollEffectIn, scrollEffectOut);
        break;

      case 1:
        // Zeitanzeige
        scrollEffectIn = PA_SCROLL_LEFT;
        scrollEffectOut = PA_SCROLL_LEFT;

        P.displayText(curMessage, ausrichtung, speed, timeWait, scrollEffectIn, scrollEffectOut);
        break;
    }
    P.displayReset();  // tell Parola we have a new animation
    state = 1;
    break;

  case 1: // animating until it stops
    if (P.displayAnimate())
      state = 0;
    break;
  }
}

Den gesamten Quellcode habe als Archiv angehangen.

Vielen Dank!


Angehängte Datei(en)
.zip  ESPBroadcast.zip (Größe: 3,88 KB / Downloads: 5)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2019, 07:09
Beitrag #2
RE: ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
(09.08.2019 21:39)tho.schmidt schrieb:  r... ich möchte das der Text des Webservers nur 3x ausgegeben wird .....

Auf was bezieht sich "3x"?

Währe die Darstellung, für den Mensch, nicht besser wenn man es zB.: 10 Sekunden anzeigt?

(09.08.2019 21:39)tho.schmidt schrieb:  Außerdem wird der Text der über den Webserver kommt nicht angezeigt

Bist du dir sicher das der Webserver den Text bekommt? Mit "Serial.print" kannst du den Text anzeigen?

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2019, 10:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2019 10:40 von Tommy56.)
Beitrag #3
RE: ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
Zerlege Dein Problem in einfache Teilaufgaben.

1. Upload des Textes und anzeigen im seriellen Monitor nur wenn auch ein Text eingegeben wurde und dann nur 1 Mal.

2. Fester Lauftext auf der Matrix 3 Mal und dann Wechsel zur festen Uhrzeit.

Immer die Zustände mit dem seriellen Monitor überprüfen.
Damit hast Du überschaubare Sketche, die man sich bei Problemen auch mal anschauen kann.

Gruß Tommy

PS: Warun heißt Dein Programm main.cpp und nicht yxz.ino?

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2019, 16:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2019 16:40 von tho.schmidt.)
Beitrag #4
RE: ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
(10.08.2019 07:09)Fips schrieb:  Auf was bezieht sich "3x"?

Währe die Darstellung, für den Mensch, nicht besser wenn man es zB.: 10 Sekunden anzeigt?

Bist du dir sicher das der Webserver den Text bekommt? Mit "Serial.print" kannst du den Text anzeigen?

Gruß Fips

Hallo Fips,

die 3x mal beziehen sich auf die Anzeige des Textes, welcher vom Webserver geschickt wird. Da das Procedere bzw. meine Idee momentan nur mir im Kopf bekannt ist versuche ich das ganze mal hier zu skizzieren:

  1. Bereitstellung eines Webfrontends zur eingabe benutzerspezifischer Texte
  2. diese sollen auf der Matrix 3x angezeigt werden (in lesbarer Geschwindigkeit)
  3. danach wechsel zur anzeige der Uhrzeit
  4. erneut Anzeige eines Benutzertextes, sobald ein _neuer_ eingegeben wurde und zurück zu Punk 3
  5. später anzeige von Sensordaten des BME280


Eines meiner Hauptprobleme ist in der Tat, das ich den Text vom Webserver gesendet bekomme, aber mir noch kein Zustandsautomat eingefallen ist, wie ich diesen löschen / nullen kann um neue Texte zu registrieren. Meine bisherigen Versuche gipfeln in einer Variablen-Schlacht...

@Tommy56: Vielen Dank für den Denkanstoß. Ich werde mir das "Ur-Projekt" nochmal zu Gemüte führen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2019, 16:43 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2019 17:44 von Fips.)
Beitrag #5
RE: ESP32 mit MAX7219 --> Programmlogik, ich verstehe es nicht...
(10.08.2019 16:38)tho.schmidt schrieb:  diese sollen auf der Matrix 3x angezeigt werden (in lesbarer Geschwindigkeit)

Jetzt hab ichs!
Der läuft auf der Matrix ja langsam durch.
Ich hatte Matrix überlesen.

Bleibt noch die unbeantwortete Frage ob der Text beim Server ankommt.
Kannst du den Text mit Serial.print ausgeben?

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32-CAM Projekt MINICAM Maico 11 717 Gestern 22:03
Letzter Beitrag: Maico
  ESP32 - Schreibzyklen im RTC RAM Hoffmakl 5 157 Gestern 21:07
Letzter Beitrag: Tommy56
  Debug mit Telnet ESP8266 (und ESP32 ungetestet)) Tommy56 3 3.796 12.08.2019 14:49
Letzter Beitrag: Tommy56
  MQTT Client mit Client Zertifikaten und Benutzer/Passwort klappt nicht Mausbiber 10 637 11.08.2019 22:28
Letzter Beitrag: Mausbiber
  ESP32 MQTT Ausfall nach 201 Minuten Jan Hirt 9 1.011 06.08.2019 18:31
Letzter Beitrag: Tommy56
  WeMos D1 nicht erkannt? Stagneth.Alexander 2 453 26.07.2019 09:10
Letzter Beitrag: Stagneth.Alexander
  ESP32 Hostname für die Anzeige im Router ändern Tommy Rakete 4 852 17.07.2019 21:42
Letzter Beitrag: Tommy56
  ESP32 Devboard mit Laderegler? markusw129 4 669 14.07.2019 17:33
Letzter Beitrag: Tommy56
  ESP32 Analog Wert am Spannungsteiler ungenau vs Arduino Analog Wert Nick2245 1 659 16.06.2019 09:01
Letzter Beitrag: Fips
  ESP32: U8x8 und SoftwareSerial gleichzeitig markusw129 2 649 15.06.2019 12:06
Letzter Beitrag: markusw129

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste