Towards a general display interface #380
Replies: 12 comments 5 replies
-
Coincidentally, I’m building a generic driver class + an implementation for an SSD1322 oled display to go with it. I am tailoring it to go with lvgl addon though. We should talk and add your LCD as well to the mix. |
Beta Was this translation helpful? Give feedback.
-
LVGL makes sense. I see samples/lvgl uses circle's CScreenDevice. Happy to collaborate. |
Beta Was this translation helpful? Give feedback.
-
I have identical requirements - to fit ILI9341 into MiniDexed, on board with your approach. |
Beta Was this translation helpful? Give feedback.
-
https://youtube.com/shorts/eMTahYKymk0?feature=share It works!
what you should have ready in the meantime: Regards. |
Beta Was this translation helpful? Give feedback.
-
Unfortunately this is currently not supported. I think, this shouldn't be included directly in |
Beta Was this translation helpful? Give feedback.
-
Short update: Anyway, here’s a video. Two types of input devices: 4 buttons in corners (on GPIOs) and a rotary encoder. |
Beta Was this translation helpful? Give feedback.
-
@dlbogdan Would you be open to collaborate on the driver? |
Beta Was this translation helpful? Give feedback.
-
Towards a general display interfaceI was dealing with the question, how different dot-matrix displays (e.g frame buffer, SPI LCDs) can be supported for different modes (e.g. Terminal, 2D graphics, LVGL GUI), and how Circle can support this in a flexible (i.e. use any display in any mode), efficient (i.e. performative), backwards compatible and possibly simple (i.e. easy to use) way. There is a preliminary version on the branch general-display-interface now. Feedback is very welcome and modifications are possible. CDisplayThe dot-matrix display support is based on the new class It defines a logical color type (
The classes CTerminalDeviceThere is a new class For compatibility the class The sample/08-usbkeyboard can be run on a ST7789-based SPI display now too. C2DGGraphicsThe class
The sample/41-screenanimations can be run on a ST7789-based SPI display now too. CLVGLThe class The class The addon/LVGL/sample can be run on a ST7789-based SPI display now too. CWindowDisplayThe class Currently the The sample/43-multiwindow demonstrates this class in a multi-core application. CCharGeneratorThe class The constructors or text drawing methods of the classes OptionsThe following (system) options control the display support:
The class CompatibilityThere are only a few API breaking changes. Most display classes can be used as before. The class The constructors of the classes The "virtual buffer" mode of The constructor of the class Future workIt should be easier now to implement new drivers for other currently unsupported displays to be able to use them with existing applications. If somebody wants to work in this direction, this would be highly appreciated. |
Beta Was this translation helpful? Give feedback.
-
ILI9341-based SPI displays are supported now too in sample/08-usbkeyboard, sample/41-screenanimations and addon/lvgl/sample on the branch general-display-interface. ST7789-based displays were already supported. Thanks to @u77345, who's driver (see the first comment) helped very much to get the ILI9341 support working. |
Beta Was this translation helpful? Give feedback.
-
There is a driver for SSD1306-based I2C displays now on the general-display-interface branch in addon/display/ssd1306display.*, which supports the |
Beta Was this translation helpful? Give feedback.
-
With the latest change on the branch general-display-interface an USB mouse or touchscreen can be used in any window of a multi-window application now, independent from the position of the window on the display. Only one window on a display can use the mouse or touchscreen. Furthermore an optional lazy update mode for This was probably the last modification for the new general support for dot-matrix displays. I will merge the feature to the develop branch on Dec 9, if there are no wishes for changes until then. API breaking changesThere are some API breaking changes, which come with the new display support:
Despite the last listed modification, all changes will lead to compiler errors on build, so they can be sorted out relatively quick. |
Beta Was this translation helpful? Give feedback.
-
The feature branch general-display-interface has been merged to develop and removed afterwards. |
Beta Was this translation helpful? Give feedback.
-
How do I add an SPI LCD to be used with 2DGraphics and potentially as ScreenDevice and CharDevice?
I started an implementation at https://github.com/u77345/circle/blob/master/addon/display/ili9341.cpp
Beta Was this translation helpful? Give feedback.
All reactions