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