Go Down

Topic: Max7219- text direction after 4th segment (Read 231 times) previous topic - next topic

soulid

Hi,
I have an issue with my 1xMax7219 LED DOT Matrix: The text of the first 7 segments are running upside down and the last 4 (closest to the ESP8266).
I changed the number of horizontal segments and when putting it to "4" all segments are running perfectly, but the text is running in three blocks

Code: [Select]

/************************( Importieren der genutzten Bibliotheken )************************/
#include <ESP8266WiFi.h>
//#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "HTML_Seite.h"           //HTML Seite im gleichem  Verzeichnis wie das Programm
//#include <ESP8266mDNS.h>

#include <SPI.h>                  //Einbinden von SPI für Kommunikation  mit DOT Matrix
#include <Adafruit_GFX.h>         //Zeichensätze für DOT Matrix
#include <Max72xxPanel.h>         //Ansteuerung für DOT Matrix mit MAX7219 Treiber


/****************************( Definieren der Globale Variablen )**************************/
//const char *ssid = "ZugkoenigschildImmerfroh"; //SSID für  Access Point ohne Passwort
//const char *password = "Immerfroh"; //Passwort für  Access Point

//const char* ssid = "ZugkoenigschildImmerfroh";
//const char* password = "Immerfroh";
/******************************( Bibliotheken initialisieren )*****************************/
ESP8266WebServer server(80);      //Webserver auf Port 80 starten. Verbindet man sich mit
                                  //einem Gerät mit dem ESP8266 ist die HTML Seite über
                                  //die IP http://192.168.4.1 erreichbar

//Anschliessen der DOT Matix
//DOT Matrix:       ESP8266 NodeMCU:
//VCC               5V (VUSB)
//GND               GND
//DIN               D7 (GPIO13)
//CS                D3 (GPIO0)
//CLK               D5 (GPIO14)

int pinCS = 0;                          //Für den PIN Select habe ich GPIO0 gewählt
int numberOfHorizontalDisplays = 11;     //Anzahl der Module Horizontal
int numberOfVerticalDisplays = 1;       //Anzahl der Module Vertikal

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

/****************************( Definieren der Globale Variablen )**************************/
String LaufschriftText = "Grenadierzug ";  //Default Laufschrift

int wait = 40;                  //Zeit in ms für Scroll Geschwindigkeit wo gewartet wird
int helligkeit = 5;             //Default Helligkeit 0 bis 15
int spacer = 1;                 //leer Zeichen länge
int width = 5 + spacer;         //Schriftlänge ist 5 Pixel


/*****************************************( setup )****************************************/
void setup() {
  delay(1000);                  //1 Sekunde warten
//  WiFi.softAP(ssid);            //Access Point Starten

  // Server Starten
  server.on("/", handleRoot);
  server.begin();

  matrix.setIntensity(helligkeit); //Helligkeit von Display auf Default Wert einstellen

  matrix.setRotation(0, 1);        //Erste DOT Matrix Drehen
  matrix.setRotation(1, 1);        //Zweite DOT Matrix Drehen
  matrix.setRotation(2, 1);        //Dritte DOT Matrix Drehen
  matrix.setRotation(3, 1);        //Vierte DOT Matrix Drehen
}

/************************( Funktion zum Darstellen der HTML Seite )************************/
void handleRoot() {
  server.send(200, "text/html", file1);
}

/*******************( Funktion zum Darstellen der Zeichen auf Display )********************/
// Wurde Teils aus dem Library Beisbiel übernommen
void anzeigen() {
  for ( int i = 0 ; i < width * LaufschriftText.length() + matrix.width() - 1 - spacer; i++ ) {

    matrix.fillScreen(LOW);

    int letter = i / width;
    int x = (matrix.width() - 1) - i % width;
    int y = (matrix.height() - 8) / 2; //Zentrieren des Textes Vertikal

    while ( x + width - spacer >= 0 && letter >= 0 ) {
      if ( letter < LaufschriftText.length() ) {
        matrix.drawChar(x, y, LaufschriftText[letter], HIGH, LOW, 1);
        server.handleClient();        //HTML Seite abfragen ob neue Nachricht gesendet wurde
      }
      letter--;
      x -= width;
    }

    matrix.write(); //Display beschreiben
    delay(wait);    //Warten für Scroll Geschwindigkeit
  }
}

/***********************************( Hauptprogramm )*************************************/
void loop() {
  server.handleClient();             //HTML Seite abfragen ob neue Nachricht gesendet wurde

  //Abfragen ob ein Text übermittelt wurde über das WebFormular auf der HTML Seite
  if (server.arg("lauftext").length() != 0) {
    LaufschriftText = server.arg("lauftext"); //Wurde ein Text geschickt Laufschrift aktualisieren
    matrix.setIntensity(server.arg("helligkeit").toInt()); //Helligkeit einstellen
    wait = server.arg("wartenMs").toInt();                 //Wartezeit überschreiben
  }
  anzeigen();                                              //Funktion Anzeigen aufrufen
}

PaulRB

#1
Aug 19, 2019, 07:41 pm Last Edit: Aug 19, 2019, 07:48 pm by PaulRB
Code: [Select]
  matrix.setRotation(0, 1);        //Erste DOT Matrix Drehen
  matrix.setRotation(1, 1);        //Zweite DOT Matrix Drehen
  matrix.setRotation(2, 1);        //Dritte DOT Matrix Drehen
  matrix.setRotation(3, 1);        //Vierte DOT Matrix Drehen

These lines of code affect 4 of your 11 matrices. Could this explain the effect? Try copying these lines for 4 to 10.

Or like this
Code: [Select]
  for(byte d=0; d<numberOfHorizontalDisplays; d++) matrix.setRotation(d, 1);

soulid

PaulRB,
it would have been soooo easy. Thank you for the help!!!

It works

Issue closed!

Go Up