Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Projekt: Temperaturanzeige auf einer 8×8 LED Matrix

Posted on 16. Juni 20185. März 2024 by Stefan Draeger

In diesem Tutorial möchte ich gerne ein kleines Projekt über die Temperaturanzeige in Grad Celsius auf fünf 8×8 LED Matrixen vorstellen.

LED Matrix Anzeige & Temperatursensor DS18B20 am Arduino UNO
Dieses Video auf YouTube ansehen.

  • Komponenten für den Aufbau
  • Aufbau
  • Zusammenbau
  • Quellcode
  • Download

Komponenten für den Aufbau

  • Arduino UNO*,
  • 5x 8×8 LED Matrix*,
    • oder einfacher als 1 Modul jedoch nur mit 4 Feldern*,
  • 1x Temperatursensor DS18B20*,
  • 1x 4,7 kOhm Widerstand*,
  • Breadboard*,
  • Breadboardkabel*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Aufbau

MAX7219 und Temperatursensor DS18B20 am Arduino UNO
MAX7219 und Temperatursensor DS18B20 am Arduino UNO
MAX7219Arduino UNO
VCC5V
GNDGND
DINdigitaler PIN D8
CSdigitaler PIN D9
CLKdigitaler PIN D10
DS18B20Arduino UNO
VCC5V
DATAdigitaler PIN D2
GNDGND
 

Zusammenbau

Die Module können beliebig lang verbunden werden.

Die Grenzen sind der maximal verfügbare Strom sowie natürlich das Datenfeld (Integer – 32,767) für die Übergabe der Anzahl der Module.

Wenn man nun wie ich es getan habe 5 Module hintereinander (kaskadierend) verdrahtet so erhält man ein ziemliches Durcheinander.

5x MAX7219 verwirrt
5x MAX7219 verwirrt

Diesem durcheinander kann man nur mit festkleben oder anschrauben entgegenwirken.

Ich habe mir ein Stativ aus Holz erstellt, somit kann ich später diese Module noch vielseitig anders verwenden.

MAX7219 Shields auf einem Stativ
MAX7219 Shields auf einem Stativ

Quellcode

Der Quellcode ist ein „Mix“ aus den bereits vorgestellten Tutorials Arduino Lektion 8: Max7219 8×8 LED Shield und Arduino Projekt: LED Matrix Uhr.

//Die MaxMatrix Bibliothek
#include <MaxMatrix.h>
#include <avr/pgmspace.h>
//Ausgelagerte CHAR Arrays damit dieser Code übersichtlicher bleibt.
#include "statics.h"

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 2  //Sensor DS18B20 am digitalen Pin 2
 
OneWire oneWire(ONE_WIRE_BUS); //
DallasTemperature sensors(&oneWire);

int data = 8;    // DIN Pin vom MAX7219 Shield
int load = 9;    // CS Pin vom MAX7219 Shield
int clock = 10;  // CLK Pin vom MAX7219 Shield

int maxInUse = 5;    //Dieser Wert bestimmt wieviele MaxMatrix Shields hintereinander (kaskadiert) verwendet werden.

MaxMatrix m(data, load, clock, maxInUse); // Definiert nun ein Objekt der Klasse MaxMatrix.

void setup(){
  m.init(); // Das Max7219 initialisieren.
  m.setIntensity(1); // LED Leucht intensität, Werte von 0-15 sind hier erlaubt.
  Serial.begin(9600); // Übertragungsgeschwindigeit der seriellen Verbindung
}

void loop(){
  char bu[100];
  String msg = "Temperatur ";
  msg+=String(getTemperatur(),2);
  msg+="C ";
  
  msg.toCharArray(bu,100);
   printStringWithShift(bu, 35); //Schreibt die Message auf die Max LED Matrix, mit einer wiederholungsgeschwindigkeit von 75ms.
}

float getTemperatur(){ 
 sensors.begin(); //Starten der Kommunikation mit dem Sensor
 sensors.requestTemperatures(); 
 float value = sensors.getTempCByIndex(0);
 Serial.println(value);
 return value;
} 

