Programm Beispiel zum ansteuern von einem Dot Matrix Modul mit MAX7219 Treiber. Das Programm habe ich für den ESP8266 programmiert da dieser bereits das Wlan Integriert hat. Verbinde dich mit deinem Handy mit dem ESP8266 und schicke drahtlos Text Nachrichten auf das Display.


ESP8266 in der Arduino IDE Software Installieren

Damit du dein Programm das du in der Arduino IDE Programmiert hast auf den ESP8266 laden kannst musst du zuerst das ESP8266 Board unter Arduino Installieren. Für die Installation kannst du unser Youtube Tutorial anschauen.


Schaltplan MAX7219 mit ESP8266 NodeMCU V3

Hier noch ein Schaltplan Schema wie du das Display an den ESP8266 anschliessen kannst.


Arduino Programm für ESP8266 mit Dot Matrix

/*******************************************************************************************
 *******************************************************************************************
 **                                www.bastelgarage.ch                                    **
 ** Der Onlineshop mit Videoanleitungen und kompletten Bausätzen für Anfänger und Profis! **
 *******************************************************************************************
 *******************************************************************************************
 ** Programm Beispiel zum ansteuern von einem Dot Matrix Modul mit MAX7219 Treiber.       **
 ** Das Programm habe ich für den ESP8266 programmiert da dieser bereits das Wlan         **
 ** Integriert hat. Mit diesem Projekt kann man sich mit einem Handy auf den ESP8266      **
 ** verbinden und Nachrichten über eine HTML Seite auf das DOT Matrix Display senden.     **
 ** Die Nachrichten werden anschliessend als Laufschrift auf dem Dot Matrix Display       **
 ** angezeigt.                                                                            **
 **                                                                                       **
 ** Für die Ansteuerung des DOT Matrix Displays musst du von GitHub noch zwei Libraries   **
 ** auf deinem PC Installieren. Die Libraries findest du unter folgenden Links:           **
 ** https://github.com/markruys/arduino-Max72xxPanel                                      **
 ** https://github.com/adafruit/Adafruit-GFX-Library                                      **
 **                                                                                       **
 **                                                                                       **
 ** Autor: Philippe Keller                                                                **
 ** Datum: September 2016                                                                 **
 ** Version: 1.0                                                                          **
 * *****************************************************************************************
*/

/************************( 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 <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 = "DOT_Matrix_bastelgarage.ch"; //SSID für  Access Point ohne Passwort


/******************************( 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 = 4;     //Anzahl der Module Horizontal
int numberOfVerticalDisplays = 1;       //Anzahl der Module Vertikal

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

/****************************( Definieren der Globale Variablen )**************************/
String LaufschriftText = "bastelgarage.ch 192.168.4.1";  //Default Laufschrift

int wait = 50;                  //Zeit in ms für Scroll Geschwindigkeit wo gewartet wird
int helligkeit = 3;             //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
}


HTML Seite für Web Interface 

Damit das Programm etwas übersichtlicher wird habe ich die HTML Seite vom Arduino Programm ausgelagert. Du musst dir ein HTML_Seite.h mit folgendem Code erzeugen das du in den selben Ordner wie das Arduino Programm kopierst.

#ifndef header_h
#define header_h
String file1=
"<!DOCTYPE html>\r\n"
"<html>\r\n"
"<body style=\"font-family: Verdana, sans-serif\">Gib deinen Text ein:<br>\r\n"
"<form action=\"\" method=\"post\">\r\n"
  "Text: <input type=\"text\" name=\"lauftext\"  ><br>\r\n"
    "Warten ms: <input type=\"number\" name=\"wartenMs\" value=\"50\" max=\"500\" min=\"5\"><br>\r\n"
  "Helligkeit: <input type=\"number\" name=\"helligkeit\" value=\"6\" max=\"15\" min=\"0\"><br>\r\n"
  "<input type=\"submit\" value=\"Senden\">\r\n"
"</form>\r\n"
"</body>\r\n"
"</html>\r\n";
#endif


Neopixel Ring mit WS2812 RGB LED mit Rotary Encoder ansteuern
In diesem Tutorial möchte ich dir zeigen, wie du Neopixel RGB LED’s ansteuern kannst. Wir werden auch sehen wie du diverse Parameter mit einem Drehgeb...
Mit Touch Sensor MPR121 Sound Effekte abspielen
In diesem Blog Eintrag möchte ich euch zeigen wie ihr einen Kapazitiven Sensor mit dem Touch Sensor MPR121 selber bauen könnt....
9 Bemerkungen
Gerrit
Gerrit

Vielen Dank zunächst für das tolle Beispiel. Klappt genau wie es soll! Ich hätte da allerdings noch eine Frage: Ist es irgendwie möglich, Umlaute anzuzeigen? Bisher umgehe ich das Problem, indem ich Umlaute ersetze (Ä > Ae usw.). Aber vielleicht kennt ja jemand einen Weg auch Umlaute (zumindest die in Kleinbuchstaben) auf dem MAX7219 anzeigen zu können.

Stephan
Stephan

Hallo. Ich habe das ganze soeben Probiert. nur sehe ich das das im Video gezeigte Script nicht übereinstimmt mit dem was da abgebildet ist. ich kann nirgens das Passwort zum Verbinden definieren.

Danke

Johann Edelmüller
Johann Edelmüller

Hallo Danke für dein Tutorial, funktioniert soweit recht gut, habe aber das Problem das ich in den 4 Feldern immer das selbe sehe, also 4x das selbe und nicht eine Laufschrift.
Was habe ich da falsch gemacht?

Mfg
Johann

Philippe
Philippe

Was für eine Matrix verwendest du den? Hast du eventuell hier was Falsch eingetragen:
int numberOfHorizontalDisplays = 4; //Anzahl der Module Horizontal
int numberOfVerticalDisplays = 1; //Anzahl der Module Vertikal
Gruess Philippe

Marcus
Marcus

Hallo,

Falls es jemand benötigt.
So können die Daten auch direkt z.B. per Terminal (mit cURL) übergeben werden. Somit muss nicht die Website aufgerufen werden

curl --data "lauftext=abc&helligkeit=1&wartenMs=300&submit=Senden" http://192.168.2.112/

Hier als Bsp --> Text = abc WartenMs = 300 und Helligkeit = 1

Mit freundlichen Grüßen

Marcus
Marcus

Hallo,

gibt es die Möglichkeit das ganze auch per direkt Link anzugeben. Also grobes Bsp: http://192.168.4.1/TestText-50-15

Danke
Mit freundlichen Grüßen
Marcus

Tobi
Tobi

Wen es interessiert, leerzeichen, Ausrufezeichen und Fragezeichen angezeigt zu bekommen, hier quick & dirty https://pastebin.com/hLRkjSGj

amueller
amueller

Danke für den Hinweis :-)

Zeige 1 bis 6 von 9 (2 Seite(n))
Einen Kommentar hinterlassen
Anmerkung: HTML wird nicht unterstützt!