I was hoping to get some insight into an issue with my OLED display. Lines with more pixels on are drastically dimmer than those with a lower lighting rate.
How can I manage this phenomenon? I have seen this referred to occasionally as "crosstalk", but I can find very little documentation and few examples of this occurring. I have attempted to adjust contrast and pre-charge period, and while that affects the picture quality, it does not reduce the disparity between light and dark. You can see the example picture that I have been using below.
The display is a 2.7" monochrome OLED panel from WiseChip. It is running off a Metro board and has a SSD1309 driver. Thank you for any help.
Do you actually see what that photograph shows?
I get a perfect display but also that effect in a photograph.it is because of the interaction of the refresh rate of the OLED and the shutter speed of the camera.
You know, it's funny - the display was actually bought direct from the manufacturer. They thought the photos I sent them looked "normal", and I'm surprised - it doesn't line up with anything I have seen online about PMOLEDs in everyday hobbyist use. This manufacturer is fairly large (allegedly the #2 panel maker? that may not be accurate, but I believe they're close). I was hoping it had to do with my code or wiring... but who knows.
If you are not happy with it, ask for a replacement! The problem is cosmetic, but if uniform intensity is important to you, you should not have to keep the part.
Unless, of course, your other components are not providing suitable power or signals. You would probably get better advice on the Adafruit forum, as they have a lot of experience with various displays.
Hm.
(fetches previous protoboard)
(Looks carefully at the display)
Mine have the same "issue" across two different displays. Exact pattern, too.
Ah. Adafruit too. Their library is amazing. Massively overcomplicated (if you have fixed hardware SPI across a few different projects), but works with anything (hardware/software SPI/I2C) if you just need to get the display lit.
Yes. As you noticed the more pixels per horizontal row is lit the dimmer they get. I think it is down to the resistance in the panel's internal wiring, with more current to the displays leading to more voltage drop (along the conductor).
I do not think that is preventable.
You can try to fill some shapes on the screen and observe the .. hah. "different shades of grey"
And obviously, you would expect better display manufacturers to do better. Where did you get the display? links?
I did try u8g2, and sadly it didn't improve. Bit of a shame too, because I was hoping it was just a library/driver issue. Unfortunately, that wasn't the case. We'll see if something else helps!
That is very helpful to know, thanks! Glad it isn't just me. The library was quite tricky from Adafruit, yes. However, it did give me some features for modifying image brightness and contrast, which was quite helpful!
I have realized the same bit about resistance; I think the phenomenon is called crosstalk, but there's scant resources (although, there are some).
So when it comes down to electrical resistance like that, is there anything that can be done on the software side to reduce the voltage (read - brightness) across the shorter horizontal lines? My hope is that if I could adjust brightness on a line-by-line basis, something could be done to scale those lines to look like the dimmest line. Who knows though. I can't find anything in the controller nor display documentation about that, however.
The manufacturer is Wisechip, the producer of most of Adafruit's displays. This was direct from them. Here's the OLED panel.
The only way to make them "appear" to be dimmed is by flashing them on and off rapidly (which required fast hardware SPI). As far as I know the SSD1306 OLED controller don't have any support for that.
Looks like a pretty legit company that make decent product. FPC connector, too.
And they are Taiwan based so they are not affected by the nonsense that are going on in mainland.
The problem however is that their website is absolute trash. The documentations on the displays are useless (e.g. they didn't mention what version/model of driver chip the displays come with, if any) and there are no datasheets and/or specifications.
You would expect their chinese page to be better, but no.
Very interesting; what would that be called? modifying the duty cycle? I'm going to try to look for documentation on it. Shame if the SSD1306 can't support that, as I believe I have a fairly quick hardware SPI interface.
So far, they have been great, but yes, their website is terrible. I did manage to get ahold of the full datasheet eventually. I'll double-check as the controller could be an SSD1309 and not an SSD1306. May not help with the flashing on and off rapidly, but who knows. Thanks for the suggestions so far!
That would be called duty cycle, except we are effectively telling it to draw different images every time so it appears to be grey.
They do not support per-line dimming, I don't think.
Usually a hardware SPI interface (compared to software) is fast enough. I can pull 100+fps from a hardware SPI with a (16MHz) Leonardo if I am not doing something too computationally expensive. The Due or the Zero is even more ridiculously fast (the Leonardo has a 1MHz SPI bus while the two ARM chips have about 20MHz).
But its not going to be granular. See Arduboy community (where I used to write games at)
No.
Cross talk is where the signal in one part of a circuit is affected by a signal in an other.
Maybe the simplest example is when you are using an analogue multiplexer, and the selected channel's signal has a small amount of signal on it from one or more of the unselected channels. In the case of an analogue multiplexer then this cross talk is specified in the data sheet, normally in dBs.
Note different manufactures of the same part numbers will have different cross talk specifications. Which is why, when you are working for a professional company, the manufacturer of a part is specified as well as the device's part number, when telling the purchasing department what to buy.
So while it might be a problem with internal resistance, that would not be called cross talk.