Pinned SSD1306 OLED Display

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Hallo zusammen,

      Erst mal vielen Dank hierfür!

      Ich habe vorher ein OLDE SSD1306 per I2C angesteuert und das funktionierte ohne Probleme. Nun habe ich hier eines welches I2C und SPI kann (Siehe Foto). Ich möchte jedoch SPI verwenden. Die beiden Widerstände sind auf 0/0 also 4-Wire-Spi. Stimmt das soweit?

      Meine Belegung an einem M128er ist folgende:
      4 -> DINPORTB5
      5 -> CLKPORTB7
      6 -> CSPORTB4
      7 -> D/CPORTB3
      8 -> RESPORTB6



      Die DEMO habe ich dementsprechend angepasst:

      Source Code

      1. 'Hardware config
      2. Config Portb.4 = Output 'DISPLAY_SS CS
      3. Lcd_cs Alias Portb.4
      4. Lcd_cs = 1
      5. Config Portb.3 = Output 'DISPLAY_RS DC
      6. Lcd_rs Alias Portb.3
      7. Config Portb.5 = Output 'Spi_mosi D1
      8. Data_out Alias Portb.5
      9. Config Portb.7 = Output 'SPI_SCK D0
      10. Lcd_clk Alias Portb.7
      11. Lcd_clk = 1
      12. Config Portb.6 = Output 'DISPLAY_Reset
      13. Lcd_rst Alias Portb.6
      Display All
      Kompiliert fehlerfrei, jedoch bleibt das OLED schwarz. Sehr ihr den Fehler?

      Grüße,
      Snatch
      Files
      • OLED.jpg

        (158.32 kB, downloaded 23 times, last: )
    • djmsc wrote:

      Snatch wrote:

      Kompiliert fehlerfrei, jedoch bleibt das OLED schwarz. Sehr ihr den Fehler?
      Poste doch bitte mal das komplette Programm. So kann man den Fehler besser finden als wenn nur ein Programmfetzen da steht wie oben zu sehen.
      Hallo,

      ich bin ein Schritt weiter. Das OLED zeigt nun ein Rauschen. Ich habe dabei nur, die Pinbelegung in der DEMO nicht geändert, sondern meine Schaltung daran angepasst. Sehe wie gesagt nun ein Rauschen. das OLED ist im SPI-4 Modus konfiguriert und ich schnalle nicht, warum das nicht will.

      Das Programm (DEMO von hkipniks) welche ich nutze und ein neues Foto ist im Anhang.

      Und hier noch die geänderte Belegung:


      OLED -> DINPORTB.3 -> Bezeichnung DEMO = 'Spi_mosi D1
      OLED -> CLKPORTB.2 -> Bezeichnung DEMO = 'SPI_SCK D0
      OLED -> CSPORTB.5 -> Bezeichnung DEMO = 'DISPLAY_SS CS
      OLED -> D/CPORTB.4 -> Bezeichnung DEMO = 'DISPLAY_RS DC
      OLED -> RESPORTB.1 -> Bezeichnung DEMO = 'DISPLAY_Reset
      Files
      • SSD1306-Demo.bas

        (23.79 kB, downloaded 46 times, last: )
      • oled.jpg

        (178.89 kB, downloaded 40 times, last: )
    • Habe den Fehler gefunden. Ich darf Port beim Atmega128 nicht verwenden. Oder besser gesagt, ich muss den ISP-Programmer abhängen, nach dem Programmieren. Ging nur leider nicht, weil der auch die Spannungsversorgung darstellt. Habe nun alles auf PortC geändert und nun läuft es.

      Grüße
    • @hkipnik
      Diese Demo habe ich von dir runter geladen und leicht modifiziert. Das Ergebnis ist im Bild zu sehen. Dazu hätte ich folgende Fragen:
      - Wie kann ich die Farbe im Sketch ansprechen/einstellen. Das OLED hat gelb & blau aber so wie das Bild ist, ist das ohne irgend ein Zutun entstanden.
      - Mit welchen Hilfsmittel erstellt man eine .font Datei ?

      Bin für jeden sinnvollen Hinweis dankbar!
      Files
      • 20190113_090928.jpg

        (230.07 kB, downloaded 34 times, last: )
      • Test.bas

        (1.51 kB, downloaded 47 times, last: )
    • Danke, stimmt aber leider nur z.Zt: Eine "0" an dieser Stelle > farbiger Text, schwarzer Hintergrund
      Irgendeine Zahl an dieser Stelle > farbiger Hintergrund, schwarzer Text
      Mein OLED hat aber schwarz/gelb/blau

      In dieser Bascom lib .... gibt es da nur die calls, die auch im Beispiel (Hilfe) angegeben sind?
    • Hallo Kalle, du hast recht!
      Es es ist wohl nur das ca obere Viertel gelb. Ich dachte (hoffte), dass man die Schriftfarbe unabhängig vom Ort einstellen kann.
      Hast du sonst noch Erfahrung mit diesem Teil? .... ich suche einen Kleberahmen, mit dem man es vernünftig in eine Frontplatte einbauen kann.
    • Hallo,
      schönes Display, funktioniert auch soweit bei mir, und die Fonts kann ich auch wechseln.
      Eine Frage:
      Wie kann ich denn die Helligkeit/den Kontrast einstellen? Muss ich da die .Lib anpassen? Oder kann ich das im Programm einstellen?
      Grüsse
    • in der .lib Datei steht es so:


      _lcd_init_data:
      .db &H78, &HAE ; DISPLAYOFF
      .db &HD5, &H80 ; SETDISPLAYCLOCKDIV , ratio 0x80
      .db &H00, &H3F ; SETMULTIPLEX , 1f 128x32
      .db &HD3, &H00 ; SETDISPLAYOFFSET , 00
      .db &H40, &H8D ; SETSTARTLINE , CHARGEPUMP
      .db &H14, &H20 ; vccstate 14 , MEMORYMODE
      .DB &H00, &HA1 ; A0 upside down SEGREMAP
      .db &HC8, &HDA ; COMSCANDEC , SETCOMPINS
      .db &H12, &H81 ; 02 128x32 12 , SETCONTRAST
      .db &HA, &HD9 ; constrast value 255, SETPRECHARGE,
      .db &HF1, &HD8 ; vccstate f1 , SETVCOMDETECT
      .db &H40, &HA4 ; &H40 , DISPLAYALLON_RESUME
      .db &HA6, &HAF ; NORMALDISPLAY


      es steht zwar noch "contrast value 255", aber vorne habe ich den Wert auf "HA", also 10 gesetzt, und damit wird das Display um einiges dunkler.
      ich kann nicht mit allen Befehlen was anfangen, z.B. nicht, was ".db " heißt.....
      Ob ich das im Laufe des Programmes einfach wiederholen kann? Wie geschrieben, hat das mit dem I2C-Befehlen zu Fuß nicht funktioniert
    • Versuch mal:

      Source Code

      1. I2cstart
      2. I2cwbyte &H78 'Seine Adresse?
      3. I2cwbyte &H81 'SETCONTRAST
      4. I2cwbyte &H0A 'constrast 0-10 ???
      5. I2cstop
      Ein Vollständiges Init sollte nicht nötig sein. Im Datenblatt sollte stehen welche Befehle den Kontrast einstellen und welche Werte möglich sind. Oder wenns geht, den Wert einfach erhöhen bis es abschmiert a_28_2c02f089
      Dannach ist wirklich ein Init nötig :D