Pinned SSD1306 OLED Display

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

    • hueppi114 wrote:

      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
      Hallo jueppi,

      Du Hast dem Wert auf D9 gesetzt also 217. &H sagt dem Compiler, er bekommt die Werte Hexadezimal! Die folgenden 2 Zeichen bilden den Wert.

      mit .db werden Daten Daten direkt im Rom abgelegt. Eine reine Datensammlung ohne Funktion. In Bascom vergleichbar DATA (siehe Bascom Hilfe)
      Wobei der Font Editor die gleiche Schreibweise verwendet.

      .db steht für DatenByte es folgen hier je 2 Byte durch Komma getrennt und nach dem Semikolon ein Komentar (semikolen in der lib = Hochkomma in Bascom)
    • Ich habe folgendes Problem:
      Anzeige SSD1306 Größe: 0,91 zoll OLED Auflösung: 128x32 IIC.
      Wenn ich sie mit dem Beispielprogamm SSD1306-I2C.BAS von MSC ansteuere ist bei der Schrift Font8x8tt.font diese so klein, daß man sie nicht lesen kann.
      Wenn ich eine größere Schriftart nehme z.B. My12_16.font dann sieht man, daß die Zeichen nur in halber Höhe dargestellt werden:
      Die Zeichen dieser Schriftart sind z.B. 14 Pixel hoch, angezeigt werden aber nur 7. Daraus schließe ich, daß nur jede zweite Zeile angezeigt wird.
      Hat jemand eine Idee ?

      $regfile = "m32def.dat"
      $crystal = 8000000
      $hwstack = 40
      $swstack = 40
      $framesize = 60

      Config Scl = Portc.0 'Konfigurieren von I2C an K20
      Config Sda = Portc.1
      Config Twi = 400000 ' i2c speed
      waitms 200

      I2cinit
      $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
      $lib "glcdSSD1306-I2C.lib" ' override the default lib with this special one

      #if _build < 20784
      Dim ___lcdrow As Byte , ___lcdcol As Byte ' dim these for older compiler versions
      #endif

      Config Graphlcd = Custom , Cols = 128 , Rows = 32 , Lcdname = "SSD1306"
      Cls
      'Setfont Font8x8tt ' select font
      Setfont My12_16

      Lcdat 1 , 1 , "BASCOM-AVR"
      Lcdat 4 , 1 , "1995-2015"

      End

      '$include "font8x8TT.font" ' this is a true type font with variable spacing
      $include "my12_16.font"
      Files
      • SSD1306.JPG

        (77.41 kB, downloaded 10 times, last: )
    • elektrolyst wrote:

      Hat jemand eine Idee ?
      Ähnliches habe ich mit dem 128x64. Eine Änderung in der glcdSSD1306-I2C.lib Zeile 57 von &H12 in &H02 sorgte für vollständige Dahrstellung jedoch nur mit 32 Zeilen über die gesamte Fläche.

      17b wrote:

      Gibt es Befehle um Zeichen zu invertieren oder Zeilen zu scrollen. Kann man Sonderzeichen definieren?
      Nur den gesamten Bildschirm mit &HA7 (wieder normal mit &HA6). Scrollen ist möglich (noch nicht versucht, nur im Datenblat gesehen) Der 1306 hat keine Zeichen. Alles wird vom Avr passend in seinen Speicher geschrieben, so ist jedes beliebige Symbol möglich. Entweder in einer Font(Fontmaker) oder als Bild
    • Ich hab ein bischen gebastelt:

      Source Code

      1. I2cstart
      2. I2cwbyte $78 'Adresse
      3. I2cwbyte 128 'Vor jedem Befehl nötig
      4. I2cwbyte $26 'Scroll Horizontal Rechts
      5. I2cwbyte 128
      6. I2cwbyte 0 'Dummy
      7. I2cwbyte 128
      8. I2cwbyte 0 'Startpage (0-6)
      9. I2cwbyte 128
      10. I2cwbyte 6 'Speed (0-7)
      11. I2cwbyte 128
      12. I2cwbyte 7 'Endpage (>Start-7)
      13. I2cwbyte 128
      14. I2cwbyte 0 'Dummy
      15. I2cwbyte 128
      16. I2cwbyte $FF 'Dummy
      17. I2cstop
      Display All
      $27 horizontal links, $29/2A diagonal rechts/links (dabei ist das zweite Dummy der Vertikal offset und das dritte entfällt.
      Eingeleitet wird das Scrollen dann mit $2f und abgeschaltet mit $2E
    • Ich habe mir jetzt einen Font mal kopiert und in der Kopie die Veränderungen, sprich Sonderzeichen, vorgenommen. Um Platz zu sparen habe ich #, $, % und & überschrieben die ich nicht brauche. Geht und wird auch im Oled Display dargestellt. Allerdings werden die Sonderzeichen weder nach Erstellung noch bei erneutem Aufruf des Font Editors in der Char Spalte dargestellt. Schade, so muss man an anderer Stelle wieder festhalten was man wo geändert hat. Aber immerhin geht es.

      Ich habe heute noch ein 1.30" Display bekommen welches aber auf Anhieb nicht funktioniert. Ich habe mal 2x10k von SDA/SCK nach VDD gelötet und sie SSD1306 bzw SH1106 libs probiert , hat aber auch nichts gebracht. Hat jemand ne Idee bevor ich das wieder zurück schicke?


      IMG_20200522_140623.jpg
    • Der Font einen neuen Namen gegeben? Nicht das der Editor sich den alten genommen hat. Bei mir zeigt er die geänderten korrekt an.
      Stimmt die Adresse? Mal den I2Cfinder drüberlaufen lassen. Ein 1306 ist es vermutlich nicht da der nur einen Adresspin hat. ($78 oder $7A) Ein SSH ist es vermutlich auch nicht, deren Platinen sehen anders aus (auch nur ein Adresslötpunkt) Vielleicht den Lieferanten fragen welcher Chip drinne ist