I found my "bug". I'm not sure if anyone will encounter this, since the library doesn't switch addressing modes. But I'll put it here for future reference.
I'm using vertical addressing mode to place a large (2-line) digit on the display, and then switch back to page mode for the other text. It was causing strange overwrites. Oddly, the problem does not happen on a 128x64 display. There are commands for using vertical/horizontal mode to set the bounds (which line to which other line, and which column to which other column) of what you're writing. These commands are noted in the datasheet as "for horizontal/vertical modes only". But if you don't reset the values back, then writing in page mode gets messed up. So, if you're using horizontal or vertical mode and you change the column start/end (command 0x21) then you need to set them back to the full screen values of (start 0, end 127). Perhaps this also applies to page start/end, but my testing doesn't show this. Regards, Mike On Wednesday, September 23, 2020 at 9:10:23 AM UTC-4, Mike wrote: > > A little testing done. I forgot to include this change: > > The SetMultiplexRatio value will have to change in the init() procedure. > So... > > For 128x64: > _ssd1306_write_byte(_SSD1306_SET_MULTIPLEX) > _ssd1306_write_byte(0x3F) > > For 128x32: > _ssd1306_write_byte(_SSD1306_SET_MULTIPLEX) > _ssd1306_write_byte(0x1F) > > EDIT: After looking in the library Rob has beat me to it. :) It's > programmed as WIDTH-1. Great! > > Still need more testing, as I'm finding a strange bug when using vertical > and page mode together. This isn't part of the library, but I think it has > exposed another difference between 128x64 and 128x32 displays. > > Regards, > Mike > > > On Monday, August 31, 2020 at 4:39:46 PM UTC-4, Mike wrote: >> >> I have not used this library, since I wrote my own a while ago. But just >> a note if you decide to support the smaller 128x32 display... >> >> The SetComPins value will have to change in the init() procedure. So... >> >> For 128x64: >> _ssd1306_write_byte(_SSD1306_SET_COMPINS) >> _ssd1306_write_byte(0x12) >> >> For 128x32: >> _ssd1306_write_byte(_SSD1306_SET_COMPINS) >> _ssd1306_write_byte(0x02) >> >> >> -Mike >> >> >> On Saturday, July 18, 2020 at 10:43:30 AM UTC-4, RobJ wrote: >>> >>> Hi all, >>> >>> I created a library for the graphic display module using the SSD1306 >>> display controller. >>> >>> For more info (with video) see: http://justanotherlanguage.org/node/321 >>> >>> The library will be available in the next bee package. >>> >>> Kind regards, >>> >>> Rob >>> >> -- You received this message because you are subscribed to the Google Groups "jallib" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/bf5c679f-cd2b-4120-9b41-a8b9232af237o%40googlegroups.com.
