I ported "uncanny eyes" over to the RA8876 library. I'm running two eyes on a 10" screen with a Teensy 3.6. I tried the 128x128 version of the eyes and got about 50 frames a second. I had some artifacts at the bottom of each eye, so added "#undef SPI_HAS_TRANSFER_ASYNC" right after including SPI.h. That got rid of the artifacts but dropped the frame rate to ~45 frames a second.
I next tried 240x240 eyes, which dropped the frame rate to ~20 frames a second. I didn't think they looked good so I switched back to 128x128.
I re-enabled async transfers and started investigating the artifacts. The "uncanny eyes" code does a Serial.println() once a second to report the frame rate. The artifacts in the display coincided with the println() call. I got rid of the artifacts by adding a "while(tft.activeDMA) ;" loop just before the Serial.println() call.
I'm now trying to incorporate the eyes into my Literary Clock (see post #34 in this thread). I'm having some problems with the external font ROM, has anyone gotten it to work?
Hello,
My main interrogation is : is a display with a specific IC like RA8876 is suitable for this kind of project ? If yes, what will be the more efficient way to drive the IC (spi, 8080, etc).
I'll have a look at teensy 4.1 dedicated hardware and see if can be used with the actual teensy 4.1 form factor.
Hello, did somebody succesfully implemented / used the user-defined characters feature on the ER-TFTM101-1 ( 1024x600 dots 10.1 "color tft lcd display with RA8876 ) ? I'm struggling to get this working ... I'm using the CGRAM_initial code, however without succes sofar .... would be great if somebody can share a complete working example. Thanks in advance !
Or if you want to manually make the changes yourself simply search this file (in your Arduino/libraries) for SPI_WriteCmd(0xBA) and change the SPI_WiteData immediately following it from 0x20 to 0x25
tft.useCanvas();
tft.putPicture_16bpp(0, 0, g_tft_width, g_tft_height);
tft.startSend();
SPI.transfer(RA8876_SPI_DATAWRITE);
SPI.transfer((uint8_t*)g_frame_buffer, NULL, g_tft_width*g_tft_height*2);
tft.endSend(true);
//tft.putPicture_16bppData8(0, 0, g_tft_width, g_tft_height, (uint8_t*)g_frame_buffer);
tft.updateScreen();
On the touch stuff, as I mentioned, I ordered another display... Now that CNY is I think over, hopefully should ship soon.
On a different front, while I have some free time, while waiting for some ideas of which way to go on things with MTP and MSC, thought I would play some more with the
picture viewer that allows you to download pictures using MTP...
We have it working with ILI9341 both my library (_t3n) with frame buffer support and yesterday added code to emulate frame buffer for _t3. Works also with out St7735/89 library and ILI9488...
But have also now been playing with the RA8876 and right now in particular to try to use offsecreen memory to update such that you don't see the window painting slowly over several seconds...
Have a version of it now that works with t4.1 with extmem, where I generate a full frame, and then send the whole frame
The update code now looks like:
Sort of hacky... was using the commented out function, which is outputting one byte at a time using transfer.Code:tft.useCanvas(); tft.putPicture_16bpp(0, 0, g_tft_width, g_tft_height); tft.startSend(); SPI.transfer(RA8876_SPI_DATAWRITE); SPI.transfer((uint8_t*)g_frame_buffer, NULL, g_tft_width*g_tft_height*2); tft.endSend(true); //tft.putPicture_16bppData8(0, 0, g_tft_width, g_tft_height, (uint8_t*)g_frame_buffer); tft.updateScreen();
This cut the time down from over 7 seconds to about 3.5...
View attachment 27481
Can cut this down also by seeing if I can get enough functions working with the canvas like idea such that I only actually upload the image... The background cleared by faster transfer...
Now back to playing.
I do have the picture viewer working better now on the RA8876,
I now have it uploading the pieces of the new pictures into PAGE2 and then when fully loaded I then tell it to copy the data to page 1...
View attachment 27486
I probably need to clean it up a little, but as I said works pretty well to be able to use MTP to put in new images (bmp, png, jpeg) and does some scaling of the images to fit...