7-Segmentanzeige für Attiny (2)
Einfacher als die unter 7-Segm.anz. für Attiny (1) beschriebene, weil bereits fertig aufgebaut, ist die Verwendung einer 4-stelligen 7-Segmentanzeige von z.B. der Firma Sparkfun Hersteller-Nr. COM-1144x. Die Anzeige ist in mehreren Farben erhältlich (x... Farbcode) und kann über I2C, SPI oder serielle Schnittstelle angesteuert werden. Erhältlich ist die Anzeige z.B. über Firma EXP GmbH (https://www.exp-tech.de) zum Preis von 14,25 €.
Bild: SparkFun 7-Segmentanzeige im Einsatz, angesteuert von Atiny85
Testaufbau:
Verwendete Bauteile:
- 1 Attiny85
- 1 7-Segmentanzeige Sparkfun Hersteller-Nr. COM-1144x
- 1 Resettaster
- 2 Widerstände 10 kOhm
- 1 Programmierstecker 4-polig
- 1 Spannungsversorgung +5V
Verwendete Anschlüsse der 7-Segmentanzeige:
- VCC (2,4 V - 6 V)
- GND
- SDA
- SLC
Optional:
- RST (Reset, zum Rücksetzen des in der Anzeige integrierten Atmega328 Mikrocontrollers)
Library MyAttinySparkfun7SegI2C
Sowohl für Arduino (7-Segmentanzeige (2)) als auch für Attiny habe ich für diese Anzeige Libraries für I2C-Ansteuerung mit folgenden Funktionen geschrieben:
- Ä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
- Anzeigen eines positiven gerundeten Fließkommawertes (nur verwenden, wenn ausschließlich positive Zahlen vorkommen können. Es erfolgt keine Überwachung und Anzeige von Bereichsüber- oder -unterschreitung! => Speicherplatz-Sparvariante
- 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.
Attiny-Programmierung:
Wie man eine Attiny mit Hilfe eines Arduino programmiert findet ihr hier: Attiny-Programmierung
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.8
MyAttinySparkfun7SegI2C.cpp.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 "MyAttinySparkfun7SegI2C" dort speichern, wo eure anderen Libraries gespeichert sind.
Zur Auflistung der Funktionen der Library geht es hier: Funktionen
Zum Testen der Library kann z.B. auch ein Attiny45 (4 kByte Flashspeicher) verwendet werden. Die Verwendung der Funktion zur Anzeige einer Float-Zahl benötigt allerdings ca. 2 kByte Flashspeicher, so dass dann für das eigentliche Programm wenig Speicherplatz verbleibt. Daher besser einen Attiny85 mit 8 kByte Speicher verwenden!
Programmbeispiel MyAttinySparkfun7SegI2C:
#include <TinyWireM.h>
#include <MyAttinySparkfun7SegI2C.h>MyAttinySparkfun7SegI2C My7S(0x71);
void setup()
{
My7S.sendBlank(); //Dunkelsetzen der Anzeige
}void loop()
{
float FloatWert = 43.45;
My7S.sendFloatVal(FloatWert); //Ausgabe der Float-Zahl "FloatWert"delay(1000);
int IntWert = 345;
byte dezStellen = 1; //Ausgabe mit einer Dezimalstelle
bool blankZero = true; //Vornullen unterdrücken
My7S.sendFixedVal(IntWert, dezStellen, blankZero); //Ausgabe der Festkommazahldelay(1000);
}