Suchcode

Verwendung von zwei weiteren TM1637 4-stelligen LED-Displays mit Arduino

Verwendung von zwei weiteren TM1637 4-stelligen LED-Displays mit Arduino

Haben Sie jemals benötigt, in Ihrem Arduino-Projekt gleichzeitig zwei unterschiedliche Werte anzuzeigen? Vielleicht bauen Sie eine Wetterstation, die sowohl Temperatur als auch Luftfeuchtigkeit anzeigen muss, oder ein Stromversorgungsmonitor, der Spannung und Strom gleichzeitig anzeigt. Die Verwendung von zwei TM1637 4-stelligen LED-Displays ist eine einfache und kostengünstige Lösung. Dieser Leitfaden zeigt Ihnen, wie Sie zwei dieser beliebten Displays mit einem einzigen Arduino-Board anschließen und programmieren können, sodass Sie die Möglichkeit haben, unabhängige Informationen auf jedem Bildschirm anzuzeigen. Sie können diese Technik für eine Vielzahl von Projekten verwenden, wie z. B.:

  • Bauen eines Dual-Channel-Voltmeters zur Überwachung von zwei getrennten Spannungsversorgungen.
  • Erstellen Sie einen Countdown-Timer und einen Runden-Zähler für Ihr nächstes Rennprojekt.
  • Anzeige der aktuellen Uhrzeit auf einem Display und der Umgebungstemperatur auf dem anderen.
  • Erstellen einer Punktetafel für Zwei-Spieler-Spiele.

In diesem Tutorial verbinden wir zwei TM1637-Module mit einem Arduino Uno und führen ein Demosketch aus, das unterschiedliche Werte auf jedem Display anzeigt. Der TM1637 verwendet eine Zweidrahtschnittstelle (CLK und DIO), was bedeutet, dass das Hinzufügen eines zweiten Displays nur zwei zusätzliche digitale Pins auf Ihrem Arduino erfordert. Lassen Sie uns anfangen! (im Video bei 00:00)

Benötigte Hardware

  • Arduino Uno (oder ein kompatibles Board)
  • 2x TM1637 4-stellige 7-Segment-LED-Display-Module
  • Jumperdrähte
  • Brotbrett (optional, aber hilfreich für Prototyping)

Verdrahtungsanleitung

Das Verbinden der Anzeigen ist einfach. Das TM1637-Modul hat vier Pins: VCC, GND, DIO (Daten) und CLK (Takt). Beide Anzeigen teilen sich die 5V- und GND-Verbindungen vom Arduino, benötigen jedoch jeweils eigene dedizierte Pins für DIO und CLK. Dadurch kann der Arduino sie unabhängig steuern. (im Video bei 01:26)

Hier ist das Schaltbild für das Projekt:

Für das erste Display (das größere blaue Modul im Video) stellen Sie die folgenden Verbindungen her:

  • VCCzu Arduino5V
  • GNDzu ArduinoGND
  • DIOzu Arduino Digital-Pin11
  • CLKzum Arduino-Digitalpin10

Für das zweite Display (das kleinere Modul) schließen Sie es wie folgt an:

  • VCCzu Arduino5V
  • GNDzu ArduinoGND
  • DIOzu Arduino digitalen Pin6
  • CLKzum Arduino-Digitalpin5

Denke daran, dass der Code und die Bibliothek für die größeren und kleineren TM1637-Module gleich funktionieren. (im Video um 01:00)

Code-Erklärung

Der Code verwendet dieTM1637DisplayBibliothek, die Sie installieren müssen. Sie können dies tun, indem Sie zuSkizze > Bibliothek einfügen > Bibliotheken verwaltenim Arduino IDE nach "TM1637" suchen. Der Code definiert die Pins für jedes Display und erstellt zwei Objekte, um sie zu steuern. Schauen wir uns die wichtigsten Teile an, die Sie für Ihren eigenen Gebrauch konfigurieren müssen. (im Video bei 02:31)

Zuerst die Pinbelegungen für jedes Display-Modul. Sie müssen diese ändern, um sie an Ihre Verkabelung anzupassen:

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

Nächste, dieTEST_DELAYDie Variable steuert, wie lange jede Testsequenz angezeigt wird. Sie können dies anpassen, um die Demonstration zu beschleunigen oder zu verlangsamen:

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000