void printCharWithShift(char c, int shift_speed){
  if (c < 32) return;
  c -= 32;
  byte buffer[100];
  memcpy_P(buffer, CH + 7*c, 7);
  m.writeSprite(32, 0, buffer);
  m.setColumn(32 + buffer[0], 0);
  
  for (int i=0; i<buffer[0]+1; i++) 
  {
    delay(shift_speed);
    m.shiftLeft(false, false);
  }
}

void printStringWithShift(char* s, int shift_speed){
  while (*s != 0){
    printCharWithShift(*s, shift_speed);
    s++;
  }
}

Die externe Datei „statics.h“ enthält die Byte Werte für die LED Matrix.

Ich habe diese Werte ausgelagert da das sonst den Quellcode unnötig aufblähen würde.

PROGMEM const unsigned char CH[] = {
3, 8, B0000000, B0000000, B0000000, B0000000, B0000000, // space
1, 8, B1011111, B0000000, B0000000, B0000000, B0000000, // !
3, 8, B0000011, B0000000, B0000011, B0000000, B0000000, // "
5, 8, B0010100, B0111110, B0010100, B0111110, B0010100, // #
4, 8, B0100100, B1101010, B0101011, B0010010, B0000000, // $
5, 8, B1100011, B0010011, B0001000, B1100100, B1100011, // %
5, 8, B0110110, B1001001, B1010110, B0100000, B1010000, // &
1, 8, B0000011, B0000000, B0000000, B0000000, B0000000, // '
3, 8, B0011100, B0100010, B1000001, B0000000, B0000000, // (
3, 8, B1000001, B0100010, B0011100, B0000000, B0000000, // )
5, 8, B0101000, B0011000, B0001110, B0011000, B0101000, // *
5, 8, B0001000, B0001000, B0111110, B0001000, B0001000, // +
2, 8, B10110000, B1110000, B0000000, B0000000, B0000000, // ,
4, 8, B0001000, B0001000, B0001000, B0001000, B0000000, // -
2, 8, B1100000, B1100000, B0000000, B0000000, B0000000, // .
4, 8, B1100000, B0011000, B0000110, B0000001, B0000000, // /
4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // 0
3, 8, B1000010, B1111111, B1000000, B0000000, B0000000, // 1
4, 8, B1100010, B1010001, B1001001, B1000110, B0000000, // 2
4, 8, B0100010, B1000001, B1001001, B0110110, B0000000, // 3
4, 8, B0011000, B0010100, B0010010, B1111111, B0000000, // 4
4, 8, B0100111, B1000101, B1000101, B0111001, B0000000, // 5
4, 8, B0111110, B1001001, B1001001, B0110000, B0000000, // 6
4, 8, B1100001, B0010001, B0001001, B0000111, B0000000, // 7
4, 8, B0110110, B1001001, B1001001, B0110110, B0000000, // 8
4, 8, B0000110, B1001001, B1001001, B0111110, B0000000, // 9
2, 8, B01010000, B0000000, B0000000, B0000000, B0000000, // :
2, 8, B10000000, B01010000, B0000000, B0000000, B0000000, // ;
3, 8, B0010000, B0101000, B1000100, B0000000, B0000000, // <
3, 8, B0010100, B0010100, B0010100, B0000000, B0000000, // =
3, 8, B1000100, B0101000, B0010000, B0000000, B0000000, // >
4, 8, B0000010, B1011001, B0001001, B0000110, B0000000, // ?
5, 8, B0111110, B1001001, B1010101, B1011101, B0001110, // @
4, 8, B1111110, B0010001, B0010001, B1111110, B0000000, // A
4, 8, B1111111, B1001001, B1001001, B0110110, B0000000, // B
4, 8, B0111110, B1000001, B1000001, B0100010, B0000000, // C
4, 8, B1111111, B1000001, B1000001, B0111110, B0000000, // D
4, 8, B1111111, B1001001, B1001001, B1000001, B0000000, // E
4, 8, B1111111, B0001001, B0001001, B0000001, B0000000, // F
4, 8, B0111110, B1000001, B1001001, B1111010, B0000000, // G
4, 8, B1111111, B0001000, B0001000, B1111111, B0000000, // H
3, 8, B1000001, B1111111, B1000001, B0000000, B0000000, // I
4, 8, B0110000, B1000000, B1000001, B0111111, B0000000, // J
4, 8, B1111111, B0001000, B0010100, B1100011, B0000000, // K
4, 8, B1111111, B1000000, B1000000, B1000000, B0000000, // L
5, 8, B1111111, B0000010, B0001100, B0000010, B1111111, // M
5, 8, B1111111, B0000100, B0001000, B0010000, B1111111, // N
4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // O
4, 8, B1111111, B0001001, B0001001, B0000110, B0000000, // P
4, 8, B0111110, B1000001, B1000001, B10111110, B0000000, // Q
4, 8, B1111111, B0001001, B0001001, B1110110, B0000000, // R
4, 8, B1000110, B1001001, B1001001, B0110010, B0000000, // S
5, 8, B0000001, B0000001, B1111111, B0000001, B0000001, // T
4, 8, B0111111, B1000000, B1000000, B0111111, B0000000, // U
5, 8, B0001111, B0110000, B1000000, B0110000, B0001111, // V
5, 8, B0111111, B1000000, B0111000, B1000000, B0111111, // W
5, 8, B1100011, B0010100, B0001000, B0010100, B1100011, // X
5, 8, B0000111, B0001000, B1110000, B0001000, B0000111, // Y
4, 8, B1100001, B1010001, B1001001, B1000111, B0000000, // Z
2, 8, B1111111, B1000001, B0000000, B0000000, B0000000, // [
4, 8, B0000001, B0000110, B0011000, B1100000, B0000000, // backslash
2, 8, B1000001, B1111111, B0000000, B0000000, B0000000, // ]
3, 8, B0000010, B0000001, B0000010, B0000000, B0000000, // hat
4, 8, B1000000, B1000000, B1000000, B1000000, B0000000, // _
2, 8, B0000001, B0000010, B0000000, B0000000, B0000000, // `
4, 8, B0100000, B1010100, B1010100, B1111000, B0000000, // a
4, 8, B1111111, B1000100, B1000100, B0111000, B0000000, // b
4, 8, B0111000, B1000100, B1000100, B0101000, B0000000, // c
4, 8, B0111000, B1000100, B1000100, B1111111, B0000000, // d
4, 8, B0111000, B1010100, B1010100, B0011000, B0000000, // e
3, 8, B0000100, B1111110, B0000101, B0000000, B0000000, // f
4, 8, B10011000, B10100100, B10100100, B01111000, B0000000, // g
4, 8, B1111111, B0000100, B0000100, B1111000, B0000000, // h
3, 8, B1000100, B1111101, B1000000, B0000000, B0000000, // i
4, 8, B1000000, B10000000, B10000100, B1111101, B0000000, // j
4, 8, B1111111, B0010000, B0101000, B1000100, B0000000, // k
3, 8, B1000001, B1111111, B1000000, B0000000, B0000000, // l
5, 8, B1111100, B0000100, B1111100, B0000100, B1111000, // m
4, 8, B1111100, B0000100, B0000100, B1111000, B0000000, // n
4, 8, B0111000, B1000100, B1000100, B0111000, B0000000, // o
4, 8, B11111100, B0100100, B0100100, B0011000, B0000000, // p
4, 8, B0011000, B0100100, B0100100, B11111100, B0000000, // q
4, 8, B1111100, B0001000, B0000100, B0000100, B0000000, // r
4, 8, B1001000, B1010100, B1010100, B0100100, B0000000, // s
3, 8, B0000100, B0111111, B1000100, B0000000, B0000000, // t
4, 8, B0111100, B1000000, B1000000, B1111100, B0000000, // u
5, 8, B0011100, B0100000, B1000000, B0100000, B0011100, // v
5, 8, B0111100, B1000000, B0111100, B1000000, B0111100, // w
5, 8, B1000100, B0101000, B0010000, B0101000, B1000100, // x
4, 8, B10011100, B10100000, B10100000, B1111100, B0000000, // y
3, 8, B1100100, B1010100, B1001100, B0000000, B0000000, // z
3, 8, B0001000, B0110110, B1000001, B0000000, B0000000, // {
1, 8, B1111111, B0000000, B0000000, B0000000, B0000000, // |
3, 8, B1000001, B0110110, B0001000, B0000000, B0000000, // }
4, 8, B0001000, B0000100, B0001000, B0000100, B0000000, // ~
};

