Vierstellige Siebensegmentanzeige Arduino anschließen & verwenden

Die vierstellige Sieben-Segment-LED von Arduino wird verwendet, um Zähler oder Timer auf dem Arduino zu erstellen und um numerische Werte von Sensoren in kompletten Projekten auszugeben. Schauen wir uns die Pinbelegung der vierstelligen LED an, wie man das Modul an das Arduino-Board anschließt und schauen wir uns einige Beispiele für die Steuerung der LED durch den Mikrocontroller mit detaillierten Programmbeschreibungen an.




Bestandteile:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • Vierstellige Siebensegmentanzeige
  • Widerstände und Taste
  • Breadboard
  • Dupont-Kabel
  • Bibliothek TimerOne.h

Die Pinbelegung der vierstelligen Anzeigesegmente unterscheidet sich nicht von der einstelligen Arduino-Sieben-Segment-Anzeige. Das Modul unterscheidet sich in der Anzahl der Ziffern (Symbole) – jede Ziffer wird durch Abschalten der Stromversorgung von der entsprechenden Kathode aktiviert. Daher sind alle LEDs desselben Segments in den Ziffern des Moduls (z. B. A-A-A-A) parallel an eine gemeinsame Kathode angeschlossen.

4-Digit 7-Segment Display Arduino pinout, datasheet

4-Digit 7-Segment Display Arduino pinout, datasheet

Merkmale des Vierstellige Siebensegmentanzeige (datasheet)

  • Versorgungsspannung: 5V
  • Abmessungen: 50 x 19 x 7,8 mm

Das Problem beim Anschluss des Indikators an den Arduino ist, dass er viele Pins auf der Platine gleichzeitig verwendet. Außerdem kann immer nur eine Ziffer auf dem Indikator angezeigt werden. Daher ist es notwendig, die gewünschte Ziffer auf jeder Stelle in einer sehr kurzen Zeit auszugeben. Das menschliche Auge nimmt die Umschaltung nicht wahr, und es sieht so aus, als würden alle Ziffern gleichzeitig aufleuchten.

Wie man einen 4-digit Display an einen Arduino anschließt

Wie man einen 4-digit Display an einen Arduino anschließt

Im ersten Beispiel werden wir ein einfaches Programm demonstrieren, damit Sie klar verstehen können, wie eine 4-stellige 7-Segment-Anzeige zum Arduino funktioniert. Der Anschlussplan der Anzeige an den Mikrocontroller ist im obigen Diagramm dargestellt, aber im ersten Beispiel werden nicht alle Pins des Arduino im Programm verwendet. Schließen Sie die 4-stellige Anzeige an das Board an und laden Sie den folgenden Code.

Programm für Vierstellige Siebensegmentanzeige Arduino




#define g  11
#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

void setup() {
  pinMode(g, OUTPUT);
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);

  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);

  digitalWrite(g, HIGH);
  delay(1000);
}

void loop() {
  digitalWrite(d1, LOW);
  digitalWrite(d4, HIGH);
  delay(200);
  digitalWrite(d2, LOW);
  digitalWrite(d1, HIGH);
  delay(200);
  digitalWrite(d3, LOW);
  digitalWrite(d2, HIGH);
  delay(200);
  digitalWrite(d4, LOW);
  digitalWrite(d3, HIGH);
  delay(200);
}
  1. In der Schleife void setup haben wir an die vier Ziffern der LED-Anzeige eine Spannung angelegt, damit sie beim Programmstart zunächst nicht leuchten;
  2. In der Schleife void loop schalten wir die Ziffern nacheinander ein (das Einschalten erfolgt im Modus LOW), während das Segment G immer eingeschaltet bleibt.

4-stelligen Display Arduino anschließen & verwenden

4-stelligen 7-Segment Display Arduino

Im folgenden Beispiel werden wir eine Schaltung bauen – einen Arduino-Timer mit einer vierstelligen Sieben-Segment-Anzeige auf LEDs. Bevor Sie den Sketch laden, müssen Sie die Uhrentaste an Pin A0 anschließen und die Bibliothek in der Arduino IDE TaimerOne.h installieren. Der Timer startet nur, wenn der Knopf gedrückt wird, und wenn der Knopf losgelassen wird, stoppt der Timer und wird zurückgesetzt, wenn er erneut gedrückt wird.

Programm für Timer auf einer 4-stelligen 7-Segment Display

#include "TimerOne.h"
#define a 5
#define b 6
#define c 7
#define d 8
#define e 9
#define f 10
#define g 11

#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

long n = 0;
int x = 100;
int count = 0;

void setup() {
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);

  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  
  pinMode(A0, INPUT);

  Timer1.initialize(100000);
  Timer1.attachInterrupt( add );
}

void loop() {
  while (digitalRead(A0) == LOW) {
    clearLEDs();
    pickDigit(0);
    pickNumber((n / 1000));
    delay(5);

    clearLEDs();
    pickDigit(1);
    pickNumber((n % 1000) / 100);
    delay(5);

    clearLEDs();
    pickDigit(2);
    pickNumber(n % 100 / 10);
    delay(5);

    clearLEDs();
    pickDigit(3);
    pickNumber(n % 10);
    delay(5);
  }
  if (digitalRead(A0) == HIGH) { n = 0; count = 0; }
}

void pickDigit(int x) {
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
  switch (x) {
    case 0: digitalWrite(d1, LOW);  break;
    case 1: digitalWrite(d2, LOW);  break;
    case 2: digitalWrite(d3, LOW);  break;
    default: digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) {
  switch (x) {
    default: zero();   break;
    case 1: one();     break;
    case 2: two();     break;
    case 3: three();  break;
    case 4: four();    break;
    case 5: five();     break;
    case 6: six();       break;
    case 7: seven(); break;
    case 8: eight();  break;
    case 9: nine();   break;
  }
}

void clearLEDs() {
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void zero() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}

void one() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void two() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void three() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void four() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void five() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void six() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void seven() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void eight() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void nine() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void add() {
  count ++;
  if (count == 10) {
    count = 0;  n++;
    if (n == 10000) { n = 0; }
  }
}
  1. Wenn die Schaltfläche nicht angeschlossen ist, beginnt der Timer, sobald der Code geladen ist;
  2. Die Prozedur void add zählt die Sekunden. Wenn die erste Stelle des vierstelligen Arduino-Indikators überläuft (die variable Anzahl wird größer als 9) – wird der Zähler um eins erhöht.

Schlussfolgerung. Wenn unser Projekt darauf abzielt, die Temperatur oder die Uhrzeit auf einem Gerät anzuzeigen, benötigen wir eine mehrstellige Anzeige oder mehrere einstellige Geräte. Eine 7-Segment-Anzeige kann die Zahlen von 0 bis 9 und einige Buchstaben darstellen, wobei Groß- und Kleinbuchstaben gemischt werden können.

5/5 - (1 vote)


Schreibe einen Kommentar

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