LGVLDemo.ino generates this in my new GIGA Display

Hello all.

I downloaded the example code from:

The code compiled with the following warning:

Warning: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release

...and, this is the result in my GIGA Display:

There is something wrong with the orientation and the images. The touch is responsive, but for example, the slider moves to the left if I move to the right and vice-versa.

Any idea? I appreciate the help.

Hi @cbodington,
What LVGL version are you using?

Go to Library manager and search for: "lvgl" to find out the version.

I have installed Version 9.1.0

image

Try to downgrade LVGL version (e.g., 8.4.0) and let me know if the problem persists.

Did you try examples without LVGL? For instance this.

I downgraded the version to 9.0.0, and it works as expected.

I had not thought about downloading the version; thanks for the help.

1 Like

It should works also with 9.1.0 :melting_face:
Please could you re-test 9.1.0? Thanks

I updated it to 9.1.0, and it is still working, so I don't know why it was not working before.

I am trying to follow this tutorial:

https://docs.arduino.cc/tutorials/giga-display-shield/lvgl-guide/#minimal-example

However, with the first "Minimal example," I got the following error: Every time I try to compile the code, it takes about two minutes to finish. Is this time standard?

C:\Users\2S291J3\AppData\Local\Temp\arduino\sketches\D7E2ACA4383238BE2E3BD38B31C1E347\sketch\objs.a(Example1.ino.cpp.o): In function `setup':
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:9: undefined reference to `Arduino_H7_Video::begin()'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:14: undefined reference to `Arduino_H7_Video::width()'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:14: undefined reference to `Arduino_H7_Video::height()'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:21: undefined reference to `Arduino_H7_Video::width()'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:21: undefined reference to `Arduino_H7_Video::height()'
C:\Users\2S291J3\AppData\Local\Temp\arduino\sketches\D7E2ACA4383238BE2E3BD38B31C1E347\sketch\objs.a(Example1.ino.cpp.o): In function `__static_initialization_and_destruction_0':
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:5: undefined reference to `Arduino_H7_Video::Arduino_H7_Video(int, int, H7DisplayShield&)'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:6: undefined reference to `GigaDisplayShield'
C:\Users\2S291J3\Documents\Arduino\Example1/Example1.ino:6: undefined reference to `Arduino_H7_Video::~Arduino_H7_Video()'
collect2.exe: error: ld returned 1 exit status

Using library lvgl at version 9.1.0 in folder: C:\Users\2S291J3\Documents\Arduino\libraries\lvgl 
Using library Wire in folder: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Wire (legacy)
exit status 1

Compilation error: exit status 1

I am also trying to compile this example from the following link:

#include "lv_examples.h"
#if LV_BUILD_EXAMPLES && LV_USE_SWITCH

static void event_cb(lv_event_t * e)
{
    LV_LOG_USER("Clicked");

    static uint32_t cnt = 1;
    lv_obj_t * btn = lv_event_get_target(e);
    lv_obj_t * label = lv_obj_get_child(btn, 0);
    lv_label_set_text_fmt(label, "%"LV_PRIu32, cnt);
    cnt++;
}

/**
 * Add click event to a button
 */
void lv_example_event_1(void)
{
    lv_obj_t * btn = lv_button_create(lv_screen_active());
    lv_obj_set_size(btn, 100, 50);
    lv_obj_center(btn);
    lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL);

    lv_obj_t * label = lv_label_create(btn);
    lv_label_set_text(label, "Click me!");
    lv_obj_center(label);
}

#endif

But I am getting the following error:

C:\Users\2S291J3\AppData\Local\Temp\.arduinoIDE-unsaved2024226-1328-1w9lduy.jxur\sketch_mar26a\sketch_mar26a.ino: In function 'void lv_example_flex_3()':
C:\Users\2S291J3\AppData\Local\Temp\.arduinoIDE-unsaved2024226-1328-1w9lduy.jxur\sketch_mar26a\sketch_mar26a.ino:9:37: error: 'lv_screen_active' was not declared in this scope
     lv_obj_t * cont = lv_obj_create(lv_screen_active());
                                     ^~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Temp\.arduinoIDE-unsaved2024226-1328-1w9lduy.jxur\sketch_mar26a\sketch_mar26a.ino:9:37: note: suggested alternative: 'lv_scr_act'
     lv_obj_t * cont = lv_obj_create(lv_screen_active());
                                     ^~~~~~~~~~~~~~~~
                                     lv_scr_act

Using library examples in folder: C:\Users\christian.bodington\Documents\Arduino\libraries\examples (legacy)
Using library lvgl at version 8.3.11 in folder: C:\Users\christian.bodington\Documents\Arduino\libraries\lvgl 
exit status 1

Compilation error: 'lv_screen_active' was not declared in this scope

I am unsure if the problem is how I organize the examples in my Arduino folder vs. the library path.

You're using LVGL v8.3.11 and the code you're running is for LVGL v9. Upgrade LVGL.

And, you can't use native LVGL examples. It is needed to include Arduino_H7_Video Library and initialize the display (Follow LVGLDemo.ino example)

Please delete Arduino_H7_Video library from your library folder. The Arduino_H7_Video library is already included in the giga mbed os board package.

Okay, I deleted the Arduino_H7_Video library and tried to compile the "LVGLDemo.ino," but I got errors. When the library is installed, it usually compiles and works well.

With the library installed:

Without the library:

C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:27: error: variable or field 'lvgl_displayFlushing' declared void
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                           ^~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:27: error: 'lv_disp_drv_t' was not declared in this scope
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:27: note: suggested alternative: 'lv_fs_drv_t'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                           ^~~~~~~~~~~~~
                           lv_fs_drv_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:43: error: 'disp' was not declared in this scope
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                           ^~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:43: note: suggested alternative: 'dsi'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                           ^~~~
                                           dsi
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:49: error: expected primary-expression before 'const'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                                 ^~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:84: error: expected primary-expression before '*' token
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                                                                    ^
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:86: error: 'color_p' was not declared in this scope
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                                                                      ^~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:40:86: note: suggested alternative: 'lv_color_t'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
                                                                                      ^~~~~~~
                                                                                      lv_color_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp: In member function 'int Arduino_H7_Video::begin()':
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:88:12: error: 'lv_disp_draw_buf_t' does not name a type; did you mean 'lv_draw_buf_t'?
     static lv_disp_draw_buf_t draw_buf;
            ^~~~~~~~~~~~~~~~~~
            lv_draw_buf_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:94:28: error: 'draw_buf' was not declared in this scope
     lv_disp_draw_buf_init(&draw_buf, buf1, NULL, width() * height() / 10);      /* Initialize the display buffer. */
                            ^~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:94:28: note: suggested alternative: 'lv_draw_buf_t'
     lv_disp_draw_buf_init(&draw_buf, buf1, NULL, width() * height() / 10);      /* Initialize the display buffer. */
                            ^~~~~~~~
                            lv_draw_buf_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:94:5: error: 'lv_disp_draw_buf_init' was not declared in this scope
     lv_disp_draw_buf_init(&draw_buf, buf1, NULL, width() * height() / 10);      /* Initialize the display buffer. */
     ^~~~~~~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:94:5: note: suggested alternative: 'lv_draw_buf_init'
     lv_disp_draw_buf_init(&draw_buf, buf1, NULL, width() * height() / 10);      /* Initialize the display buffer. */
     ^~~~~~~~~~~~~~~~~~~~~
     lv_draw_buf_init
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:97:12: error: 'lv_disp_drv_t' does not name a type; did you mean 'lv_fs_drv_t'?
     static lv_disp_drv_t disp_drv;              /* Descriptor of a display driver */
            ^~~~~~~~~~~~~
            lv_fs_drv_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:98:23: error: 'disp_drv' was not declared in this scope
     lv_disp_drv_init(&disp_drv);                /* Basic initialization */
                       ^~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:98:5: error: 'lv_disp_drv_init' was not declared in this scope
     lv_disp_drv_init(&disp_drv);                /* Basic initialization */
     ^~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:98:5: note: suggested alternative: 'lv_fs_drv_init'
     lv_disp_drv_init(&disp_drv);                /* Basic initialization */
     ^~~~~~~~~~~~~~~~
     lv_fs_drv_init
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:99:25: error: 'lvgl_displayFlushing' was not declared in this scope
     disp_drv.flush_cb = lvgl_displayFlushing;   /* Set your driver function */
                         ^~~~~~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:99:25: note: suggested alternative: 'lv_display_flush_cb_t'
     disp_drv.flush_cb = lvgl_displayFlushing;   /* Set your driver function */
                         ^~~~~~~~~~~~~~~~~~~~
                         lv_display_flush_cb_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:104:27: error: 'LV_DISP_ROT_270' was not declared in this scope
       disp_drv.rotated  = LV_DISP_ROT_270;
                           ^~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:104:27: note: suggested alternative: 'LV_DISP_ROTATION_270'
       disp_drv.rotated  = LV_DISP_ROT_270;
                           ^~~~~~~~~~~~~~~
                           LV_DISP_ROTATION_270
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:108:27: error: 'LV_DISP_ROT_NONE' was not declared in this scope
       disp_drv.rotated  = LV_DISP_ROT_NONE;
                           ^~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:108:27: note: suggested alternative: 'LV_DIR_NONE'
       disp_drv.rotated  = LV_DISP_ROT_NONE;
                           ^~~~~~~~~~~~~~~~
                           LV_DIR_NONE
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:111:5: error: 'lv_disp_drv_register' was not declared in this scope
     lv_disp_drv_register(&disp_drv);        /* Finally register the driver */
     ^~~~~~~~~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:111:5: note: suggested alternative: 'lv_fs_drv_register'
     lv_disp_drv_register(&disp_drv);        /* Finally register the driver */
     ^~~~~~~~~~~~~~~~~~~~
     lv_fs_drv_register
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp: At global scope:
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:27: error: variable or field 'lvgl_displayFlushing' declared void
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                           ^~~~~~~~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:27: error: 'lv_disp_drv_t' was not declared in this scope
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:27: note: suggested alternative: 'lv_fs_drv_t'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                           ^~~~~~~~~~~~~
                           lv_fs_drv_t
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:43: error: 'disp' was not declared in this scope
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                           ^~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:43: note: suggested alternative: 'dsi'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                           ^~~~
                                           dsi
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:49: error: expected primary-expression before 'const'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                                 ^~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:84: error: expected primary-expression before '*' token
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                                                                    ^
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:86: error: 'color_p' was not declared in this scope
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                                                                      ^~~~~~~
C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video\src\Arduino_H7_Video.cpp:192:86: note: suggested alternative: 'lv_color_t'
 void lvgl_displayFlushing(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
                                                                                      ^~~~~~~
                                                                                      lv_color_t
Multiple libraries were found for "Arduino_H7_Video.h"
  Used: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video
  Not used: C:\Users\christian.bodington\Documents\Arduino\libraries\Arduino_H7_Video_old
Using library Arduino_H7_Video at version 1.0 in folder: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Arduino_H7_Video 
Using library Arduino_GigaDisplayTouch at version 1.0.1 in folder: C:\Users\christian.bodington\Documents\Arduino\libraries\Arduino_GigaDisplayTouch 
Using library Wire in folder: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Wire (legacy)
Using library lvgl at version 9.1.0 in folder: C:\Users\christian.bodington\Documents\Arduino\libraries\lvgl 
Using library Portenta_SDRAM at version 1.0 in folder: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\Portenta_SDRAM 
Using library ea_malloc in folder: C:\Users\2S291J3\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.1.1\libraries\ea_malloc (legacy)
exit status 1

Compilation error: exit status 1

The library Arduino_H7_Video included in the mbed core is compatible only with LVGL 8.x.x.
Please downgrade LVGL.
Wait for the next release of the core to upgrade LVGL to v9.1.0.
Please do not move the Arduino_H7_Video library in your "libraries" folder. It will create conflicts.

@Leocavagnis, thanks for your support.

Can you suggest some simple examples of how to write, for example, text in a specific screen area and then the value from any variable?

What I need to do is print a Label, the value from a variable I declared:

for example:

Temperature: 21 C, and the value comes from:

int Temperature = 21;

There is no clear to me how to do this with the examples we have in https://docs.lvgl.io/

I tried this: Label (lv_label) — LVGL documentation

#include "lv_examples.h"
#if LV_USE_LABEL && LV_BUILD_EXAMPLES

/**
 * Show line wrap, re-color, line align and text scrolling.
 */
void lv_example_label_1(void)
{
    lv_obj_t * label1 = lv_label_create(lv_screen_active());
    lv_label_set_long_mode(label1, LV_LABEL_LONG_WRAP);     /*Break the long lines*/
    lv_label_set_text(label1, "Recolor is not supported for v9 now.");
    lv_obj_set_width(label1, 150);  /*Set smaller width to make the lines wrap*/
    lv_obj_set_style_text_align(label1, LV_TEXT_ALIGN_CENTER, 0);
    lv_obj_align(label1, LV_ALIGN_CENTER, 0, -40);

    lv_obj_t * label2 = lv_label_create(lv_screen_active());
    lv_label_set_long_mode(label2, LV_LABEL_LONG_SCROLL_CIRCULAR);     /*Circular scroll*/
    lv_obj_set_width(label2, 150);
    lv_label_set_text(label2, "It is a circularly scrolling text. ");
    lv_obj_align(label2, LV_ALIGN_CENTER, 0, 40);
}

#endif

but I got this:

Any help is greatly appreciated.

Thanks!

you're using api of 9.1 with version 8.3.9.
See the correct documentation: Label (lv_label) — LVGL documentation

A post was split to a new topic: Upload fails: "No DFU capable USB device available"