7-Segmentanzeige von Sparkfun

Die 4-stellige 7-Segmentanzeige der Firma Sparkfun (www.sparkfun.com/products/11441) wird von einem - auf der Rückseite des Breakout Boards befindlichen - Atmega328 Mikrocontroller gesteuert und kann über die I2C-, SPI- oder Serielle Schnittstelle angesprochen werden. Die Anzeige ist in rot, blau und weiß erhältlich und kann z.B. über die Firma EXP GmbH (www.exp-tech.de) bezogen werden kann (Preis ca. € 15,-).

  

Bild: 4-stellige 7-Segmentanzeige von der Firma Sparkfun

Testaufbau mit Arduino:

Verwendete Bauteile und Komponenten:

  • 1 Arduino Uno oder Nano
  • 1 4-stellige 7-Segmentanzeige Sparkfun
  • 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 für Arduino und Attiny45/85

Sowohl für Arduino als auch für Attiny habe ich für diese Anzeige eine Library 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. Der nachfolgende kleine Sketch zeigt, wie man die I2C-Adresse von 0x71 auf z.B. 0x72 ändern kann.

#include <Wire.h>

void setup() {
  Wire.begin();
  Wire.beginTransmission(0x71); //Aktuelle I2C-Adresse
  Wire.write(0x80); //Kommandobyte für Adressaenderung
  Wire.write(0x72); //Neue I2C-Adresse
  Wire.endTransmission();
}

void loop() {
}


Die Library kann hier heruntergeladen werden:

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

Version 2.3 für Arduino und Attiny45/85

MySparkfun7SegI2C.cpp.txt

MySparkfun7SegI2C.h.txt

keywords.txt

Leider kann ich hier keine "cpp"- oder "h"-Files hochladen, daher zum Verwenden der Library das Suffix ".txt" aus diesen Dateinamen entfernen und in einem neuen Verzeichnis mit dem Namen "MySparkfun7SegI2C" im Sketchbook-Ordner im Ordner "libraries" speichern.


Zur Auflistung der Funktionen der Library geht es hier: Funktionen

 

Programmbeispiel MySparkfun7SegI2C:

Das Programmbeispiel gibt Zahlen und Zeichen am LED-Display aus.

//Testprogramm für Sparkfun 7-Segmentanzeige
//Code fuer Arduino und Attiny45/85
//Author Retian
//Version 1.0


#include <MySparkfun7SegI2C.h>
MySparkfun7SegI2C My7S(0x71);


void setup()
{
  My7S.sendBlank(); //Dunkelsetzen der Anzeige
  delay(1000);
  My7S.sendString("HALO");
  delay(3000);
}


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

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

  //Ausgabe von Zeichen (Zahlen + Buchstaben)
  My7S.sendChar('A','b','2','9');
  delay(2000);

  //Ausgabe eines Textstrings (Zahlen + Buchstaben)
  char text[5];
  strcpy(text, "1AnE"); //
  My7S.sendString(text);
  delay(2000);
}