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....
16 Bemerkungen
Christoph
Christoph

Moin,

beim Hochladen des Sketches bekomme ich immer die Fehlermeldung "Fehler beim Kompilieren für das Board NodeMCU 1.0 (ESP-12E Module)"
Woran könnte das liegen?
Die Bespielsketche aus der Arduino IDE lassen sich problemlos hochladen.

Grüße Chris

elminister
elminister

Hallo zusammen,
ist alles schon ein bisschen älter hier aber eventuell hat ja doch noch einer eine Idee für mich.
Das funktioniert genau so wie ich es brauche.. allerdings hätte ich gerne eine Variable wo ich einstellen kann wie oft die Laufschrift sich wiederholen soll. Danach soll es schwarz bleiben..
Da ich absolut neu in Arduino bin, habe ich hier leider überhaupt keinen Anhaltspunkt.

Danke für die Hilfe!

Siggi
Siggi

Hallo Philipp, Danke für die super Anleitung. Es funktioniert alles ausgezeichnet. 2 Fragen hab ich:
1. Wo und wie kann ich Sonderzeichen (Smylies, Herz, Quadrat usw) z.Bsp. als Zeilenhexcode einfügen? In der "Adafruit_GFX.h" gehts ja nicht, da ich die Zeichen nicht ansteuern kann.
2. An welcher Stelle im Web-Interface kann ich die "font-family" vergrößern? Ich habe das mit "font-size" versucht aber nicht hinbekommen.
Danke im voraus
Siggi

Andreas
Andreas

Hallo Philipe,
besteht die Möglichkeit zusätzlich mqtt einbinden?

Norman
Norman

Vielen Dank für die Anleitung!
Das ist genau das was ich gesucht habe.
Hatte vor Weihnachten einen Counter laufen, wie viele Tage es bis Weihnachten sind und musste auf den Arduino Nano jeden Tag einen neuen Sketch hochladen.
So ist das viel komfortabler. Nochmals vielen Dank.

Freundliche Grüße
Norman

Björn
Björn

Aufgrund des Videos habe ich mir einen RSS-Newsticker gebaut...

mit 3x4x8x8 Modulen klappt es auch sehr gut...
Jetzt wollte ich ein zweizeiliges Display aufbauen, oben Datum und Uhrzeit der News, unten dann der Newsticker als Laufschrift...
Dafür wollte ich Zwei Reihen a 4 4er Module nehmen...
Leider kann ich bei
int numberOfHorizontalDisplays = xx;
nur bis zu 31 Module angeben, aber ich bräuchte 32 - bei 31 Modulen läuft es wunderbar, bei 32 Modulen zeigt es mir nur Unsinn an...

Was kann ich machen, das es auch mit 32 Modulen geht?

Gruß Björn

Carsten
Carsten

Hallo Björn,
hast du zufällig eine Lösung für dieses Problem gefunden?
würde ebenfalls gerne 32 Displays ansteuern ;)
Gruß Carsten

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