Like the title says I’d like to only light up one pixel on a SSD1306 OLED (Standard Chinese OLED). I want to do this to plot bars and similar things real time.
I’m currently using the MultiLCD library and it’s been working great, however I don’t see any straight forward way to only light up on pixel and remove pixels in front of it in a controlled way.
One semi working way around this has been to replace an unused character with just keep some pixels lit while some dim, this kind of works but it still acts like an 8x8 character and removes pixels around it and doesn’t really look nice…
GypsumFantastic:
Where did LCD_SH1106 come from? What happened to the SSD1306?
What library are you actually using?
It's a lot easier if you just post the whole code.
Sorry I must have mistaken the module I was using. It is a SH1106 but they are pretty much identical.
There is nothing spectacular with the code but here it is.
GypsumFantastic:
OK, so it looks like you are using the MicroLCD library. This doesn't have the setPixel method. I don't know why they would have omitted that.
It has a draw method that might be useful.
Are you committed to using the MicroLCD library? Just that I noticed there's an Adafruit library for the SH1106 that has a setpixel function.
I’m not really committed to use it; I’d just prefer to not change a lot of code for my other projects that use the MicroLCD library. I have optimized the SH1106 and SSD1306 configuration (For power consumption).
It wouldn’t be too much of a hassle to move it over; otherwise I could port the pixelDraw to the MicroLCD library.
So I tried the Adafruit library and the "drawPixel" seems to work just fine. IL either port it to the MultiLCD library or convert my other projects to the Adafruit library.
So far I’m a little annoyed with the Adafruit library over the following.
Adafruit splash screen at startup. (I have to do an unassay clear in the setup)
Adafruit SH1106 driver doesn’t care for custom contrast settings and other power saving things. Even if I add it in the code it doesn’t do anything.
No clear way to clear just small part of the screen. If I print a value from the ADC and I want to update it I’ll have to clear the entire screen and redraw everything else. This is annoying and slows everything down a lot since I’m running on 1 MHz.