Arduino Lektion 89: 4fach Segmentanzeige TM1636 / TM1637

In diesem Tutorial möchte ich eine einfache Lösung vorstellen wie man die 4fach Segmentanzeige TM1637 bzw. TM1636 ansteuern kann.

Diese beiden Segmentanzeigen sind zbsp. auf den Multifunktionalen Shields (RTC Shield und Rich Shield) von Open-Smart verbaut.

Nun möchte ich gerne vorstellen wie man diese beiden Segmentanzeigen ansteuern kann.
Auch für diese Segmentanzeigen gibt es eine Bibliothek welche wir zunächst einmal installieren müssen.

 

Auch wenn die Bibliothek die Bezeichnung TM1636 trägt funktioniert diese auch für den Chip TM1637.

Der Bibliothek liegen einige Beispiele bei. Aus genau so einem Beispiel habe ich mir eine Funktion abgeleitet um den Temperaturwert eines NTC Widerstandes auf der Segmentanzeige anzeigen zu lassen.

Temperaturanzeige des NTC-Widerstandes am RTC Shield von Open-Smart
Temperaturanzeige des NTC-Widerstandes am RTC Shield von Open-Smart

Da wir nicht nur Temperaturen anzeigen lassen wollen sondern auch zbsp. Uhrzeit, Werte eines Fotowiderstandes so benötigen wir jeweils eine andere Funktion jedoch immer mit den gleichen Konstanten. Daher habe ich mich einmal entschlossen eine kleine Bibliothek erstellen.

 

Funktionen

Die Bibliothek umfasst die Funktionen für das Anzeigen von Zahlen und Uhrzeiten.

getNumber(double value)

Die Funktion getNumber erhält als Parameter den Wert als Double welcher angezeigt werden soll. Zunächst einmal wird die Zahl in ein String umgewandelt (ohne Nachkommastellen).

Danach wird geprüft ob die Zahl kleiner als 1000 ist, wenn ja dann soll ein Leerzeichen an die erstelle Stelle des Arrays eingefügt werden.

Wenn die Zahl kleiner als 100 aber größer als 0 ist dann soll ein zusätzliches Leerzeichen eingefügt werden ansonsten ein Minuszeichen.

Nun muss noch die eigentliche Zahl in Ihre Bestandteile zerlegt werden. Dazu durchlaufen wir alle Stellen des Strings mit einer For-Schleife. Da Strings auch Steuerzeichen enthalten können müssen wir diese besondert behandeln. Dieses wird uns durch die Funktion „charAt“ erleichtert denn man erhält den ASCII Code zurück. Die Zahlen liegen im Bereich von 48 bis 57 d.h. wir brauchen nur prüfen ob der ASCII Code zwischen diesen beiden Werten liegt und nur dann fügen wir die Zahl in das Array ein.

Funktion „getNumber“

getTime(int hours, int minutes)

Da man mit einer 4fach 7 Segmentanzeige maximal Stunden & Minuten anzeigen kann, erhält die Funktion „getTime“ als Parameter die Werte für Stunden & Minuten.

Wenn gewünscht kann man auch Minuten & Sekunden übergeben.

Zunächst einmal werden die Zahlen wieder in Strings umgewandelt. Da wir hier mit Zeiteinheiten rechnen gibt es keine Kommastellen welche wir entfernen müssen.

Als nächstes prüfen wir ob die Stunde kleiner als 10 ist, wenn ja dann wird eine führende 0 in das Array eingefügt und an die zweite Stelle der Wert für die Stunde, andernfalls wird an der ersten bzw. zweiten Stelle die Zahl aus der Stunde eingesetzt.

Das gleiche wird auch mit den Werten für die Minuten gemacht.

Damit wir jedoch doppelten Code vermeiden möchten , erzeugen wir eine zusätzliche
Funktion „void convertNumbers(int number, int offset)“  welche die Zahl übergeben bekommt.

Da das Array welches die Zahlen für die spätere Anzeige enthält global definiert wurde müssen wir in der Funktion nichts zurück liefern. Jedoch müssen wir zusätzlich ein Offset übergeben damit wir die Funktion 2 mal aufrufen können und die Zahl an der korrekten Stelle eingetragen wird.

Wichtig ist nun der geänderte Code in der Funktion „getTime“. Denn hier nutzen wir unsere zuvor erzeugte Funktion. 

Funktion „getTime“

Beispiele

Im folgenden möchte ich zu jeder dieser Funktion ein kleines Beispiel zeigen.

Beispiel – anzeigen einer Uhrzeit

Video
 
Download

 

Beispiel – anzeigen einer Zahl

Video
 
Download

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.