Forum: Mikrocontroller und Digitale Elektronik Arduino Anzeige 7-Segment tm1637 um 180° drehen


von Erik (Gast)


Lesenswert?

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

von Patrick C. (pcrom)


Lesenswert?

Unmoeglich.
Neue Platine machen.
Sorry.

von Sebastian R. (sebastian_r569)


Lesenswert?

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.

: Bearbeitet durch User
von Sven K. (quotschmacher)


Lesenswert?

Sebastian R. schrieb:
> Man müsste doch an dieser Stelle die Segmente tauschen können...

ja natürlich geht das. aber wenn ich die frage schon lese, müsstest du 
noch erwähnen, dass das ein auszug aus der verwendeten library ist und 
man die dann entsprechend ändern müsste.

von hfhd (Gast)


Lesenswert?

loouptable mit den verdrehten index und gut ist

von Marten Morten (Gast)


Lesenswert?

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]);

von Gerald B. (gerald_b)


Lesenswert?

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 ;-)

von Erik (Gast)


Lesenswert?

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

von m.n. (Gast)


Lesenswert?

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

Wenn das Einfache zu einfach ist: nimm einen Designerspiegel - sehr 
elegant ;-)

von Patrick C. (pcrom)


Lesenswert?

Patrick C. schrieb:
> Unmoeglich.

Sorry, nicht gut geguckt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.