Der Hauptteil des Codes verwendet dieshowNumberDec()funktion. Diese Funktion hat vier Argumente: die anzuzeigende Zahl, ob führende leere Ziffern mit Nullen aufgefüllt werden sollen, wie viele Ziffern verwendet werden sollen und die Startposition der Zahl auf dem Display. Zum Beispiel,display1.showNumberDec(23, false, 2, 0)zeigt die Zahl "23", beginnend an Position 0. Durch Ändern des letzten Arguments auf 1, 2 oder 3 können Sie die Zahl über das Display verschieben. (im Video um 05:23)

Um einen dritten Bildschirm hinzuzufügen, kopieren Sie einfach den Codeblock für einen Bildschirm, ändern Sie alle "2" in "3" und weisen Sie zwei neue Pins für die CLK- und DIO-Verbindungen des neuen Moduls zu. (im Video bei 03:58)

Live-Projekt-Demonstration

Sobald Sie den Code hochgeladen haben, sehen Sie, wie sich die beiden Displays einschalten und ihre Bildschirme löschen. Die Demonstration führt dann eine Reihe von Tests durch, um zu zeigen, wie jedes Display unabhängig gesteuert werden kann. Zuerst werden die Zahlen "23" und "34" auf den beiden Displays angezeigt. Der Code wechselt dann zwischen den verschiedenen Positionen dieser Zahlen auf dem 4-stelligen Display (Position 0, 1, 2 und 3). Danach werden die größeren Zahlen "741" und "1562" angezeigt. Schließlich wird eine Zählerschleife von 0 bis 1273 auf beiden Displays gleichzeitig ausgeführt. Dies demonstriert die volle Funktionalität der Nutzung von zwei Displays in einem einzigen Projekt. (im Video bei 05:01)

Kapitel

  • Einführung in die Verwendung von zwei TM1637-Displays
  • [01:26] Die Displays mit dem Arduino verkabeln
  • [02:31] Den Code erklären
  • [05:01] Demonstration der Displays in Aktion

Bilder

Verwendung von zwei weiteren TM1637 4-stelligen LED-Anzeigetafeln
Verwendung von zwei weiteren TM1637 4-stelligen LED-Anzeigetafeln
168-Using two more TM1637 4-digit LED displays
Sprache: C++
/*
 * Original code from https://github.com/avishorp/TM1637
 * Modified for Robojax video on October 28, 2018 at 15:05
 * This is an Arduino sketch to use two or more TM1637 seven-segment LED displays
 * 
 * Watch video instruction for this code:https://youtu.be/27KjMfPH1dk
 * 
 * by Ahmad Shamshiri, in Ajax, Ontario, Canada
 * 
 *  display2.showNumberDec(23, true, 2,1);
 *  showNumberDec(arg1, arg2, arg3, arg4);
 *  arg1 is the number to be displayed
 *  arg2 can be 'true' or 'false' and if true it fills empty spots with data[]
 *  arg4 position of starting number on the display can be either 0, 1, 2 or 3
 */
#include <Arduino.h>
#include <TM1637Display.h>

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000


TM1637Display display1(CLK1, DIO1);// define display 1 object
TM1637Display display2(CLK2, DIO2);// define display 1 object

   uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };  // all segments clear    
   
void setup()
{
  // Robojax.com two or more TM1637 Display 20181029  
  display1.setBrightness(0x0f);// set brightness of display 1
  display2.setBrightness(0x0f);// set brightness of display 1  

 
  display1.setSegments(data);// fill display 1 with whatever data[] array has
  display2.setSegments(data);// // fill display 2 with whatever data[] array has  
// Robojax.com two or more TM1637 Display 20181029  
}

void loop()
{
 // Robojax.com two or more TM1637 Display 20181029
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,0);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,0);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
  
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,1);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,1);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,2);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,2);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,3);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,3);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds    
/////////////////////////////////////////////////
  display1.setSegments(data);// fill(clear) display with data[] array
  display1.showNumberDec(741);// display 1

  display2.setSegments(data);// fill(clear) display with data[] array  
  display2.showNumberDec(1562);// display 2
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds

// Robojax.com two or more TM1637 Display 20181029 
/////////////////////////////////////////////////
   display1.setSegments(data);// fill(clear) display 1 with data[] array
   display2.setSegments(data);// fill(clear) display 2 with data[] array   
  for(int i=0; i<=1273; i++)
  {
    display1.showNumberDec(i);// display from 0 to 1273 to display 1
    display2.showNumberDec(i);// display from 0 to 1273 to display 2    
  }
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds


// Robojax.com two or more TM1637 Display 20181029
  
}// loop end

Dinge, die Sie vielleicht brauchen

Dateien📁

Arduino-Bibliotheken (zip)

Fritzing-Datei

|||Benutzerhandbuch