LED 4 Segment I2C Display

  • Hi, ;)


    ich habe günstig diese kleine Digitalanzeige von Linker erworben. [Blocked Image: http://www.conrad.de/medias/gl…67841_RB_00_FB.EPS_40.jpg]


    Leider gibt es dafür nur Firmeware von den wundertollen Arduino.


    Ich habe bereits einige Versuche mit i2cget und i2cset durch. Mittlerweile bin ich in der Lage, z.B. mit den Befehl

    Code
    ~$ i2cget -y 1 0x08

    das Display komplett an zu schalten. Auch Helligkeitsstufen kann ich so einstellen (0x18, 0x28, 0x38...). Warum das mit i2vget funktioniert, keine Ahnung.


    Mit

    Code
    ~$ i2cset -y 1 0x42 0x18

    konnte ich auch die Anzeige verändern, doch das funktioniert nicht mehr und jetzt komme ich nicht weiter.


    Ich muss mir irgendwie ein Pythonscript erarbeiten, bei dem ich nur noch die Zahlen eingeben kann. Dokumentationen für den verbauten Chip TM1673 oder gar für das ganze Display gibt es für den Pi leider gar nicht.


    Ich bitte daher inständig um eure Hilfe, denn ich muss dieses tolle Display unbedingt ansprechen.
    Danke danke, Patafkes


    [Edit] Vielleicht sagt das dem Ein oder Anderem ja was: PDF TM1637 [/Edit]

    Edited once, last by Patafkes ().

  • Sorry, aber es ist schwer, dein Problem zu verstehen. Das Display ist ein I2C Device, somit funktioniert der Code zur Ansteuerung egal ob es von einem RPi, Arduino, PC oder was auch immer angesteuert wird, solange der entsprechende Programmcode auf dem RPi läuft, mit Firmware hat daß nichts zu tun. Aufpassen solltest Du nur bei der Betriebsspannung des Displays, da der RPi nur 3,3v an seinen GPIO Ports verträgt.

  • Hallo


    Da ich mich gerade auch mit diesem Modul rumquähle und erstmals durch diesen thread überhaupt eine sichtbare Reaktion erzeugen konnte die Frage:


    Gibt es für das Teil eigentlich irgendwo eine verständliche Doku?
    Ich meine, wie komme ich darauf von 0x42 zu lesen? Und warum zeigt das Ding dann irgendetwas an?
    Was müsste ich wohin schreiben um ein brauchbares Ergebnis angezeigt zu bekommen?


    Wenn ich mit dem Teil angesteckt i2cdetect aufrufe, sehe ich, dass es praktisch fast alle Adressen belegt. Sehe ich das richtig?


    [font="Courier"]pi@raspberrypi ~ $ i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: 03 04 05 06 07 08 -- 0a -- 0c -- 0e 0f
    10: 10 11 12 13 14 15 16 17 18 -- 1a -- 1c -- 1e 1f
    20: 20 21 22 23 24 25 26 27 28 -- 2a -- 2c -- 2e 2f
    30: 30 31 32 33 34 35 36 37 38 39 3a UU 3c 3d 3e 3f
    40: 40 41 42 43 44 45 46 47 48 -- 4a -- UU -- 4e 4f
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
    60: 60 61 62 63 64 65 66 67 68 -- 6a -- 6c -- 6e 6f
    70: 70 71 72 73 74 75 76 77[/font]


    Irgendwie stehe ich da wie ein Esel vor einem Ferari - keine Ahnung wie man mit dem Ding umgeht.
    Kann da jemand ein bisschen nachhelfen?


    Gruß
    Franz

  • This device has no DEVICE ADDRESS. The device is not I2C.
    The device interprets the device address that a raspberry gives as a command and takes out ACK.

    Edited once, last by wakky ().


  • This device has no DEVICE ADDRESS. The device is not I2C.
    The device interprets the device address that a raspberry gives as a command and takes out ACK.


    Das erklärt einmal das interessante Verhalten wie es von Patafkes beschrieben wurde.
    Und jetzt macht der Inhalt der cpp Datei, die ich dazu gefunden habe, auch mehr Sinn.


    Mal sehen, ob wir das Teil bei nächster Gelegenheit doch noch zur Zusammenarbeit bewegen können :)


    Gruß
    Franz

  • So!


    Ich hab's jetzt endlich geschafft, dass das Display das ausgibt, was ich haben möchte :)


    Mit Hilfe von http://abyz.co.uk/rpi/pigpio/cif.html (installieren und verwenden) und einem gefundenen unvollständigen C Beispiel, habe ich eine notdürftige C++ implementierung gemacht, die erst einmal funktioniert.


    Ich werde das noch sauber ausarbeiten und daraus auch noch eine Python implementierung ableiten. Diese beiden Projekte stelle ich dann natürlich hier zur Verfügung.


    Gruß
    Franz

  • So Leute, die C++ Variante ist fertig.
    Bei Interesse könnt ihr sie von meinem Webspace runterladen:
    http://www.sc2web.net/Downloads/tm1637Test.zip


    Darin sind 2 cpp Files + ein Headerfile plus ein passendes makefile enthalten.
    Nach dem Maken mit sudo ./tm1637Test starten und dann mit ein paar Tastendrücken den Test durchlaufen lassen.


    Das Display ist auf GPIO 23 und 24 (Clock, Data) angeschlossen.
    Das kann natürlich im tm1637Test.cpp einfach angepasst werden.


    tm1637Display display(23,24,BRIGHT_TYPICAL);


    Nicht vergessen! pigpio runterladen und installieren!


    Eine python Implementierung wird noch eine Weile dauern.


    Gruß
    Franz

  • So, und hier jetzt noch eine funktionierende python implementierung:
    http://www.sc2web.net/Downloads/tm1637.zip


    Gegen Ende des Files ist durch Kommentar klar abgetrennt der Test.
    Auf der console mit sudo python tm1637.py starten und dann mit ein paar mal Enter durchsteppen.


    Der Aufbau der Klasse ist im Wesentlichen gleich mit der C++ Version.


    Gruß
    Franz


    PS. aus meiner Sicht kann man den thread jetzt als erledigt markieren ;)

  • Hallo sd582.
    Erstmal vielen Dank für deine Programme. Ich würde sie gerne testen und ausprobieren doch da scheitert es bei mir schon an der Verkabelung. Ich kann das verwendete Display leider nicht auf dem Bild erkennen. Ich habe dieses hier liegen, ist das vergleichbar?
    http://www.ebay.de/itm/4-Bit-D…in_77&hash=item462f716f7c
    Nun bin ich total verwirrt was die Verdrahtung angeht. Es handelt sich doch um ein I2C device oder? Warum wird das dann über GPIO 23,24 angesteuert? Ich habe vom dem Display die Pins SCLK RCLK und DIO (VCC und GND versteh ich noch ^^). Könnt ihr mir eben erklären was genau es damit auf sich hat und wie diese anzuschließen sind? Wenn ich nach SCLK und RCLK google lande ich wieder bei diesem Display.


    Vielen Dank
    Sebastian

  • Hallo


    Bei meinem ist nur 1 Chip auf der Rückseite. So wie bei diesem hier (wurde auf der Seite unten angezeigt)
    http://www.ebay.de/itm/1Stk-4-…&ttype=price&talgo=origal


    Ob das jetzt vergleichbar ist, kann ich nicht sagen.


    Meines sieht jedenfalls nur nach i2c aus - habe auch zuerst mit i2c probiert.
    Aber funktionieren tut's nur mit der Eigenimplementierung.
    Es handelt sich offenbar nur hardwaremäßig um einen i2c ähnlichen Anschluss aber das Protokoll weicht offensichtlich vom i2c Standard ab.


    Angeschlossen habe ich es mit CLK auf 23 und DIO auf 24. Plus und GND sind eh klar.
    Darauf sind die Programme abgestimmt.


    Gruß
    Franz

  • Danke schonmal. Also der IC scheint der gleiche zu sein nur ist der bei mir zweimal vorhanden, vielleicht finde ich ja noch wieso. Sagt dir das was mit den zwei verschiedenen SCLK und RCLK was? Ansonsten werd ich das Wochenende mal gucken ob ich mit deinem C-Programm was anfangen kann ;)


    Lieben Gruß
    Sebastian

    • Official Post

    Echt viele Dank sd582! Ich war mal so frei und hab auch noch eine Java variante dazu schrieben... Dazu noch ein kleines Beispiel.


    Das Eclipse / Maven Projekt: TMI1637
    und
    die ausführbare Jar TMI1637-0.0.1-SNAPSHOT-jar-with-dependencies.jar

    Code
    Aufruf: sudo java -jar TMI1637-0.0.1-SNAPSHOT-jar-with-dependencies.jar 0 1 0 1



    Beispiel:


    Ich versteh zwar noch nicht alles von dem Code (zbs die Adressen 0xc0; 0x88; 0x40; 0x44) aber wenigstens kann ich schonmal was mit dem Modul anfangen ;)

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

    Edited once, last by Turael ().

  • Hallo Forum,


    vielen Dank für das Testprogramm. Soweit funktioniert alles.
    Da ich Anfänger in Sachen python bin, wäre es fantastisch, wenn jemand mir ein einfaches Code-Beispiel geben könnte, welches auf dem Display läuft. Vielleicht die Umsetzung einer Uhranzeige oder Ähnliches.


    Ich bedanke mich vielmals.


    Christian