HD44780 4x20 bringt ausgabe erst verzögert und kurz seltsame zeichen...

  • Moin zusammen,

    ich versuche gerade mein neues 4x20 HD44780 Display sauber zum laufen zu bekommen.
    Ich verwende diese Display: http://www.amazon.de/gp/product/B00L8VCHJC?psc=1&redirect=true&ref_=oh_aui_detailpage_o07_s00&tag=psblog-21 [Anzeige]

    Erste gehversuche habe ich mit dem folgenden Tuturial gemacht:
    http://www.schnatterente.net/technik/raspbe…hd44780-display
    bzw http://www.schnatterente.net/technik/raspbe…hd44780-display

    zuvor hatte ich ein 2x16 Display, dort funktionierte das tut aus dem ersten link einwandfrei.
    Beim 4x20 Display gibt es aber das ein oder andere Problemchen...

    Das Display / die Zeilen spreche ich mit

    Code
    DISPLAY_WIDTH = 20 	# Zeichen je Zeile
    DISPLAY_LINE_1 = 0x80 	# Adresse der ersten Display Zeile
    DISPLAY_LINE_2 = 0xC0 	# Adresse der zweiten Display Zeile
    DISPLAY_LINE_3 = 0x94 	# Adresse der dritte Display Zeile
    DISPLAY_LINE_4 = 0xD4 	# Adresse der vierte Display Zeile

    an.

    "Der gesamte Code"

    Die Ausgabe funktioniert soweit auch, allerdings gibt ein ein paar schönheitsprobleme.
    Aus mir unerklärlichen Gründen kommt die Ausgabe auf dem Display erst verzögert und mit (und unterschiedlich lang angezeigten) seltsamen Zeichen.
    Ich hab es mal auf einem Video festgehalten.. Aber wie es der Vorführeffekt will, kommen die Zeichen im Video nur sehr kurz (blinken kurz auf). die Verzögerung ist aber trotzdem da...:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    (schande über mich... ich habs hochkant aufgenommen.... :/)

    Hat jemand eine Idee warum die Ausgabe nur verzögert erscheint und die komischen Zeichen vorher mehr oder weniger kurz aufblinken?
    Mit dem zweizeiligen Display lief es mit dem identischen code einwandfrei...!?

    Danke schon mal im voraus und viele Grüße
    Nap

  • HD44780 4x20 bringt ausgabe erst verzögert und kurz seltsame zeichen...? Schau mal ob du hier fündig wirst!

  • Hm ... da hat unser grüner Mod dbv bestimmt was dazu zu sagen ...

    Mich schüttelt es jedenfalls regelrecht, wenn ich Python in Verbindung mit pointer-ähnlichen Konstrukten und Funktionen zum Speicherhandling sehe ... :-/

    Ich denke, da irgendwo liegt das Problem und ich bin sicher, da gibt es elegantere Methoden in Python das Display anzusteuern (ich denke da an wiringPi oder so).

    cu,
    -ds-

    • Offizieller Beitrag

    @-ds-
    woher du das wusstest :denker: ;)

    Zuerst nimm mal die ganzen GPIO setup Kram aus der While Schleife raus. Und ja, es gibt ne schönere Art das in Python zu machen

    Code
    sudo apt-get install python-pip
    sudo pip install RPLCD

    Doku gibts hier. Das bedeutet nicht, das das Modul dann nicht den ganzen pointer Kram drinne hat, aber aus den Augen aus dem Sinn ;).


  • @-ds-
    woher du das wusstest :denker: ;)
    ...

    aber hallo ... Du bist in Sachen Python für mich irgendwie die Inkarnation der Kompetenz :thumbs1:
    (obwohl ich ja nach wie vor damit nix am Hut hab')

    Aber mal ehrlich: bei Speichermanipulation ala' alloc(), memset(), ... müssten doch sogar Dir als eingefleischtem Schlangenbeschwörer die Haare zu Berge stehen.
    Ein OOP Interpreter und physikalischer Zugriff auf dem Speicher ... :wallbash:
    Naja ... C++ ist da nicht viel besser :fies: ...

    cheers,
    -ds-

    • Offizieller Beitrag

    Mit den den Haaren ist das so eine Sache...die muss man haben damit sie stehen können :lol: Aber du hast Recht. Der verwendete Code zieht sich durch das Inet wenn es um dieses Display geht.

    Code
    One of Guido's key insights is that code is read much more often than it is written. The guidelines provided here are intended to improve the readability of code and make it consistent across the wide spectrum of Python code. As PEP 20 says, "Readability counts".


    Trift in diesem Fall nicht zu ;). Mit dem Modul wirds deutlich besser.

    Und danke für das Kompliment :)

  • Hm ...


    Mit den den Haaren ist das so eine Sache...die muss man haben damit sie stehen können :lol:
    ...


    probiers mal mit grüner Salbe ....
    jetzt ohne Scheiss: bei uns gibts so ein Sprichwort "da heyfd blos a diegel greane soim"
    (da hilft nur ein Tiegel/äh ... eine Dose grüne Salbe) ... -> Pferdesalbe in real


    ...
    Und danke für das Kompliment :)


    na das kann ja ruhig mal ausgesprochen werden ....

    Aber ich hör' jetzt lieber auf, bevor das mit den Farbspielen zu weit ausufert :lol:

    cheers,
    -ds-

  • Hui.... ^^

    Da dachte ich eben, muss mal nachschauen ob es schon eine Antwort gibt... Aber nein es sind 5 :D

    Danke für den Link mit dem rplcd.
    Das mit dem gpio setzt in der Schleife ist mir auch aufgefallen, hab dann aber nicht weiter drüber nachgedacht... ^^
    Aber hast recht, hat da nix zu suchen.

    Ich werd heute abend testen und bescheid geben :)

    Grüße

  • also die GPIO.Setup aus der schleife zu packen ändert mal garnix.. ^^
    Außer das es sauberer ist.

    mit RPLCD spricht das LCD sofort an, allerdings bekomm ich einen Fehler:

    Code
    pi@RealPi ~ $ sudo python /home/pi/L.py
    /usr/local/lib/python2.7/dist-packages/RPLCD/lcd.py:191: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
      GPIO.setup(pin, GPIO.OUT)

    Das komplette aktuelle Script:

    Die genannten Pins sind aber eigentlich sicher nicht genutzt....:huh:

    • Offizieller Beitrag

    Wenn sie nicht genutzt sind, warum schreibst du sie dann rein? Und das kein Fehler, sondern eine Warnung und es es steht sogar da wie man die los wird.

    Code
    GPIO.setwarnings(False)

    das Modul hat ne Standardbelgeung für das Display

    Code
    lcd = CharLCD(pin_rs=15, pin_rw=18, pin_e=16, pins_data=[21, 22, 23, 24],
                  numbering_mode=GPIO.BOARD,
                  cols=20, rows=4, dotsize=8)
  • Ja, es funktioniert schon..
    Ich verstehe nur nicht, warum die Warnung kommt.
    Die von mir definierten Pins werden von keinem anderen script genutzt...

    Es läuft so schon wie es soll, aber wenn dann würde ich es doch gerne gleich sauber und ohen Warnung machen.. (setwarnings false ist mir bekannt, aber ist ja keine wirkliche Lösung, sondern nur ein "wegschauen" ^^)

    • Offizieller Beitrag

    Achso

    Ein cleanup solltest du immer zum Ende machen, um genau diese Meldung zu verhindern.

  • Sehr geiler Beitrag, auch ich hab den Code mit dem Display von Schnatterentchen genommen und hatte das selbe Problem - so ansteuern ist auch viel sauberer, gerade da ich für mein Radioprojekt noch Taster dazwischen habe wo die Senderwahl auf dem Display dargestellt werden soll.

    Vielen Dank für die super Anleitung von RPLCD!

Jetzt mitmachen!

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