-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Replies: 1 comment · 5 replies
-
Hi Dawid, you've done a great job of putting together a very capable library. I did download it but there seems to be a lot of missing header files so the examples do not compile. It would be good to combine the features of the libraries but... unfortunately I do not have the spare time to do this. TFT_eSPI was orginally developed for my own projects and I am surprised by it's popularity. It was not written with the intent to be extensible or elegantly structured as I suspect most Arduino IDE users don't care about this. At the moment I am reluctant to add any new features that I do not need myself as it will become more of a maintenance burden. I enjoy supporting users and it is great to see what hobbyists have done with it, but it has to remain a coffee break activity for me! |
Beta Was this translation helpful? Give feedback.
All reactions
-
Understood. Thank you for a very quick answer! If you don't mind, could you help me understand the compilation errors? It works for me, mostly (a classic!) so it might be due to difference in the workflow. (I noticed that couple of the examples only compile if renamed to src/main.cpp, rather than src/main.ino, which I now fixed). I am using PlatformIO (with Visual Studio Code), so my workflow is generally like this:
[env:esp32dev]
I just re-checked in a fresh project and it compiles fine. Would you mind letting me know how you're building it, so that I can debug and fix? (Obviously I would like the initial experience to be as smooth as possible). |
Beta Was this translation helpful? Give feedback.
All reactions
-
Bear in mind I am using the Arduino IDE environment and at the moment the library is not complete. I downloaded the library here and incorporated into the Arduino IDE libraries folder. The IDE does not recognise the examples because they need to be in a folder of the same name as the .ino file. So I fixed that and can load the examples. Next problem is here, these do not exist in the library, so I assumed that the folder here is needed. I pulled in that and some errors went away, but then there were some missing function errors so I gave up! I think the best way to find all the install problems is to load the Arduino IDE and try to integrate the library. Of course if it is not intended to be used in that environment then a PlatformIO user might have more success. |
Beta Was this translation helpful? Give feedback.
All reactions
-
To be more specific this function in the example does not exist so generates an error: I thought this might be buried in the roo_testing folder but it appears not to be, and that folder is not needed. I suspect the function has been renamed since the examples were created? I commented this out in a few places but linking fails:
Part of the problem seems to be with the stock ESP32 board package libraries in the Arduino IDE. As noted above, I think the best way to find all the install problems is to load the Arduino IDE and try to integrate the library. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Another problem:
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Thank you so much, this is very helpful! Indeed, I never tried to make it work with the Arduino IDE; I always used PlatformIO + VSCode. You are right about the renamed method (it is now called 'setBackgroundColor'); I fixed that in the main branch but it's not in the downloadable releases. It affects this particular example only, I think. But the link errors look a bit more serious so I will need to look into that. |
Beta Was this translation helpful? Give feedback.
-
Hi Bodmer,
I have been following TFT_eSPI for a while. That is some great work! I am particularly impressed by the optimizations you implemented for various device drivers.
As I was planning to use it for microcontroller UIs, one thing that I quickly started struggling with was extensibility. I wanted to add stuff such as generic drawable objects, rotations and scaling, more color modes for offscreen drawing, and transparency. The layers of TFT_eSPI are quite inter-woven, so adding any 'orthogonal' functionality (i.e. without requiring broad changes that touch device-specific code) seems next to impossible.
Long story short, I wrote a new library from scratch. Initially, I did it as an experiment to see if it can achieve similar performance but with better separation between the layers. The answer turned out to be 'yes'. Using vectorized APIs, with some help of C++ templates, I managed to make it so that it essentially matches or exceeds the performance of TFT_eSPI, despite using virtual method calls. (Yes, quite interestingly, it is faster in some non-trivial cases!) And, over time, it grew to be quite feature-rich.
The library is here: https://github.com/dejwk/roo_display
I am writing this in hope that you find it interesting, and to see if you would be into any sort of follow-up.
One thing that might be of interest to you, perhaps, are features of roo_display that might be reasonably easily portable to TFT_eSPI, such as: support for Material Icons collection, or perhaps the image importer and font-related stuff, as well as the touch driver, where I think I did a decent job. (I am sure you know how tricky the XPT2046 noise can be to deal with). From the other side, I think that the strongest points of TFT_eSPI, compared to roo_display, are: its great coverage for various display devices, its community, and its impressive collection of examples. (I have actually written an adapter that allows roo_display to be used with TFT_eSPI drivers, but it is definitely not as convenient as using native drivers would be).
Or maybe a tighter alignment of these two libraries is something you may find worth considering? I am thinking, how cool would it be if the contributions to the drivers and to the features could be orthogonal and universally beneficial.
Let me know what you think. I will also appreciate any comments and suggestions on how to make roo_display better, based on your experience.
--
Dawid
Beta Was this translation helpful? Give feedback.
All reactions