Jump to content

Recommended Posts

Geschrieben

Moin,

 

irgendwie scheinen in den meisten Sachen Bugs drin zu sein (oder ich habe eine besondere Fähigkeit diese zu finden).

 

Das OLED 128x64 Bricklet 2.0 funktioniert nicht wie erwartet:

 

Das ist mein Aufbau:

Master (A)——— PTC

      (B)——— OLED

      ©———

      (D)———

(An den Master sind ein OLED und ein PTC Bricklet angeschlossen)

 

Wenn ich das erste Beispielprogramm von aus der Tinkerforge-Doku ausführe, bleibt der Bildschirm leer.

Python - OLED 128x64 Bricklet 2.0

 

Ändere ich hingegen die Zeile der Ausgabeposition des Textes auf 3, dann wird „Hello World“ korrekt ausgegeben.

 

  oled.write_line(3, 0, "Hello World")

 

In den Zeilen 0, 1 und 2 kann man keinen Text ausgeben.

Geschrieben

Ich habe jetzt mal das Script auf dem Red Brick laufen lassen, mit dem selben Ergebnis. (Ich habe es gefilmt und lade es später hoch.)

 

Jetzt nehme ich mal ein anderes Brick und schließe dort das OLED an.

Geschrieben

Also, auch am Stepper Brick und am CD Brick zeigt das OLED nicht richtig an. Ich habe auch verschiedene Bricklet-Anschlüsse getestet. Es ist egal.

 

Wenn ich das Programm vom Red Brick laufen lassen (ohne PC), ist es derselbe Fehler. Manchmal verschwinden sogar andere Zeilen.

 

Hier das Programm, was ich getestet habe. Es beschreibt die Zeilen 7 bis 0 nacheinander. Dann baut es mit 8 Befehlen 8 Zeilen gleichzeitig auf. Schließlich beginnt es von vorn.

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

HOST = "localhost"
PORT = 4223
UID = "Hhh" # Change XYZ to the UID of your OLED 128x64 Bricklet 2.0

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_oled_128x64_v2 import BrickletOLED128x64V2
import time

if __name__ == "__main__":
    ipcon = IPConnection() # Create IP connection
    oled = BrickletOLED128x64V2(UID, ipcon) # Create device object

    ipcon.connect(HOST, PORT) # Connect to brickd
    # Don't use device before ipcon is connected

    # Clear display
    oled.clear_display()

    # Write "Hello World" starting from upper left corner of the screen

    while True:
        line = 7
        while line >= 0:
            oled.clear_display()
            Text = str(line)+": Hello World"
            print(Text)
            oled.write_line(line, 0, Text)
            line = line-1
            time.sleep(0.2)

        oled.write_line(0, 0, "0: Hello World")
        oled.write_line(1, 0, "1: Hello World")
        oled.write_line(2, 0, "2: Hello World")
        oled.write_line(3, 0, "3: Hello World")
        oled.write_line(4, 0, "4: Hello World")
        oled.write_line(5, 0, "5: Hello World")
        oled.write_line(6, 0, "6: Hello World")
        oled.write_line(7, 0, "7: Hello World")
        time.sleep(3)
        print()

    input("Press key to exit\n") # Use input() in Python 3
    ipcon.disconnect()

Geschrieben

Das Bricklet ist nicht defekt (es funktioniert mit dem Brick Viewer) und dein Program ist OK.

 

Es muss also an den Bindings liegen die du verwendest? Gibt ja keine andere Möglichkeit :o. Hast du die bei uns von der Homepage geladen und händisch installiert? Oder per pip? Welche Version?

Geschrieben
Hast du die bei uns von der Homepage geladen und händisch installiert? Oder per pip?

Ich bin in Python ein Newbee! Ich habe früher (80er Jahre) mal BASIC und 6502-Assembler programmiert, später ein bisschen PHP und AppleScript.

 

Was für Bindings? Ich habe mir PyCharm installiert und damit geht das alles.

 

Vielleicht ist das ja auch das Problem bei dem Stepper Brick?

 

Wie kann ich es denn besser machen?

Geschrieben

Mit Bindings meine ich die API, die Library. Das wo die "write_line"-Funktion drin steckt.

 

Du hast da einen Order "tinkerforge_python_bindings_2_1_21". Ich nehme an du hast den "tinkerforge"-Order der da drin ist einfach auf das gleiche Level im Dateisystem wie die Beispiele gelegt? Das wäre OK.

 

 

Ich versuche das nochmal zusammenzufassen:

 

Deine ganzen Probleme sind denke ich alle das gleiche Problem (Nachrichten gehen verloren). Das ist hier definitiv der Fall und die Exception in dem "image_data[0,0]"-Thread ist ja auch wieder eine TimeoutException. Genauso wie die Exception beim Stepper Brick.

 

Die Hardware scheint zu funktionieren (Du kannst z.B. Zeile 0 mit dem Brick Viewer setzen). Es funktioniert mit deinem Programm auch nicht wenn du das Bricklet an einen anderen Brick anschließt (d.h. es liegt höchstwahrscheinlich auch nicht an einem defekten Brick). Die Bindings  haben die aktuellste Version.

 

Ich hab im Moment keine gute Idee mehr. Kannst du mir vielleicht deinen ganzen Order zippen und schicken in dem das OLED-Beispiel ist welches das Problem erzeugt? Inklusive dem "tinkerforge"-Ordner. Dann schaue ich ob ich es damit reproduzieren kann.

Geschrieben
Kannst du mir vielleicht deinen ganzen Order zippen und schicken in dem das OLED-Beispiel ist welches das Problem erzeugt?

Ja, das mache ich gerne. Allerdings sind die ganzen Scripte etwas unaufgeräumt, da ich ständig daran rumgebastelt habe. Falls also dazu Fragen sind, einfach fragen. ;-)

 

(Ist als PM raus, weil da möglicherweise urheberrechtlich geschütztes Material drin ist.)

Geschrieben

Ich konnte das Problem zwar nicht reproduzieren, aber ich denke ich hab etwas gefunden. Kannst du einmal deine OLED128x64-Firmware auf die neueste Version aktualisieren und nochmal testen?

Geschrieben

Ja, werde ich gleich mal ausprobieren.

 

Nachtrag: Ja, das Problem ist behoben! :-)

 

Ich hatte schon als Kind einen „grünen Daumen“ für alles technische. Und wenn etwas einen Bug hat, dann finde ich ihn schnell. Es gibt Software, wenn ich sie benutze, dann finde ich innerhalb von Minuten ein gutes Dutzend Bugs. :-)

 

Seit einigen Tagen kenne ich auch den Grund für diese Fähigkeit und werde mit diesem Wissen meine Fähigkeiten erweitern können.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...