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: 11)
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 Fehler der UART Schnittstelle summsumm 8 88 Gestern 22:20
Letzter Beitrag: Bitklopfer
  ESP32 hängt -> reset per Attiny85 hYtas 107 4.153 06.12.2019 12:48
Letzter Beitrag: amithlon
  Arduino IDE ESP8266 Sketch Data Upload funktioniert nicht Triax16 22 590 03.12.2019 11:17
Letzter Beitrag: Triax16
  esp32 Float in EEPROM schreiben lesen wwilhelm 8 300 02.12.2019 11:13
Letzter Beitrag: wwilhelm
  ESP32 BT Master MarcelN 0 107 02.12.2019 10:29
Letzter Beitrag: MarcelN
  ESP32 - Dualcore georg1010 2 148 01.12.2019 16:19
Letzter Beitrag: amithlon
Question ESP32 Webserver Problem opitzh 31 1.064 28.11.2019 16:27
Letzter Beitrag: Tommy56
  ESP32 - ungewöhnliche Anzeige an der ser. Schnittstelle georg1010 4 276 28.11.2019 14:57
Letzter Beitrag: Tommy56
Question Control Unit für Relay mit ESP32 2uk 38 2.022 26.11.2019 17:27
Letzter Beitrag: 2uk
  ESP32 - welche WIFI Library nehmen georg1010 2 336 16.11.2019 19:02
Letzter Beitrag: amithlon

Gehe zu:


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