Posts by Poogga

    Ja, aber das kann man aus dem Internet machen (mit https auf die dyndns-Adresse) _oder_ aus dem (W)LAN machen.

    Und wenn man es aus dem (W)LAN macht, dann sollte man m. E. nicht "von außerhalb" schreiben.

    Ja ich hab mich da falsch ausgedrückt, ich meine schon den Fall den Der_Imperator beschreibt. Ich habe es nur im (W)LAN über die dyndns Adresse probiert und das war mein Fehler. Sobald ich es jetzt wirklich außerhalb probiere funktioniert es, nur innerhalb wegen Hairpinning nicht. Aber für meine Zwecke ist das außerhalb aktuell ausreichend und ich glaub bei meinem Speedport kann ich dieses Hairpinning nicht deaktivieren.

    Teste mal auf deinem PI, mit der Kommandozeile:

    Code
    sudo apt-get install tcpdump
    sudo tcpdump -c 300 -vvveni eth0 port 80 or port 443

    "eth0" (... als Interface deines PI) musst Du evtl. anpassen.

    Ich hab es mal getestet, folgende Ausgabe:

    Code
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    12:34:49.293953 40:4d:8e:92:68:fa > b8:27:eb:52:a8:68, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl 54, id 32184, offset 0, flags [DF], proto TCP (6), length 40)
        31.16.253.67.52724 > 192.168.2.101.443: Flags [F.], cksum 0x30e7 (correct), seq 1375141707, ack 4272054262, win 8192, length 0
    12:34:49.294134 b8:27:eb:52:a8:68 > 40:4d:8e:92:68:fa, ethertype IPv4 (0x0800), length 54: (tos 0x0, ttl 64, id 22952, offset 0, flags [DF], proto TCP (6), length 40)
        192.168.2.101.443 > 31.16.253.67.52724: Flags [.], cksum 0xdf7b (incorrect -> 0x4f2b), seq 1, ack 1, win 444, length 0
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel

    eine Checksumme ist incorrect, aber weiß ehrlich gesagt nicht was das jetzt aussagen sagen :denker:

    Mit einem Speedport kannst du das nicht testen wenn du dich in deinem lokalen Netz befindest.

    Teste das von einem Kumpel aus oder über dein Handy (nicht mit deinem WLAN verbunden).

    Speedports sind halt Scheiße.

    Und hab es jetzt auch mal vom Mobilen Internet am Handy per "dnstools.ch" getestet, da sagt er mir auch, dass die Ports offen sind und da kann ich auf die Cloud ganz normal, per zugeteilter DNS, zugreifen.... also lässt mir der Speedport nur einen Zugriff von extern zu, aber nicht von Intern? komisches Verhalten :conf:

    Aber dann wäre mein Problem eigentlich gelöst, der Speedport ist eh nur eine Übergangslösung für ein paar Monate, bin auch nicht so begeistert von den Speedports. Solange ich dann von außen darauf zugreifen kann reicht mir das aber völlig. Dafür ist die Cloud ja eigentlich gedacht :)

    Hallo liebe Community,

    ich betreibe seit längerem eine eigene Nextcloud auf meinem Pi und sie läuft auch bisher zufriedenstellend.

    Leider musste ich jetzt meine Router auf einen Speedport wechseln und seitdem hab ich vermutlich Probleme mit der Portweiterleitung. Ich bin mir jetzt aber nicht sicher, ob es eben am Speedport liegt oder am Pi selber oder an noch irgendwas anderem.

    Für die Nextcloud muss ich Port 80 und Port 443 freigeben, sodass ich sie eben auch aus dem Internet erreichen kann. Dies habe ich auch am Speedport gemacht.

    Sobald ich jetzt z.b. auf dnstools.ch meine Ports testen lasse, zeigt er mir dort auch eine erfolgreiche Freigabe an. Auch in meiner Nextcloud Info sagt er mir, dass diese Ports geöffnet sind.

    Jedoch kann ich sie von außerhalb nicht erreichen. Weder noch über die externe direkte IP, als auch über die zugeteilte DNS von spdyn.de.

    Die Nextcloud läuft aber, weil über die interne IP kann ich sie ganz normal ansprechen, also muss das Problem irgendwo zwischen Nextcloud, Router und der großen weiten Welt des Internets liegen.

    Vielleicht hatte jemand von euch schon mal ein ähnliches Problem mit einem Webserver und könnte mir weiterhelfen, da ich inzwischen echt ratlos bin, was ich noch ändern müsste um wieder Zugriff zu erhalten.

    Viele Grüße,

    Poogga

    Vielen Dank ottosieben,:danke_ATDE:

    Quote

    Eventuell führt das cp schon zum Problem, da die Zieldatei eventuell nur "modified" ist. Versuch: Vor dem cp die Zieldatei löschen.

    Nach dem cp Quelldatei löschen.

    Den ersten Punkt versuche ich mal, vielleicht hilft mir dieser.

    Quote

    Wenn das nicht hilft, die Zieldatei alternieren, livecam_bildschirm_1.jpg/livecam_bildschirm_2.jpg. Vor dem cp aber die jeweils alte Zieldatei wiederum löschen.

    Die Zieldatei alternieren hilft aber nichts, habe ich bereits versucht, aber nach ca 6-10 Bildern lädt er mir nur noch sporadisch die Bilder (weiß aber auch nicht wieso, vermutlich auch ein Cacheproblem).

    Quote

    Ich kann mir ausserdem vorstellen, dass bei der häufigen Aktualisierung das Dateisystem aus Performancegründen eben immer auf die alte Daten (da gleiche Datei) zugreift . Daher besteht eventuell auch die Möglichkeit, dass beim cp schon die Cachedaten zum Erstellen der Zieldaten verwendet werden.

    Das müsste dann aber einfach prüfen können, einfach mal livecam_bildschirm_1.jpg mit livecam_bildschirm_2.jpg vergleichen.

    Dies habe ich schon untersucht. Die kopierte Datei passt immer mit der dazugehörigen Datei zusammen, also diese ändern sich schon richtig.

    Quote

    Eventuelle Ursache: Vielleicht ist aber auch der Datenträger so langsam, wodurch das Dateisystem dann mal entspannt mit alten Cache-Daten hantiert.

    Derart häufige Schreibzugriffe auf der SD Karte (ich vermute , es ist eine) würde ich ohnehin nicht machen. Dann lieber eine Ramdisk anlegen (tmpfs).

    Ja das will ich eh noch auslager, aber zum testen hab ich es jetzt nur mal auf der SD gelassen.

    Viele liebe Grüße

    Hallo liebe Raspberry Freunde,

    ich habe aktuell ein Projekt mit dem Raspberry Pi, einem Touchscreen, einer Cam und Kivy am laufen.

    Es läuft soweit auch alles sehr gut, nur leider habe ich noch ein kleines aber wichtiges Problem.

    Ich erstelle mir jede Sekunde von der Cam ein Bild und will dies in Kivy updaten. Dies funktioniert auch soweit, also er updatet jede Sekunden dieses, aber er "reloaded" es nicht, er zieht einfach das Bild aus einem alten Buffer sozusagen raus und verwendet dieses wieder.

    Vielleicht hab ich Glück und jemand kennt sich mit Kivy aus und kann mir dabei helfen, wie ich diesen "Buffer" vor erneutem laden löschen kann.

    Hier noch der wichtige Python Codeausschnitt:

    Code
        #Update die CamBilder alle "UpdateCamZeit"-Sek
        def Cam_Update(self, dt):
            global bild_counter, var_pfad_alt
            
            if os.path.isfile('/Bilder/livecam.jpg'):
                os.popen('cp /Bilder/livecam.jpg /Bilder/livecam_bildschirm_1.jpg')
                self.Bild = '/Bilder/livecam_bildschirm_1.jpg'

    und der dazugehörige Kivy Ausschnitt:

    Code
    <Hauptfenster>:
        
        BoxLayout:
            BoxLayout:
                orientation: "vertical"
                Image:
                    id: Bild
                    source: root.Bild
                    size_hint_x: 1
                    size_hint_y: 1

    Also noch kurz erklärt: "Cam_Update" wird jede Sekunde upgedatet und überschreibt dann die source: root.Bild mit dem neuen Bild.

    Mit verschiedenen Versuchen hab ich aber herausgefunden, dass er in "Bild" immer wieder das erste "jpg" lädt, obwohl sich das bild "livecam_bildschirm_1.jpg" bereits geändert hat. Deswegen vermute ich auf einen dazugehörigen Buffer, aber ich finde keine Möglichkeit diesen zu cleanen bzw zu umgehen.:conf:

    Schon mal vielen Dank an alle die versuchen mir zu helfen.:danke_ATDE:


    Viele liebe Grüße an alle fleißigen Raspberry Pi Bastler

    Hallo Leute,

    Schon mal vielen, vielen Dank für alle die mir bereits versucht haben zu helfen :thumbup::thumbup::danke_ATDE:

    Also ich habs jetzt meinen Code ein bisschen verbessert und hab glaub ich auch das Problem mit dem Bild fast gelöst. Aber leider nur fast und ich glaube es liegt jetzt an Kivy, aber ich komm nicht drauf woran genau :wallbash:

    Also mein Code macht jetzt mit cam.sh jede sek ein Bild:

    Bash
    #!/bin/bash
    /usr/bin/ffmpeg -y -i 'rtsp://****/11' -vf fps=1 -update 1 -f image2 livecam.jpg

    und überschreibt die ganze Zeit livecam.jpg. Dies funktioniert auch soweit bis auf das er mir "livecam.jpg?" erzeugt (liegt aber glaub ich an ffmpeg oder den rtsp-Stream).

    Dies konvertier ich dann noch mit

    Code
    os.popen("cp livecam.jpg? livecam_conv.jpg")

    und diese livecam_conv.jpg lässt sich problemlos öffnen:thumbup:

    Leider aktualisiert mir Kivy aber das Bild nicht, obwohl die "livecam_conv.jpg" immer aktualisiert wird :denker:

    vll hat jemand von euch noch eine Ahnung wieso nicht :danke_ATDE:

    Hier noch ein Teil meiner .kv Datei:

    und mein dazugehöriger Python-Code:

    P.S.: Das z.B. bei Cam_Update self und time übergeben werden liegt an Kivy, da es automatisch die Zeit beim Aufruf mit übergibt.

    Ich versteh nicht warum er z.B. self.Datum oder self.Uhrzeit richtig aktualisiert aber self.Bild nicht :conf:

    Ach und ich überblicke Kivy und Python noch nicht mal ansatzweise komplett, also habt für meinen vll schlechten Programmierstil Verständnis ^^

    Hallo,

    meine 1. Vermutung wäre auch, dass der Takt von jede Sekunden 1 Bild zu viel ist.

    Was auch sein könnte ist, dass dein Python-Skript auf eine angelegte, aber noch nicht fertig gefüllte / konvertierte JPEG-Datei zugreifen will. Abhilfe: nicht auf das neuste Bild, sondern das 2. neuste zugreifen. Nachteil: du bist 1 Sekunde "hinterher".

    Du könntest ggf. auch den Aufruf von ffmpeg per `subprocess` direkt in Python machen. Dann würden den Skript so lange blockieren, bis die Konvertierung abgeschlossen ist.

    Schon mal vielen Dank für die Hilfe.

    Ich hab bereits versucht auf das vorletzte Bild zuzugreifen mit "Name = str(Ordnerliste[-2])" statt "Name = str(Ordnerliste[-1])" und dies hat leider keinen Effekt auf das Problem gehabt. Deswegen bin ich mir inzwischen ziemlich sicher, dass es nicht an einem unfertigen JPEG-Datei liegt.

    Außerdem ergibt das leider auch Probleme, da der Stream auch schon 1 Sek "hinterher" ist, deswegen würde ich insgesamt dann schon mindestens 3 Sek hinterher sein. Umso weniger Zeit, um so besser für den Sinn :conf:

    "Subprocess" hab ich mir auch schon überlegt, stell mir aber als Problem dabei vor, dass ffmpeg zum starten schon ein paar sek braucht, es würde dann vermutlich bei jedem Bild ein paar Sek dauern bis es ein Bild gemacht wird. Dies ist dann auch nicht der Sinn der Sache. Außerdem möchte ich ungern das Skript blockieren, da es auch für die Klingel etc. verantwortlich ist und diese dann fast immer blockiert wäre. (Musste wegen Kivy eine einzelne Datei sein, soweit ich weiß)

    Die andere Punkte die du genannt hast, werde ich mal in einer freien Minute bearbeiten:danke_ATDE:

    Ich werde jetzt auch mal versuchen direkt per ffmpeg ein Video aufzunehmen, dass Kivy dann direkt ausgibt. Muss aber schauen, ob es mit der unfertigen MP4-Datei klar kommt und ob die Datei im Dauerbetrieb nicht zu groß wird. Aber besser wäre whrl schon die Version mit jede Sek ein Bild:denker:

    Viele Grüße


    Ergänzung:

    Ach und den Try-Except Block hab ich genau wegen dem Starten von ffmpeg gemacht, da das SH-Skript ein paar Sek braucht bis es das erste Bild aufnimmt.

    Hallo liebe Raspberrybastler :)

    Ich baue mir aktuell aus einem Raspberry eine Türsprechanlage mit Überwachungsfunktion und "Live" Bild einer IP-Überwachungskamera.

    Ich habe bis jetzt alles in Python mit Hilfe von Kivy (für einen Touchscreen) geschrieben und hat auch alles soweit funktioniert. Jetzt hab ich mich daran gemacht die Kamera noch mit einzubinden und da hab ich jetzt so meine Probleme.

    Ich hab mir das ganze so vorgestellt, dass der Pi über ffmpeg jede Sek einen Screenshot macht und ich dann jede Sek das aktuelle Bild neu lade. Es würde natürlich auch noch die Möglichkeit bestehen den Livestream der Kamera direkt an Kivy zu übergeben, aber das hab ich bis jetzt auch nicht zum laufen bekommen bzw. nicht mal einen groben Ansatz dafür.:conf:Deshalb auch aktuell die Sache mit "jeder Sek 1 Bild" und das funktioniert auch bis zu ca. 10 Bilder problemlos und dann gibt er mir nur noch ein Schwarzes Bild aus. Ich weiß aber nicht woran es liegen könnte, dass es Anfangs funktioniert und nach ein paar Bildern nicht mehr:conf:

    Das ffmpeg immer im Hintergrund laufen kann hab ich ein Shellskript geschrieben:

    Bash
    #!/bin/bash
    
    /usr/bin/ffmpeg -i "rtsp://***" -vf fps=1 /home/***/Pictures/Cam/live/cam%02d.jpg

    und dieses Starte ich beim Initialisieren des Bildschrims und das funktioniert auch passend, also erstellt mir jede Sek brav ein Bild.

    Cam_Update wird jede Sek aufgerufen.

    und self.Bild übergibt dann das aktuelle Bild an die .kv Datei für Kivy.

    Ich verstehe nicht wieso er Anfangs keine Probleme hat die Bilder einzulesen, aber sobald das ca. 11 Bild kommt, er dann nur noch ein "schwarzes" Bild ausgibt, aber ganz selten, vll so alle 40 Bilder, gibt er wieder 1 oder 2 Bilder richtig aus.:conf:

    (Die Bilder sind aber alle ganz normal, wenn ich es mir per ftp hole.

    Ist es möglich die beiden Skripte (sh und py) zu synchronisieren? Also das er zu 100% fertig ist das Bild zu machen und es erst dann einliest? Könnte mir vll vorstellen das es daran liegt, aber ich glaub fast nicht.

    Vll weiß jemand von euch Rat :helpnew::daumendreh2:

    Hallo alle miteinander :)

    ich hab im Netz folgenden Artikel gefunde und wollte dies nachbauen.

    Quote


    Genau so würde ich mir eine Videoüberwachung vorstellen, also x-beliebige Pi's, die von einem Zentralen Pi gesteuert werden und man alle Video's auf einem anderen Rechner über den Browser einsehen kann.
    Ich hab in der Onlineausgabe festgestellt das die "Index.php"-Datei nicht abgedruckt ist, deswegen hab ich mir den Artikel gekauft in der Hoffnung das sie dort abgedruckt ist. Leider musste ich feststellen das sie nur auf der Heft-DVD vorhanden ist, die ich natürlich nicht habe.
    Leider muss ich sagen ich hab in PHP 0,0 Erfahrungen und kann mir deshalb die fehlende Index.php nicht selber zusammenreimen.
    Deswegen wollte ich mal hier nachfragen ob einer von euch schon mal mit diesem Tutorial gearbeitet hat oder sogar die DVD von "Raspberry pi geek Ausgabe 02/2014" Zuhause hat und mir diese Datei schicken könnte. :helpnew:

    Hallo,
    vielen Dank für die Antwort und das mit dem Status abfragen vor der Schleife ist genau das was ich will, aber ich brauch es für 4 Taster bei vielen if-Bedingungen + Schleifen und da jedesmal davor den Status abzufragen ist ja fast mühsamer als immer zu überlegen welchen input ich jetzt abfragen muss ;) Ich würde es mir eher so vorstellen, dass ich zu der Bedingungn mit z.B. if Taster1 == True: und dabei soll er dann mit Taster1 den Status überprüfen. Aber vermutlich ist das nicht so einfach und ja das Forum hab ich schon ein wenig durchsucht, aber finde meistens nicht das was ich suche.

    MFG
    Automatisch zusammengefügt:
    Habs jetzt noch mit

    Code
    taster="gp.input(6)"

    probiert, hat auch nicht funktioniert, aber normal muss ich in diese Richtung gehen oder?

    MFG

    Hallo miteinander ;)
    eine kurze Frage zu den GPIO's und Python:
    und zwar möchte ich z.b gp.input(6) einen Namen zuweisen, also das ich im Programm nicht immer gp.input(6) schreiben muss sondern z.B. auch Taster schreiben kann. (Verständlicher machen für mehrere Taster)

    aus:

    Code
    while gp.input(6) == False


    soll:

    Code
    while Taster == False

    werden.

    Ist dies möglich? Habs mit Taster=gp.input(6) probiert und da ist das Problem das er gp.input(6) genau beim initialisieren in Taster speichert und dann nicht mehr verändert. Was ja auch verständlich ist, aber genau das soll es ja nicht bewirken ;)
    Hab beim suchen nichts passendes gefunden vll weiß einer von euch wie man das lösen kann.

    Mit freundlichen Grüßen

    Ja ich hab alle möglichen Tutorials durchgearbeitet und auch alle möglichen Testprogramme versucht ohne viel Erfolg... Zeichen bzw Buchstaben hat es noch nie ausgegeben...
    Hab jetzt auch dein Testprogramm versucht mit deinen Widerstandswerten. Dabei sieht man jetzt wie einzelne LEDs flackern, also das er was arbeitet, aber entweder er speichert die Buchstaben sozusagen nicht und arbeitet sie nur schnell durch oder es liegt wirklich an der Platine... Hab mir jetzt mal sicherheitshalber noch eine bestellt und dann werd ichs schon sehen ob es an der Platine liegt oder nicht ;) Wird aber leider wieder ein paar Tage dauern bis diese ankommt ;)
    Trotzdem an alle vielen Dank für eure Hilfe ;)

    MFG


    Das mach ich ja eig hier? wenn ich z.b 0x32 initialisieren sende ich zuerst 3 raus und dann 2 mit der if-Bedingung.
    Also so wies du beschrieben hast müsste ich 0x3* und dann 0x2* senden, aber das wird ja in meinem Programm durch eine If-Bedingung mit & (Stelle 1 oder Stelle 2 von 0x32) ersetzt.
    Das sollte rein theoretisch schon so stimmen außer ich hab jetzt einen Denkfehler drin, aber dann wäre ja "if bits & 0x0*" sinnlos.


    Das mit dem C-Programm werde ich bei Gelegenheit mal testen, aber muss mich da zuerst rein denken.

    MFG


    Habs jetzt auch mit einem Poti gemacht ;) Auf dem Bild sieht man den Vorwiderstand für die Hintergrundbeleuchtung nicht für den Kontrast. Ich hab den Kontrast auf Masse gesteckt wie es in einem anderen Tutorial war (das sollte nach diesem Tut nichts verändern da der Kontrast dadurch max. ist also das LCD max leuchtet)

    Hab die Kontakte alle mal ein und ausgesteckt und durchgemessen und sollten Kontakt haben, aber kann man natürlich td nicht 100%ig sagen. Das Foto ist an sich auch übersichtlich und sollte genau so sein wie hier. Also tippst du auf defektes LCD? Naja dann muss ich mir ein neues bestellen kostet ja kaum was dauert nur relativ lange für die Lieferung ;)

    Anhang noch das Blinken was ich vorhin erwähnt habe.


    naja ... mit fixen Widerständen ist das so eine Sache ... so sehr rumdrehen darf ich an dem Poti nicht.
    Ist halt schon öfter vorgekommen, dass jemand meinte, das funktioniert nicht wie er will, dabei fehlte nur das Poti.

    cu,
    -ds-

    Ok habs jetzt mit nem 10k Poti probiert und bis auf der Kontrast ändert sich nichts daran wenn ich drehe.
    Hab aber was entdeckt weiß aber nicht was es zu bedeuten hat ;)
    Bei dem Beispiel Programm vom link: sobald ich das Programm mit strg+c beende (also die Dauerschleife abbreche sollte laut Programm ja "Goodbye!" kommen), dann blinkt dauerhaft das erste linke Feld in der ersten Zeile ist das ein gutes oder schlechtes Zeichen?

    MFG


    Hallo.


    ...das kannst nur du behaupten... :lol:


    Also Bilder meiner Verdrahtung füge ich im Anhang bei das ihr mir mal glaubt ;)

    Quote


    ...wage ich zu bezweifeln.
    Wenn du das Datasheet hast, hast du auch die Initsequenz.(siehe Anhang).Die Sequenz beginnt mit 3x 0x33 und unterschiedlichen Zeiten....

    zum Text-rausschreiben:
    Im allg. testet man das Busy-flag vor Schreibbegin eines Textbytes.Das kann man ignorieren wenn man >100üSec zwischen den Bytes wartet.


    ja die Initialisierung hab ich auch schon anders versucht (wie aus dem Datenblatt) und mit größeren Zeiten als die gewünschten hat leider nichts gebracht ;)
    auch mal mit 1 sek zwischen den werten und wenn dann ist es 3x 0x3 da es ja nur 4 bits sind nicht 8 oder? also 3 3 3 2 2 8 0 8 0 1 0 4 zum initialisieren nach der reihe?
    also nach meiner Überlegung sollte 0x33, dann 0x32, 0x28, 0x08, 0x01, 0x04 initialsiert werden laut Datenblatt da zuerst z.B. bei 0x04 zuerst 0 gesendet wird und dann 4 gesendet wird an die bits 4-7 oder lieg ich da falsch?

    Quote


    klar kann man DDR(Display-Data-Ram)-Adressen lesen, aber wozu?

    ...und sicher sind die Startadressen der 2 Zeilen unterschiedlich...hast sie doch definiert...

    Code
    DISPLAY_LINE_1 = 0x80
    DISPLAY_LINE_2 = 0xC0


    Die Addressen möchte ich nur überprüfen da ich mir bei meinem Programm nicht sicher bin ob das auch auf mein LCD Board zutrifft ;) Die sind aus nem anderen Programm kopiert da ich dazu nichts im Datenblatt finden konnte. Deswegen bin ich mir bei denen nicht sicher die ich definiert habe.


    Quote


    auserdem hat dein Programm doch nicht's mit dem in link zu tun...probier doch das mal.


    zu meinem oben beschrieben Verhalten meine ich dieses Programm aus dem link. Also mit 10 sek erste zeile und 4 sek alles dunkel ;) siehe anhang


    Ergänzung: Bis jetzt hat kein Programm das ich im Netz fand funktioniert. Schon alle möglichen probiert die ich gefunden hab.

    Also meine Verdrahtung ist 1 zu 1 wie auf der Seite (Habs auch schon 20 mal überprüft ;)).
    Das meiste am Programm verstehe ich auch und kann ich nachvollziehen.
    Und das Testprogramm von der Seite wechselt zwischen 1 Zeile komplett eingeschaltet(ca 10 sek) und beide Zeilen dunkel (ca 4 sek) hin und her auf Dauerschleife.
    Vermute das es entweder an der Platine liegt oder das die Addressen der Zeilen im RAM unterschiedlich sind. Aber es gibt keine Möglichkeiten die Addressen rauszulesen oder? Oder gibt es da überhaupt Unterschiede zwischen den LCD Modul Platinen?(Meine ist so eine 3€ China Platine). Lohnt es sich eine neue zu bestellen oder würdet ihr sagen das es nicht an der Platine liegen kann?

    MFG

    Guten Abend Gemeinde,

    ich versuche seit Tagen ein 2x16 LCD Display (Bezeichnung JHD162A) zum laufen zu kriegen hab aber dabei keinen Erfolg :s
    Darum wende ich mich jetzt mal an euch ;) Also richtig angeschlossen ist es(4 Bit Übertragung), kann also nur noch an der Software liegen.
    Mein Code in Python geschrieben lautet: (Ist teilweise selbst geschrieben und teilweise zusammenkopiert)


    Was es macht: Beim Anstecken leuchtet die erste Zeile und die zweite ist dunkel, so wie es sein sollte. Dann nach dem Initialisieren sind beide Zeilen dunkel. Aber kaum versucht man ein Wort oder Buchstabe auszugeben wird die erste Zeile wieder komplett eingeschalten, so wie nach dem Anstecken. Hab einiges versucht aber finde meine Fehler nicht. Hab das Datenblatt zu meinem LCD Modul auch durchgearbeitet und alles was ich finden konnte bzw erkannt habe sollte stimmen.
    Es könnte evtl noch an DISPLAY_LINE_1 und DISPLAY_LINE_2 liegen, da ich dazu nichts im Datenblatt fand aber sollte laut Tutorien stimmen.
    Bin inzwischen ratlos und weiß nicht was ich noch versuchen soll... Bitte deshalb um eure Hilfe :D