rm-hull / luma.lcd

Python module to drive PCD8544, HT1621, ST7735, ST7567 and UC1701X-based LCDs
https://luma-lcd.readthedocs.io
MIT License
156 stars 56 forks source link

Is the ILI9341V display supported? #178

Open nebhead opened 2 weeks ago

nebhead commented 2 weeks ago

Type of Raspberry Pi

Raspberry Pi Zero W (2W)

Linux Kernel version

Raspberry Pi OS Lite (Bullseye and Bookworm)

Expected behaviour

It appears that the ILI9341V might have some changes from the original ILI9341. I'm using Luma LCD to support the ILI9341 displays in my project (https://github.com/nebhead/pifire) which has been working wonderfully for a couple of years. However we have started to see this new variant of the ILI9341 pop-up in the market and they seem to have inverted colors.

Actual behaviour

Colors should not be inverted on the display.

image

thijstriemstra commented 2 weeks ago

@nebhead this esp-bsp ticket mentions that "the difference is in initialization sequence" and shows the correct sequence. It's C code but maybe it helps to figure out what the difference is and how to implement it in python.

nebhead commented 2 weeks ago

@nebhead this esp-bsp ticket mentions that "the difference is in initialization sequence" and shows the correct sequence. It's C code but maybe it helps to figure out what the difference is and how to implement it in python.

Oh excellent sleuthing!

Going out on a limb here, but maybe it's only the following line that needs to be updated:

    /* Invert colors */
    {LCD_CMD_INVON, {0}, 0},
thijstriemstra commented 2 weeks ago

And there's this driver https://github.com/juj/fbcp-ili9341/blob/master/ili9341.h that mentions

This has a subtle effect on colors/saturation. // Valid values are 0x20 and 0x30. Spec says 0x20 is default at boot, but doesn't seem so, more like 0x00 is default, giving supersaturated colors. I like 0x30 best. // Value 0x30 doesn't seem to be available on ILI9340.

Perhaps it's these 'supersaturated colors' you're seeing?

nebhead commented 2 weeks ago

I should also mention that I don't actually have one of these displays, but this was a report coming from a user of my project today. If we need to test any changes, maybe I can have this user help us with that.

And there's this driver https://github.com/juj/fbcp-ili9341/blob/master/ili9341.h that mentions

This has a subtle effect on colors/saturation. // Valid values are 0x20 and 0x30. Spec says 0x20 is default at boot, but doesn't seem so, more like 0x00 is default, giving supersaturated colors. I like 0x30 best. // Value 0x30 doesn't seem to be available on ILI9340.

Perhaps it's these 'supersaturated colors' you're seeing?

Maybe, but the background in the image should actually be black (and the text is white), so I think that it's inverse colors.

Here is an example of what it should look like:

image