7-Segmentanzeige für Attiny

Die unter Projekt 7-Segmentanzeige (1) in der Variante 2 vorgestellte Schaltung kann auch mit einem Attiny-Mikrocontroller verwendet werden.

Testaufbau:

Für den Testaufbau habe ich folgende Teile verwendet:

Mikrocontroller:

  • 1 Attiny45/85
  • 1 LED
  • 1 Widerstand 220 Ohm
  • 1 Mikrotaster
  • 1 Steckerleiste 4-polig

7-Segmentanzeige:

  • 1 Portexpander PCF8574
  • 4 Schieberegister 74HC595
  • 32 Widerstände 220 Ohm
  • 4 7-Segmentanzeigen z.B. HDSP5503 (mit gemeinsamer Kathode)

Sonstiges:

  • Netzteil 5V


Library MyAttiny7SegI2C

Dafür bereits vorgestellte Library für den Arduino habe ich auch den für Attiny mit folgenden Funktionen angepasst:


  • Dunkelsetzen der gesamten Anzeige
  • Abfrage ob Anzeige dunkel gesetzt ist
  • Anzeigen eines gerundeten Fließkommawertes (angezeigt werden immer 4 Digits) für Attinys mit mindestens 8kB Speicher.
  • 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.
  • Anzeigen einzelner Segmente


Leider können derzeit bei der Anzeige von Fließkomma- und Festkommawertzahlen nur positive Zahlen ausgegeben werden. Die Ausgabe von negativen Zahlen werde ich irgendwann einmal noch ergänzen.

Die Library wurde mit einem Attiny85 getestet und sollte mit Attinys mit mind. 8kB Speicher funktionieren. Mit Einschränkung ist die Library auch mit einem Attiny mit 4kB Speicher verwendbar, zB. Attiny45, es muss aber auf die Funktion der Anzeige von Fließkommawerten verzichtet werden, da das bereits fast den ganzen 4kB-Speicher verbraucht.


Wie man einen Attiny mit Hilfe eines Arduino programmiert findet ihr hier: Attiny programmieren


Meine Library-Datei "MyAttiny7SegI2C" schicke ich gerne auf Anfrage per Email.


Programmbeispiel MyAttiny7SegI2C:

#include <TinyWireM.h>
#include <MyAttiny7SegI2C.h>

MyAttiny7SegI2C My7S(0x20);

void setup()
{
  My7S.sendBlank(); //Dunkelsetzen der Anzeige
}

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

}