TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
appendix

ANHANG: 7-SEGMENT DIGITALANZEIGE

 

 

BESCHAFFUNG UND ANSCHLUSS

 
Die Anzeigeeinheit verwendet den Treiberbaustein TM1637 und eine 4-stellige Siebensegmentanzeige mit einem Doppelpunkt  in der Mitte. Zur Ansteuerung sind neben der Stromversorgung mit 3V und GND  lediglich 2 Leitungen mit den Bezeichnungen Clock (CLK) und Data (DIO) nötig.  

Es wird ein spezielles Protokoll verwendet (ähnlich, aber nicht gleich wie I2C). Es gibt viele Bezugsquellen (Arduino/Raspberry Pi-Lieferanten, Seed/Grove, eBay, der Preis schwankt zwischen $1 und $10). Es ist darauf zu achten, dass das Display auf für 3V spezifiziert ist. Angeschlossen wird das Display am analogen Grove-Port.

Mit 7 Segmenten kann nur ein beschränkter Zeichensatz dargestellt  werden.

   
Zur Ansteuerung der Anzeige wird eine Pythonmodul cp7seg verwendet, das den Programmierer von der trickreichen Kommunikation mit der Anzeige isoliert und ihm einige einfache Darstellungsfunktionen zur Verfügung stellt (siehe API Dokumentation). Du kannst cp7seg.zip von hier hinunterladen. Es enthält cp7seg.py und eine Minimalversion cp7segmin.py, die du dann verwenden kannst, wenn du wegen der Programmgrösse den Fehler "memory allocation failed" kriegst.  Du musst das Modul dann im Menü von TigerJython unter Tools | Modul hinunterladen auf den Calliope kopieren.

 

 

TYPISCHE BEISPIELE

 

 


1. Von 0 bis 9999 hochzählen

Auf dem Display werden nacheinander die Zahlen von 0 bis 10 000 angezeigt. Die Methode show(text) kann direkt Integers anzeigen.

 
from calliope_mini import *
from cp7seg import *
 
for n in range(10000):
    show(n)
► In Zwischenablage kopieren

Du erkennst, dass für die Anzeige einer einzelnen Zahl ungefähr 30 ms benötigt wird. Mit einer Formatangabe, kannst du die Zahlen rechtsbündig ausschreiben: d.show("%4d" %n).


2. Die Beschleunigung anzeigen

Die Digitalanzeige wird vielfach eingesetzt, um Messwerte eines Sensors anzuzeigen, beispielweise die x-Komponente der Beschleunigung. Dazu pollst du in einer Endlosschleife den Sensorwert und schreibt in aus. Mit einem sleep() wählst du die Periode des Messzyklus, musst aber beachten, dass auch die anderen Aufrufe im Schleifenkörper Prozessorzeit benötigen.

from calliope_mini import *
from cp7seg import *
 
while True:
    acc = accelerometer.get_x()
    show(acc)
    sleep(100)
► In Zwischenablage kopieren

Für Dezimalzahlen wird zuerst mit einer Formatangabe eine vierziffrige Zahl mit 2 Dezimalstellen und Vornullen angefordert (in der Längenangabe wird der Dezimalpunkt mitgezählt). Dann  muss der Dezimalpunkt entfernt werden, da dieser ja mit dem Doppelpunkt simuliert wird. Im Programm wird die Beschleunigung in m/s2 ausgeschrieben.

from calliope_mini import *
from cp7seg import *
 
colon(True)
while True:
    acc = accelerometer.get_x() / 100
    v = "%05.2f" %acc
    v1 = v.replace(".", "")
    show(v1)
    sleep(100)
► In Zwischenablage kopieren


3. Scrolltext

Texte, die mehr als 4 Buchstaben enthalten, kannst du als Scrolltext anzeigen. Die Funktion scroll() muss du selbst programmieren.

from calliope_mini import *
from cp7seg import *

def scroll(text):
    text += "    "
    for i in range(len(text) - 3):
        show(text[i:i + 4])
        sleep(500)

scroll("Happy birthday")
► In Zwischenablage kopieren

 

 

11-1
Fachliche Hinweise:

Zeichensatz Siebensegmentanzeige:

Display-mapping.pdf