23 May 2023
Thank you for responding. Here are the steps I took:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Could the following json reference cause any problems?
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
Navigate to Tools > Board > Boards Manager…, type the keyword esp32 in the search box, select the latest version of esp32, and install it. (version 2.08 is installed)
GitHub - lvgl/lvgl: Embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's boosted by a professional yet affordable drag and drop UI editor, called SquareLine Studio. (installed this library)
Round-Display wiki:
Make sure the json file installed (check)
If you want to use the RTC function on the expansion board, then you also need to search and install the I2C BM8563 RTC library. (check)
If you have previously installed the TFT_eSPI library, please remove the original library and install the new one. (check)https:
Wiki LINK pointed to: //github.com/Maxwelltoo/TFT_eSPI
when installed produced this folder:
C:\Users\blablabla\Documents\Arduino\libraries\TFT_eSPI-master
Round-Display:
Wiki Link: GitHub - Seeed-Studio/Seeed_Arduino_RoundDisplay: An Arduino graphics library based on LVGL, specifically designed for Round Display for XIAO
lv_conf setup:
Then, you need to take the lv_conf.h file and cut it to the root directory of the Arduino library.
CAUTION
Note that the lv_conf.h file here is from Seeed_Arduino_RoundDisplay, not from the LVGL library.
On Windows, the root directory of the Arduino library is:
C:\Users${UserName}\Documents\Arduino\libraries (check)
User_Setup_Select.h setup:
For the content of Round Display, our tutorial will focus on the use of TFT_eSPI.
Please find the TFT_eSPI folder in the root directory of the Arduino library, and then modify the User_Setup_Select.h file in the TFT_eSPI directory.
C:\Users${UserName}\Documents\Arduino\libraries\TFT_eSPI\User_Setup_Select.h
If you want to use the TFT_eSPI library for display driving, you must comment out the line #include <User_Setup.h> and uncomment the line #include <User_Setups/Setup66_Seeed_XIAO_RoundDisplay.h> in the User_Setup_Select.h file.
edited “C:\Users\blablabla\Documents\Arduino\libraries\TFT_eSPI-master\User_Setup_Select.h”
If you want to use the TFT_eSPI library for display driving, you must comment out the line #include <User_Setup.h> and uncomment the line #include <User_Setups/Setup66_Seeed_XIAO_RoundDisplay.h> in the User_Setup_Select.h file. (check)
Arduino Library Overview (LINK BROKEN)
As we can probably tell from the above tutorial, Round Display mainly uses LVGL, TFT_eSPI and Arduino GFX libraries. For the sake of space, we will introduce the use of LVGL and TFT_eSPI libraries separately with the example of drawing a dial.
You can learn about the interface and use of the TFT_eSPI library by clicking here. (This link is broken)
Hardware Test:
Light up your Round Display
Once the hardware and software are ready, we start uploading our first example program. This sample program can be used to check if the Round Display’s RTC clock, SD card and touch functions are working properly.
You can find this sample program in the Arduino IDE under File → Examples → Seeed Arduino Round display → HardwareTest.
Problem compiling:
n file included from C:\Users\blablabla\Documents\Arduino\Seeed_Hardwar_Test\Seeed_Hardwar_Test.ino:7:
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:23: error: variable or field ‘xiao_disp_flush’ declared void
void xiao_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
^~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:23: error: ‘lv_disp_drv_t’ was not declared in this scope
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:23: note: suggested alternative: ‘lv_fs_drv_t’
void xiao_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
^~~~~~~~~~~~~
lv_fs_drv_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:38: error: ‘disp’ was not declared in this scope
void xiao_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
^~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:38: note: suggested alternative: ‘dup’
void xiao_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
^~~~
dup
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:44: error: expected primary-expression before ‘const’
void xiao_disp_flush( lv_disp_drv_t disp, const lv_area_t area, lv_color_t color_p )
^~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:78: error: expected primary-expression before '’ token
void xiao_disp_flush( lv_disp_drv_t disp, const lv_area_t area, lv_color_t color_p )
^
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:79: error: ‘color_p’ was not declared in this scope
void xiao_disp_flush( lv_disp_drv_t disp, const lv_area_t area, lv_color_t *color_p )
^~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:50:79: note: suggested alternative: ‘lv_color_t’
void xiao_disp_flush( lv_disp_drv_t disp, const lv_area_t area, lv_color_t *color_p )
^~~~~~~
lv_color_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h: In function ‘void lv_xiao_disp_init()’:
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:87:12: error: ‘lv_disp_draw_buf_t’ does not name a type; did you mean ‘lv_draw_ctx_t’?
static lv_disp_draw_buf_t draw_buf;
^~~~~~~~~~~~~~~~~~
lv_draw_ctx_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:89:29: error: ‘draw_buf’ was not declared in this scope
lv_disp_draw_buf_init( &draw_buf, buf, NULL, SCREEN_WIDTH * LVGL_BUFF_SIZE );
^~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:89:5: error: ‘lv_disp_draw_buf_init’ was not declared in this scope
lv_disp_draw_buf_init( &draw_buf, buf, NULL, SCREEN_WIDTH * LVGL_BUFF_SIZE );
^~~~~~~~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:89:5: note: suggested alternative: ‘lv_obj_draw_dsc_init’
lv_disp_draw_buf_init( &draw_buf, buf, NULL, SCREEN_WIDTH * LVGL_BUFF_SIZE );
^~~~~~~~~~~~~~~~~~~~~
lv_obj_draw_dsc_init
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:92: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;
^~~~~~~~~~~~~
lv_fs_drv_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:93:24: error: ‘disp_drv’ was not declared in this scope
lv_disp_drv_init( &disp_drv );
^~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:93:24: note: suggested alternative: ‘lv_disp_dpx’
lv_disp_drv_init( &disp_drv );
^~~~~~~~
lv_disp_dpx
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:93:5: error: ‘lv_disp_drv_init’ was not declared in this scope
lv_disp_drv_init( &disp_drv );
^~~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:93:5: note: suggested alternative: ‘lv_fs_drv_init’
lv_disp_drv_init( &disp_drv );
^~~~~~~~~~~~~~~~
lv_fs_drv_init
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:96:25: error: ‘xiao_disp_flush’ was not declared in this scope
disp_drv.flush_cb = xiao_disp_flush;
^~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:96:25: note: suggested alternative: ‘xiao_disp_init’
disp_drv.flush_cb = xiao_disp_flush;
^~~~~~~~~~~~~~~
xiao_disp_init
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:98:5: error: ‘lv_disp_drv_register’ was not declared in this scope
lv_disp_drv_register( &disp_drv );
^~~~~~~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:98:5: note: suggested alternative: ‘lv_fs_drv_register’
lv_disp_drv_register( &disp_drv );
^~~~~~~~~~~~~~~~~~~~
lv_fs_drv_register
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h: At global scope:
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:19: error: variable or field ‘chsc6x_read’ declared void
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:19: error: ‘lv_indev_drv_t’ was not declared in this scope
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:19: note: suggested alternative: ‘lv_indev_data_t’
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~~~~~~~~~~~
lv_indev_data_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:36: error: ‘indev_driver’ was not declared in this scope
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:36: note: suggested alternative: ‘lv_indev_reset’
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~~~~~~~~~
lv_indev_reset
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:66: error: expected primary-expression before '’ token
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:68: error: ‘data’ was not declared in this scope
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:141:68: note: suggested alternative: ‘atan’
void chsc6x_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
^~~~
atan
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h: In function ‘void lv_xiao_touch_init()’:
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:161:12: error: ‘lv_indev_drv_t’ does not name a type; did you mean ‘lv_indev_data_t’?
static lv_indev_drv_t indev_drv;
^~~~~~~~~~~~~~
lv_indev_data_t
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:162:24: error: ‘indev_drv’ was not declared in this scope
lv_indev_drv_init(&indev_drv);
^~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:162:5: error: ‘lv_indev_drv_init’ was not declared in this scope
lv_indev_drv_init(&indev_drv);
^~~~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:162:5: note: suggested alternative: ‘lv_fs_drv_init’
lv_indev_drv_init(&indev_drv);
^~~~~~~~~~~~~~~~~
lv_fs_drv_init
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:164:25: error: ‘chsc6x_read’ was not declared in this scope
indev_drv.read_cb = chsc6x_read;
^~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:164:25: note: suggested alternative: ‘chsc6x_get_xy’
indev_drv.read_cb = chsc6x_read;
^~~~~~~~~~~
chsc6x_get_xy
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:165:5: error: ‘lv_indev_drv_register’ was not declared in this scope
lv_indev_drv_register(&indev_drv);
^~~~~~~~~~~~~~~~~~~~~
C:\Users\blablabla\Documents\Arduino\libraries\Seeed_Arduino_RoundDisplay-main\src/lv_xiao_round_screen.h:165:5: note: suggested alternative: ‘lv_fs_drv_register’
lv_indev_drv_register(&indev_drv);
^~~~~~~~~~~~~~~~~~~~~
lv_fs_drv_register
In file included from C:\Users\blablabla\Documents\Arduino\Seeed_Hardwar_Test\Seeed_Hardwar_Test.ino:8:
C:\Users\blablabla\AppData\Local\Temp\arduino_build_651078\sketch\lv_hardware_test.h: In function 'void event_handler(lv_event_t)’:
lv_hardware_test.h:52:41: error: invalid conversion from 'void’ to 'lv_obj_t’ {aka '_lv_obj_t’} [-fpermissive]
lv_obj_t * obj = lv_event_get_target(e);
~~~~~~~~~~~~~~~~~^
C:\Users\blablabla\AppData\Local\Temp\arduino_build_651078\sketch\lv_hardware_test.h: In function 'void slider_event_cb(lv_event_t)’:
lv_hardware_test.h:72:44: error: invalid conversion from 'void’ to 'lv_obj_t’ {aka '_lv_obj_t’} [-fpermissive]
lv_obj_t * slider = lv_event_get_target(e);
~~~^
C:\Users\blablabla\AppData\Local\Temp\arduino_build_651078\sketch\lv_hardware_test.h: In function ‘void lv_hardware_test()’:
lv_hardware_test.h:82:5: error: ‘lv_obj_add_event_cb’ was not declared in this scope
lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
^
C:\Users\blablabla\AppData\Local\Temp\arduino_build_651078\sketch\lv_hardware_test.h:82:5: note: suggested alternative: ‘lv_obj_add_event’
lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
^~~~~~~~~~~~~~~~~~~
lv_obj_add_event
Multiple libraries were found for “SD.h”
Used: C:\Users\blablabla\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\SD
Not used: C:\Program Files (x86)\Arduino\libraries\SD
Bottom Line:
exit status 1
invalid conversion from ‘void*’ to ‘lv_obj_t*’ {aka ‘_lv_obj_t*’} [-fpermissive]