Jump to content

Issue mit OLED 128x64 Bricklet 2.0


Uhlhorn
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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()

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...