7-Segmentanzeige (2)

Einfacher, als die unter 7-Segmentanzeige (1) beschriebene Anzeige  - weil bereits fertig aufgebaut - ist die Nutzung einer 7-Segmentanzeige, wie ich sie z.B. von der Firma Sparkfun Hersteller-Nr. COM-1144x verwende. Die Anzeige besteht aus einer 4-stelligen 7-Segment-Anzeige mit einem integrierten Atmega328 Mikrocontroller auf der Rückseite des Breakout Boards und kann über I2C, SPI oder über die serielle Schnittstelle angesteuert werden. Erhältlich ist die Anzeige in mehreren Farben.

  

Bild: 4-stellige 7-Segmentanzeige von der Firma Sparkfun, Hersteller-Nr. COM-1144x, die z.B. über die Firma EXP GmbH (www.exp-tech.de) zum Preis von ca. 15,- € (05/2019) bezogen werden kann.

Testaufbau:

Verwendete Bauteile und Komponenten:

  • 1 Arduino Uno
  • 1 4-stellige 7-Segmentanzeige Sparkfun COM-1144x
  • 2 Widerstände 10 kOhm

optional:

  • 1 Resettaster (für 7-Segmentanzeige)


Verwendete Anschlüsse der 7-Segmentanzeige:

  • VCC (2,4 V - 6 V)
  • GND
  • RST (Reset, zum Rücksetzen des in der Anzeige integrierten Atmega328 Mikrocontrollers)
  • SDA
  • SLC


Library MySparkfun7SegI2C

Sowohl für Arduino als auch für Attiny (7-Segm.anz. für Attiny (2)) habe ich für diese Anzeige Libraries für I2C-Ansteuerung mit folgenden Funktionen geschrieben:


  • Abfrage, ob die Anzeige über I2C ansprechbar ist
  • Ändern des Helligkeitswertes der Anzeige
  • Dunkelsetzen der gesamten Anzeige
  • Abfrage ob Anzeige dunkel gesetzt ist
  • Segmenttest, alle Segmente leuchten 1 Sekunde
  • Anzeigen eines gerundeten Fließkommawertes (angezeigt werden immer 4 Digits) mit Overflowanzeige "oFL" bei Bereichsüber- oder -unterschreitung
  • Beliebige Anzeige von Ziffern und Komma
  • Anzeigen eines Festkommawertes, mit Angabe der Anzahl der Kommastellen und mit oder ohne Vornullenunterdrückung. Rundung muss im aufrufenden Programm erfolgen. Overflowanzeige "oFL" bei Bereichsüber- oder -unterschreitung
  • Anzeigen von zwei zu übergebenden Zahlen im Uhrzeitformat (entweder Stunde:Minute oder Minute:Sekunde)
  • Ausgabe von 4 einzelnen Zeichen (Buchstaben, soweit darstellbar und Ziffern)
  • Ausgabe eines Textstrings (max. 4 Buchstaben, soweit darstellbar und Ziffern)


I2C-Adresse:

Die I2C-Adresse ist standardmäßig 0x71 und kann softwaremäßig auf 0x01 bis 0x7E eingestellt werden.


Die Library kann hier heruntergeladen werden:

Sollte die Library jemand verwenden oder testen, würde ich mich über eine Rückmeldung sehr freuen!

Version 1.6

MySparkfun7SegI2C.cpp.txt

MySparkfun7SegI2C.h.txt

keywords.txt

Leider kann ich hier keine "cpp"- oder "h"-Files hochladen, daher zum Verwenden der Library ".txt" aus den Dateinamen entfernen und in einem neuen Verzeichnis mit dem Namen "MySparkfun7SegI2C" dort speichern, wo eure anderen Libraries gespeichert sind.


Zur Auflistung der Funktionen der Library geht es hier: Funktionen

 

Programmbeispiel MySparkfun7SegI2C:

#include <MySparkfun7SegI2C.h>
#include <Wire.h>

MySparkfun7SegI2C My7S(0x71);

void setup()
{

  Serial.begin(115200);

  if(My7S.isReady()) Serial.println("7-Segmentanzeige vorhanden");
  My7S.sendBlank(); //Dunkelsetzen der Anzeige
  delay(1000);
}

void loop()
{
  //Ausgabe eines Float-Wertes
  float FloatWert = 43.45;
  My7S.sendFloatVal(FloatWert); //Ausgabe der Float-Zahl "FloatWert"
  delay(1000);

  //Ausgabe eines Festkomma-Wertes
  int IntWert = 2345;
  byte dezStellen = 1; //Ausgabe mit einer Dezimalstelle
  bool blankZero = true; //Vornullen unterdrücken
  My7S.sendFixedVal(IntWert, dezStellen, blankZero);
  delay(1000);

  //Ausgabe von Zeichen (Zahlen + Buchstaben)
  My7S.sendChar('A','b',' ','d');
  delay(1000);

  //Ausgabe eines Textstrings (Zahlen + Buchstaben)
  String Text = "1AnE"; //Dieser Textstring soll angezeigt werden
  char string[5];
  Text.toCharArray(string, 5); //Umwandlung des Strings in ein Character-Array
  My7S.sendString(string);
  delay(1000);
}