Arduino Anzeige 7-Segment tm1637 um 180° drehen

Gast #6018096
Hallo,
ich habe ein kleines Programm auf dem Arduino laufen und steuere zur 
Anzeige ein 4-digit Tm1637 Display an. 
https://www.ebay.de/itm/TM1637-4-bits-Digital-Tube-LED-Display-Module-with-Clock-Display-Arduino-/111768489219

Auf dem Breadboard läuft es super.
Jetzt habe ich eine Platine dafür geätzt. Leider hat die einen Fehler - 
das Display ist um 180° gedreht.

Nun möchte ich keine neue Platine ätzen und versuche gerade die 
Freiluftverkabelung zu vermeiden. Die Segmente müssten jetzt "auf dem 
Kopf" und die erste Stelle an der vierten dargestellt werden.

Ich verwende folgende Bibliothek https://github.com/avishorp/TM1637

Hat jemand eine Idee wie ich das bewerkstelligen kann bzw. hat einer von 
euch so etwas schon einmal gemacht.

Gruß Erik
#6018109
1
//
2
//      A
3
//     ---
4
//  F |   | B
5
//     -G-
6
//  E |   | C
7
//     ---
8
//      D
9
const uint8_t digitToSegment[] = {
10
 // XGFEDCBA
11
  0b00111111,    // 0
12
  0b00000110,    // 1
13
  0b01011011,    // 2
14
  0b01001111,    // 3
15
  0b01100110,    // 4
16
  0b01101101,    // 5
17
  0b01111101,    // 6
18
  0b00000111,    // 7
19
  0b01111111,    // 8
20
  0b01101111,    // 9
21
  0b01110111,    // A
22
  0b01111100,    // b
23
  0b00111001,    // C
24
  0b01011110,    // d
25
  0b01111001,    // E
26
  0b01110001     // F
27
  };

Man müsste doch an dieser Stelle die Segmente tauschen können...
Also A mit D, B mit E,...

Und dann noch die Reihenfolge der Ziffenr ändern. Könnte klappen.
Gast #6018123
Ebenso die Schleife ändern und das Array rückwärts schreiben
1
void TM1637Display::setSegments(const uint8_t segments[], uint8_t length, uint8_t pos)
2
{
3
...
4
  // Write the data bytes
5
  for (uint8_t k=0; k < length; k++)
6
    writeByte(segments[k]);
#6018150
Sebastian R. schrieb:
> Man müsste doch an dieser Stelle die Segmente tauschen können...
> Also A mit D, B mit E,...
>
> Und dann noch die Reihenfolge der Ziffenr ändern. Könnte klappen.

Der Teufel steckt im Detail. Das funktioniert nur, wenn er keinen 
Dezimalpunkt braucht.
Ansonsten schon. Ich habe in einem Design bewußt die Einerstelle "auf 
den Kopf gestellt" und zeige dort ein C und den DP als °C an ;-)
Gast #6018180
Okay, danke für die Hilfe.

Die Libary zu verbiegen hatte ich auch schon in erwägung gezogen - ich 
hatte gehofft es gibt etwas eleganteres.

Ich werde es mal versuchen.

Gerald B. schrieb:
> Der Teufel steckt im Detail. Das funktioniert nur, wenn er keinen
> Dezimalpunkt braucht.
Das ist kein Problem, das verwendete Display hat keinen Dezimalpunkt nur 
einen Doppelpunkt

Gruß Erik

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.