Download

Hier das gesamte Projekt zum Download.

Arduino Projekt: Temperaturanzeige auf einer 8×8 LED MatrixHerunterladen

8 thoughts on “Arduino Projekt: Temperaturanzeige auf einer 8×8 LED Matrix”

  1. pascual sagt:
    10. Oktober 2019 um 15:19 Uhr

    Arduino Projekt: Temperaturanzeige auf einer 8×8 LED Matrix. Hola quiero montar tu circuito pero solo quiero poner 4 displays  8×8 led Matrix MAX7219 , mi pregunta es  , si el sketch es el mismo o hay que modificarlo , es que no se de  programaciòn .Un saludo

    Antworten
    1. Sv sagt:
      4. November 2019 um 22:07 Uhr

      I am using 4 in 2 module. Not able to rotate scrolling. Text is moving down.

      Antworten
  2. Jolo55 sagt:
    20. Februar 2020 um 11:05 Uhr

    Funktioniert nicht ! 90 Grad alles verdreht! Gruss!

    Antworten
    1. Stefan Draeger sagt:
      20. Februar 2020 um 19:31 Uhr

      Hi,

      schade das es bei dir nicht funktioniert aber wenn es verdreht ist wird wohl die Richtung der Module nicht stimmen.

      Gruß,

      Stefan

      Antworten
  3. Franz sagt:
    4. Mai 2021 um 13:19 Uhr

    Hi,
    größten Dank für das Projekt.
    Ich habe die 4 Segmente auf einer Platine.
    Allerdings läuft die Temperatur jetzt Quer und nicht längs.
    Gibt es dazu eine Lösung?
    Größten Dank und Gruß Franz

    Antworten
    1. Stefan Draeger sagt:
      4. Mai 2021 um 13:24 Uhr

      Hi,

      welche Bibliothek verwendest du zum Programmieren?
      Ggf. muss man die „direction“ einstellen.

      Gruß,

      Stefan Draeger

      Antworten
      1. Franz sagt:
        4. Mai 2021 um 13:44 Uhr

        Ich verwende die MaxMatrix.
        Wie stellt man die direction um?
        Danke für deine Hilfe

        Antworten
  4. Preuß sagt:
    29. September 2021 um 13:51 Uhr

    Moin moin.

    Ich benutze ein Blaues 4x 8×8 (in eins) Modul MAX7219 1088AB mit der
    MAX_MATRIX.h
    und
    einem funktionierendem Sketch (DS3131 Uhr mit BT Steuerung)

    ALLes funktioniert, DS3231, BluetoothSteuerung und das Durchlaufen.
    ABER ich bekommenicht raus, wie ich es anstelle, das Text, Zeit und Temperatur
    wagerecht von rechts nach links läuft.

    Momentan läuft zwar alles von rechts nach links,
    ABER auf jedem der Vier um 90 Grad verdreht;-((

    Vielleicht könnten Sie noch einmal von Ihrer kostbaren Zeit etwas opfern
    und mir erneut auf die Sprünge helfen.

    Das wär toll.

    Mit freundlichem Gruß

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}