2x16 Display über i2c ansteuern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo leute,

    :helpnew::helpnew::helpnew::helpnew::helpnew::helpnew::helpnew:
    ich benötige dringend Hilfe ich weiß nicht mehr weiter ständig bekomme ich eine
    Fehlermeldung und weiß nichts damit anzufangen da ich keinen Fehler in meinem
    Quellcode sehe...

    Ich habe den Raspi B+
    Den PCF8574P IC
    und ein 16x2 LC-Display

    Falls jemand einen besser bzw funktionstüchtigen hat kann er ihn auch gerne mit mir teilen :D

    Mein Programm:

    Code
    import pylcdlib
    lcd = pylcdlib.lcd(0x20,1)
    lcd.lcd_puts("GHSE",1)  # Erste Zeile auf dem Display Ausgabe: GHSE
    lcd.lcd_puts("2BKIK2",2)  # Zweite Zeile: 2BKIK"

    und meine Bibliothek:

    mein Fehlercode beim Ausführen ist:

    Code
    Traceback (most recent call last):
      File "test_lcd.py", line 1, in <module>
        import pylcdlib
      File "/home/pi/pylcdlib.py", line 1
        import smbus
        ^
    IndentationError: unexpected indent

    Würde mich über schnelle Hilfe sehr freuen! :)

    Einmal editiert, zuletzt von raspyboy (18. März 2015 um 18:53)

  • Habe das Problem gelößt.

    Musste alles richtig einrücken...

    Nun das nächste Problem, mir wird nichts auf dem LCD angezeigt...
    Addressen stimmen alle...

    Jemand eine Ahnung was es sein könnte?

  • Wie meinst du meine Verkabelung, sorry bin neu ^^
    Ja das ist auch das Programm ;D

    Der Display ist auf eine Platine auf dem der RFC ist gesteckt^^

    Einmal editiert, zuletzt von raspyboy (18. März 2015 um 17:58)

  • Nein leider nicht, habe diesen von meinem Lehrer in der Schule erhalten.

    Stehen auch keine besonderen Daten auf diesem.

    Das einzige was auf dem Display steht ist : Displaytech 162

    Einmal editiert, zuletzt von raspyboy (18. März 2015 um 18:23)

  • Hallo, hab mir mal das Datenblatt angesehen.

    Ob das 16x2 oder 20x4 ist beim gleichen Controler egal.

    Aber was mir aufgefallen ist .
    Deine init-Routine.

    Im Anhang ist das nötige timing-Verhalten vom Datenblatt.
    Vor der ersten 0x30 warten.
    Dann unterschiedliche Zeiten bei den nächsten 2 0x30

    Bin ich auch schon drauf reingefallen.

    Überprüf das mal.

    gruß root

  • Hallo.

    Also der will beim init am Anfang 3x die 0x30.
    Vor der ersten 0x30 sollte 15ms gewartet werden.(nach dem Einschalten ist die CPU eher bereit, als die LCD)
    Dann vor dem 2. 4,1 ms
    vor dem 3. 100µS

    Du machst aber

    also immer konstante Zeiten, und ohne 15ms warten am Anfang.

    Das mag der nicht.

    gruß root

    Einmal editiert, zuletzt von root (18. März 2015 um 18:44)

  • Ich stehe gerade echt auf dem schlauch...
    Versuche zu verstehen was du mir damit sagen magst aber irgendwie schaffe ich es nicht...
    Möglich das du mir kurz mein Quellcode verbesserst? :P

  • Hallo,

    also im Prinzip ist es doch einfach:
    Beim initialisieren musst du doch ne bestimmte Reihenfolge einhalten.
    Die ersten 3 Bytest sind eben 0x30, aber in bestimmten Zeitabständen, da das Busy-flag noch nicht aktiv ist.
    Sieh den Anhang, das stehen die minimale Zeiten drin.
    Wenn die in kürzeren Zeiten rausgejagt werden, ist der intern noch gar nicht fertig und kriegt den rest nur verstümmel mit... nix geht.

    Den code ändern.... ich hab mit Python nix am Hut, kann es zwar lesen, aber wenn ich jetzt darin rumfummele und was falsches reinmache, ist das Chaos perfekt.

    du must doch nur vor dem ersten 0x30 15 ms warten, dann 4,1 ms, dann 100µS
    (laut Diagramm)


    nicht verrückt machen und mal durchdenken.
    Ich kann es dir in C zeigen, aber da wirst du nichts verstehen :)
    wird schon...:thumbs1:

    gruß root

    Einmal editiert, zuletzt von root (18. März 2015 um 19:02)

    • Offizieller Beitrag

    Das ist die init funktion mit 15ms wartezeit vor dem ersten write. Das sind ja min Werte, man also auch länger warten

    Edit: Und die 6000 sind geknackt :)

  • ist es möglich das ganze was ich da gemacht habe auch in C zu machen? :)
    Ja ich durchdenke das ganze nochmal und probiere noch ein wenig rum.

    Über mögliche Lösungen andere würde ich mich sehr freuen!

    Glückwunsch dbv :)

    also habe es versucht wie du meintest Root...
    leider trotzdem keine Reaktion immernoch schwarze Kästchen :/

    Ich verstehe nicht wieso es gar nichts ausgibt sprich wenigstens die Kästchen löscht oder so...
    es ändert sich einfach nichts...

    Einmal editiert, zuletzt von raspyboy (18. März 2015 um 19:22)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!