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 ".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:

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);
}