LCD / TFT / OLED Displays : What works, What Doesn't

@peekay123, will it work for the photon too?

@wesner0019, dudeā€¦ reallyā€¦ you have to ask! :stuck_out_tongue_winking_eye:

haha yeah, moment of excitement!

1 Like

Just tested and its working great!

1 Like

@wesner0019, I would love to see something you created with PixelMaster running on the display!

@peekay123,

Hereā€™s some code that I created, but if fails to compile due to conversions and using the compressed bit maps. Can you try to compile it?

@peekay123,

Fixed it. When the images are generated they came in defined wrong, I Changed the bitmaps to below.

extern uint8_t img_circlebw_bmp_comp[464] PROGMEM;

uint8_t img_circlebw_bmp_comp[464] PROGMEM = {

@wesner0019, I redefined and homogenized the use of prog_uchar so now everything compiles and displays (heheā€¦ nice!). I reposted the files in dropbox :wink:

2 Likes

Sweet, tested on my end and works great!

1 Like

@peekay123, whats your thought on difficulty of implementing the SPI DMA transfer to this code?

@wesner0019, the only time you can use SPI DMA is when you have a display buffer. Pixels doesnā€™t use buffers. The main reason why it doesnā€™t is RAM requirements. A 320x240 color display will use 3202402 (2 bytes per pixel) = 153,600 bytes! There are other techniques for using SPI DMA but not supported by Pixels.

Thanks for explanation!

1 Like

I was aiming to speed up the display some. I notice you had commented out the SPI.setClockDivider(SPI_CLOCK_DIV64); on line 112 of the hwspi mode. Could I change this to DIV2 to speed things up?

@wesner0019, give it a shot! Nothing ventured, nothing gained!! :stuck_out_tongue_winking_eye:

1 Like

@peekay123 changed it but no noticeable speed increases :disappointed: . I noticed there is a protected function called quickfill within the ILI9341. Do you think this would clear the screen faster than the standard clear funciton? If so how could this be used since itā€™s protected?

Usually protected functions will be called by other public functions or can be called by derived classes which could create a public function doing so.

Have a look if there are any references to this protected fn.

@wesner0019, quickFill() is called by the public function fill() which adds some sanity and settings checks before calling quickFill(). A public wrapper function could be added to call quickFill() directly.

Iā€™d like to do some tests with my hardware to look at the performance. The fill() function will work on both a full screen or a defined region. So is it necessary to clear the full screen or possibly just regions? Perhaps describing the use case would be good. :wink:

1 Like

@peekay123, once i have all my different menu structures figured out I could probably only fill certain areas but one particular screen is were I need to the full background to go between 2 different colors at 500ms intervals.

@wesner, understood. Iā€™ll do some testing and get back to you.

1 Like

@wesner0019, on my ILI9341 test platform running h/w SPI (DIV2), the Pixels clear function takes 233ms EXCEPT when threading is enabled AND in AUTOMATIC mode where it takes 242ms on average. So going between two different colors at 500ms intervals should not be a problem. :smiley: