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 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). String temp = String(value, 0); 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. if(value disp = SPACE; } Wenn die Zahl kleiner als 100 aber größer als 0 ist dann soll ein zusätzliches Leerzeichen eingefügt werden ansonsten ein Minuszeichen. if(value 0){ disp = SPACE; } else if(value disp = NEGATIVE_SIGN; } if(value 0){ disp = SPACE; } 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. for(int i = 0;i int pos = temp.charAt(i); if(pos >= 48 && pos 0){ disp = SPACE; } else if(value disp = NEGATIVE_SIGN; } for(int i = 0;i int pos = temp.charAt(i); if(pos >= 48 && pos 9999){ number = 0; } } Video Download Read the full article












