From dd27c3530432ea0b09f01e604bf577f31d8ef841 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:41:47 +1000 Subject: convert lvgl from submodule to a plain old directory --- lib/lvgl | 1 - .../examples/arduino/LVGL_Arduino/LVGL_Arduino.ino | 140 +++++++++++++++++++++ 2 files changed, 140 insertions(+), 1 deletion(-) delete mode 160000 lib/lvgl create mode 100644 lib/lvgl/examples/arduino/LVGL_Arduino/LVGL_Arduino.ino (limited to 'lib/lvgl/examples/arduino/LVGL_Arduino') diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 index 0732400e..00000000 --- a/lib/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0732400e7b564dd0e7dc4a924619d8e19c5b23a0 diff --git a/lib/lvgl/examples/arduino/LVGL_Arduino/LVGL_Arduino.ino b/lib/lvgl/examples/arduino/LVGL_Arduino/LVGL_Arduino.ino new file mode 100644 index 00000000..7c40ae8b --- /dev/null +++ b/lib/lvgl/examples/arduino/LVGL_Arduino/LVGL_Arduino.ino @@ -0,0 +1,140 @@ +#include +#include +/*If you want to use the LVGL examples, + make sure to install the lv_examples Arduino library + and uncomment the following line. +#include +*/ + +#include + +/*Change to your screen resolution*/ +static const uint16_t screenWidth = 480; +static const uint16_t screenHeight = 320; + +static lv_disp_draw_buf_t draw_buf; +static lv_color_t buf[ screenWidth * 10 ]; + +TFT_eSPI tft = TFT_eSPI(screenWidth, screenHeight); /* TFT instance */ + +#if LV_USE_LOG != 0 +/* Serial debugging */ +void my_print(const char * buf) +{ + Serial.printf(buf); + Serial.flush(); +} +#endif + +/* Display flushing */ +void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p ) +{ + uint32_t w = ( area->x2 - area->x1 + 1 ); + uint32_t h = ( area->y2 - area->y1 + 1 ); + + tft.startWrite(); + tft.setAddrWindow( area->x1, area->y1, w, h ); + tft.pushColors( ( uint16_t * )&color_p->full, w * h, true ); + tft.endWrite(); + + lv_disp_flush_ready( disp ); +} + +/*Read the touchpad*/ +void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data ) +{ + uint16_t touchX, touchY; + + bool touched = tft.getTouch( &touchX, &touchY, 600 ); + + if( !touched ) + { + data->state = LV_INDEV_STATE_REL; + } + else + { + data->state = LV_INDEV_STATE_PR; + + /*Set the coordinates*/ + data->point.x = touchX; + data->point.y = touchY; + + Serial.print( "Data x " ); + Serial.println( touchX ); + + Serial.print( "Data y " ); + Serial.println( touchY ); + } +} + +void setup() +{ + Serial.begin( 115200 ); /* prepare for possible serial debug */ + + String LVGL_Arduino = "Hello Arduino! "; + LVGL_Arduino += String('V') + lv_version_major() + "." + lv_version_minor() + "." + lv_version_patch(); + + Serial.println( LVGL_Arduino ); + Serial.println( "I am LVGL_Arduino" ); + + lv_init(); + +#if LV_USE_LOG != 0 + lv_log_register_print_cb( my_print ); /* register print function for debugging */ +#endif + + tft.begin(); /* TFT init */ + tft.setRotation( 3 ); /* Landscape orientation, flipped */ + + /*Set the touchscreen calibration data, + the actual data for your display can be acquired using + the Generic -> Touch_calibrate example from the TFT_eSPI library*/ + uint16_t calData[5] = { 275, 3620, 264, 3532, 1 }; + tft.setTouch( calData ); + + lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * 10 ); + + /*Initialize the display*/ + static lv_disp_drv_t disp_drv; + lv_disp_drv_init( &disp_drv ); + /*Change the following line to your display resolution*/ + disp_drv.hor_res = screenWidth; + disp_drv.ver_res = screenHeight; + disp_drv.flush_cb = my_disp_flush; + disp_drv.draw_buf = &draw_buf; + lv_disp_drv_register( &disp_drv ); + + /*Initialize the (dummy) input device driver*/ + static lv_indev_drv_t indev_drv; + lv_indev_drv_init( &indev_drv ); + indev_drv.type = LV_INDEV_TYPE_POINTER; + indev_drv.read_cb = my_touchpad_read; + lv_indev_drv_register( &indev_drv ); + +#if 0 + /* Create simple label */ + lv_obj_t *label = lv_label_create( lv_scr_act() ); + lv_label_set_text( label, LVGL_Arduino.c_str() ); + lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 ); +#else + /* Try an example from the lv_examples Arduino library + make sure to include it as written above. + lv_example_btn_1(); + */ + + // uncomment one of these demos + lv_demo_widgets(); // OK + // lv_demo_benchmark(); // OK + // lv_demo_keypad_encoder(); // works, but I haven't an encoder + // lv_demo_music(); // NOK + // lv_demo_printer(); + // lv_demo_stress(); // seems to be OK +#endif + Serial.println( "Setup done" ); +} + +void loop() +{ + lv_timer_handler(); /* let the GUI do its work */ + delay( 5 ); +} -- cgit v1.2.3