OLED Verzweiflung

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • jetzt bekomme ich als Ausgabe vom Pico folgende Meldung:/

    Code
     >>> %Run -c $EDITOR_CONTENT
    
    MPY: soft reboot
    Traceback (most recent call last):
      File "<stdin>", line 7
    SyntaxError: invalid syntax
    >>> 
  • In der Zeile 7 ist ein recht offensichtlicher Syntaxfehler. Tipp: Klammern.

    “Since, in the long run, every planetary society will be endangered by impacts from space, every surviving civilization is obliged to become spacefaring — not because of exploratory or romantic zeal, but for the most practical reason imaginable: staying alive.” — Carl Sagan, Pale Blue Dot

  • NEULING schreit BAHNHOF

    Damit du das Display benutzen kannst musst du es an 5V Spannung klemmen. Sonst siehst du nichts auf dem Display. Das Problem ist aber das bei der Kommunikation zwischen Pico und Display, vom Display aus 5V auf der SDA und SCL kommen. Der Pico verträgt aber nur 3,3V auf seinen Pin's. Um das zu umgehen verwendet man diese Levelshifter.

    Ich hatte jetzt aber gelesen das man an dem i2c Modul vom Display, 2 Widerstände entfernen muss, dann spart man sich die Levelshifter. Ich such da mal raus.

    Edited once, last by keepfear (April 26, 2024 at 6:45 PM).

  • Moinsen

    Ich hatte jetzt aber gelesen das man an dem i2c Modul vom Display, 2 Widerstände entfernen muss, dann spart man sich die Levelshifter. Ich such da mal raus.

    Ich würde dich bitten den Herstellerlink des TO zu folgen. Bei diesen Modulen gibt es keine aufgesetzte Adapterplatine, sondern der PCF8574 ist direkt mit auf der Leiterplatte des Displays integriert. Ob damit dein Tipp bezüglich einer Schaltungsänderung noch greift !?

    Franky

  • Moinsen,

    der Levelshifter hat markiert 2 Pins für die LOW und die HIGH Spannung. Bei LOW kommt 3,3 Volt von Pin 36 dran, und bei High 5,0 Volt von Pin 39.
    Auf der Low-Seite wie auch auf der High Seite hast du jeweils 4 Signal-Pins. Die von der LOW Seite gehen zum PIOC SDA und SCL und von der HIGH Seite entsprechend zum Display.

    Das sollte man hinbekommen. Masse wird nicht zwingend benötigt auf der Levelshifter Platine, aber wenn ein solcher PIN "GND" vorhanden ist kannst du gerne auch diesen mit dem PICO verbinden. Wo die GND Pins sind entnimmt man dem PINOUT.

    Dann mein Programm noch einmal anschauen. __blackjack__ hatte einen Tippfehler gefunden, den ich schon korrigiert hatte.

    Das Programm sollte jetzt laufen.

    Franky

  • Danke für deine Hilfe !

    jetzt mal zum LS , also DIE H"x" Seite/Anschlüsse sind die HightVoltage (5v) und die L"x" Anschlüsse die LowVoltage (3.3) Anschlüsse.

    ich finde aber keine 2 markierte Pins, und Google hat mir irgendwie auch nicht weiter geholfen X/

  • Moinsen

    LV1-4 sind die Low Signal Eingänge vom Pico kommend oder zum Pico gehend
    LV = 3,3 V
    HV = 5,0 V
    GND -> muss man das Erklären ?
    HV1-4 geht zum Display

    LV1 = SDA = GPIO-Pin SDA
    HV1 = SDA geht zum SDA Anschluss des Display

    LV2 = SCL = GPIO-PIn SCL
    HV2 = SCL geht zum SCL Anschluss des Displays

    Franky

  • Moin ;)

    Ne, GND muss nicht erklärt werden:S
    Die Bedeutung von LV und HV war mir auch bewusst.... nur habe ich ja LV und HV 1-4 und dazu noch ein LV und HV , ( GND wie gesagt ist ja klar ) .
    Meine Frage , wenn auch umständlich erklärt, war im Endeffekt ob die Pins HV sowie LV (nicht 1-4) die " Haupteingänge/Ausgänge sind und das Signal dann auf die 1-4 verteilt wird .;)

  • Moinsen,

    dann initiierst du erst einmal den I²C Bus mit dem Programm und scannst nach verfügbaren Adressen.

    Wenn dort keine Adresse angezeigt wird, dann hast du ein anderes Problem


    Python
    from machine import Pin, I2C
    
    sda_pin = 4
    scl_pin = 5
    i2c_host = 0
    
    i2c_bus = I2C(i2c_host, sda = Pin(sda_pin), scl = Pin(scl_pin))
    #i2c_bus.freq(400_000) # 400 kHz
    devices = i2c_bus.scan()
    print(devices) 

    Franky

    Edited once, last by Franky07 (April 27, 2024 at 4:39 PM).

  • Moinsen,

    dann initiierst du erst einmal den I²C Bus mit dem Programm und scannst nach verfügbaren Adressen.

    Wenn dort keine Adresse angezeigt wird, dann hast du ein anderes Problem


    Python
    from machine import Pin, I2C
    
    sda_pin = 4
    scl_pin = 5
    i2c_host = 0
    
    i2c_bus = I2C(i2c_host, sda = Pin(sda_pin), scl = Pin(scl_pin))
    i2c_bus.freq(400_000) # 400 kHz
    devices = i2c_bus.scan()
    print(devices) 


    So, das bekomme ich nun als Ausgabe

    Code
    >>> %Run -c $EDITOR_CONTENT
    
    MPY: soft reboot
    Traceback (most recent call last):
      File "<stdin>", line 8, in <module>
    AttributeError: 'I2C' object has no attribute 'freq'
    >>> 	
  • Moinsen,

    wieder einmal ein andere Version / Schreibweise


    Python
    from machine import Pin, I2C
    
    sda_pin = 4
    scl_pin = 5
    i2c_host = 0
    
    i2c_bus = I2C(i2c_host, sda = Pin(sda_pin), scl = Pin(scl_pin), freq = 400_000)
    devices = i2c_bus.scan()
    print(devices) 

    Franky

  • Moinsen,

    Und nun mal an all die Leute ( keepfear ) die sich hier mit so vielen Ratschlägen eine Mühe gegeben haben, immer neue Bibliotheken ins Spiel zu bringen. Ihr habe viel zu viel gejubelt, euch gegenseitig die Bewertungen nach oben geschoben, ohne jeden Nutzeffekt für den TO.

    Faktisch mit den ganzen vorgeschlagenen Experimenten habt ihr nur einen Zustand heraufbeschworen, dass ausgerechnet diese GPIOs die der TO nutzen wollte nun kaputt sind.


    Nach analytischer Vorgehensweise, dem Austausch genauer gesagt dem Weglassen des Breakout-Boards von Waveshare und einer Anpassung der GPIOs zu dem bestehenden Code funktioniert nun auch das 0,96" OLED wie auch das LCD Display mit PCF8574 I²C Adapter.

    rn_image_picker_lib_temp_71a7cc54-1482-48d7-beb5-256f132d58f0.jpg?ex=6673c140&is=66726fc0&hm=a5973d3b5fb1e610f79a4eebaf4c17bdfca1b38f5edc3e91c9e8fff3e8408953&=

    Dazu muss man auf einem µC nicht Micropython mit dem Code von CircuitPython vermischen, welcher ohnehin dafür bekannt ist nicht performant zu arbeiten.

    Es läuft nun alles, wenn auch mit anderen GPIO-Pin an diesem teilweise beschädigten PICO.
    Alles OLED Formen SSD1306 funktionieren, das LCD Display funktioniert mit dem Originalcode.

    Vielleicht solltet ihr da draußen, mal etwas analytischer Denken, mal den Signalweg versuchen nachzuvollziehen und dann entsprechende Entscheidungen treffen. Nicht immer ist neuer, anderer Code besser ! Und noch etwas, hört einfach mal mit eurer Selbsterhöhung auf. Es hilft keinem, auch keinen späteren Lesern.

  • Franky07

    Ihr habe viel zu viel gejubelt, euch gegenseitig die Bewertungen nach oben geschoben, ohne jeden Nutzeffekt für den TO.

    Und noch etwas, hört einfach mal mit eurer Selbsterhöhung auf. Es hilft keinem, auch keinen späteren Lesern.

    Sagt der, mit seiner Danksagung im Anhang.

    Faktisch mit den ganzen vorgeschlagenen Experimenten habt ihr nur einen Zustand heraufbeschworen, dass ausgerechnet diese GPIOs die der TO nutzen wollte nun kaputt sind.

    Faktisch ist es so, daß ich das gleiche OLED sowie auch LCD Display besitze und wenn der TO schon mehrere Displays getestet hat und keine davon liefen, könnte man meinen das der Pico vorher schon defekt war oder eben die Displays. Vielleicht lief ja auch was beim löten schief. Wer weiß das schon so genau?

    Es läuft nun alles, wenn auch mit anderen GPIO-Pin an diesem teilweise beschädigten PICO.
    Alles OLED Formen SSD1306 funktionieren, das LCD Display funktioniert mit dem Originalcode.

    Dazu muss man auf einem µC nicht Micropython mit dem Code von CircuitPython vermischen, welcher ohnehin dafür bekannt ist nicht performant zu arbeiten.

    Mein Display lief auch mit dem Code aus #16 und nein das ist keine Vermischung aus Micropython und Circuitpython. Du kannst den Code von Adafruit so auf den Microcontroller bügeln und es würde laufen. Da steckt nämlich kein Circuitpython dahinter.

    Hauptsache erstmal mit dem Finger auf andere zeigen und versuchen diese Bloß zustellen. Typisch für dich. :auslachen:

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!