{"id":15011925,"url":"https://github.com/rzeldent/esp32-smartdisplay","last_synced_at":"2025-05-15T15:04:40.456Z","repository":{"id":65241267,"uuid":"576760760","full_name":"rzeldent/esp32-smartdisplay","owner":"rzeldent","description":"PlatformIO library LVGL Drivers for Sunton Smart display boards (CYD Cheap Yellow Display). This library supports these boards without any effort. ESP32-2432S024N/R/C, ESP32-2432S028R/C, ESP32-3248S035R/C, ESP32_8048S070N/C","archived":false,"fork":false,"pushed_at":"2025-02-08T12:32:05.000Z","size":50917,"stargazers_count":534,"open_issues_count":45,"forks_count":100,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-15T15:04:39.728Z","etag":null,"topics":["arduino","cyd","esp32","esp32-2424s12","esp32-2432s022","esp32-2432s028","esp32-2432s028r","esp32-3248s035","esp32-3248s035c","esp32-3248s035r","esp32-8048s070c","esp32-8048s070n","ili9341","lvgl","platformio","platformio-library","smart-display","st7796","sunton","xpt2046"],"latest_commit_sha":null,"homepage":"https://github.com/rzeldent/platformio-espressif32-sunton","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rzeldent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-10T22:19:13.000Z","updated_at":"2025-05-13T11:56:57.000Z","dependencies_parsed_at":"2024-01-22T23:46:30.952Z","dependency_job_id":"5a89f228-0e4c-472d-ac1e-0b25571dcc76","html_url":"https://github.com/rzeldent/esp32-smartdisplay","commit_stats":{"total_commits":376,"total_committers":7,"mean_commits":"53.714285714285715","dds":0.6143617021276595,"last_synced_commit":"561c6b766e6aaebc087f79a473e93bd6d7c3632b"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fesp32-smartdisplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fesp32-smartdisplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fesp32-smartdisplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fesp32-smartdisplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rzeldent","download_url":"https://codeload.github.com/rzeldent/esp32-smartdisplay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254364270,"owners_count":22058878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","cyd","esp32","esp32-2424s12","esp32-2432s022","esp32-2432s028","esp32-2432s028r","esp32-3248s035","esp32-3248s035c","esp32-3248s035r","esp32-8048s070c","esp32-8048s070n","ili9341","lvgl","platformio","platformio-library","smart-display","st7796","sunton","xpt2046"],"created_at":"2024-09-24T19:41:54.086Z","updated_at":"2025-05-15T15:04:40.437Z","avatar_url":"https://github.com/rzeldent.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LVGL drivers for Chinese Sunton Smart display boards, aka CYD (Cheap Yellow Display)\n\n[![Platform IO CI](https://github.com/rzeldent/esp32-smartdisplay/actions/workflows/main.yml/badge.svg)](https://github.com/rzeldent/esp32-smartdisplay/actions/workflows/main.yml)\n[![PlatformIO Registry](https://badges.registry.platformio.org/packages/rzeldent/library/esp32_smartdisplay.svg)](https://registry.platformio.org/libraries/rzeldent/esp32_smartdisplay)\n\n## Supported boards\n\nThese Sunton boards have an LCD display and most of them have a touch interface.\nMore information, data sheets, ordering information etc. can be found at [Sunton Boards information](https://github.com/rzeldent/platformio-espressif32-sunton).\n\n- N = No touch\n- R = Resistive touch\n- C = Capacitive touch\n\nCurrently this library supports the following boards:\n\n- ESP32-1732S019 N/C\n- ESP32-2424S012 N/C\n- ESP32-2432S022 N/C\n- ESP32-2432S024 R/C/N\n- ESP32-2432S028 R ( 3 variants)\n- ESP32-2432S032 N/R/C\n- ESP32-3248S035 R/C\n- ESP32-4827S043 R/C\n- ESP32-4848S040C_I_Y_1/3\n- ESP32-8048S050 N/C/R\n- ESP32-8048S070 N/C/R\n\nThis library integrates seamlessly in [PlatformIO](https://platformio.org/) and supports these boards by providing display and touch and provides a jump start!\n\n## Why this library\n\nWith the boards, there is a link supplied and there are a lot of examples present and this looks fine.... If you know your way around....\n\nThese examples for [LVGL](https://lvgl.io/) depend on external libraries ([TFT_eSPI](https://github.com/Bodmer/TFT_eSPI) or [LovyanGFX](https://github.com/lovyan03/LovyanGFX)) but also different touch drivers.\nHowever, when working with these libraries, I found out that these libraries had their flaws using these boards:\n\n- Lots of configuring to do before it all works,\n- Using a third party library there is unnecessary code included (for other boards),\n- No support for on the fly rotating,\n- No support for touch,\n- Not using code already present in the ESP firmware\n- No LVGL integration\n- Easy compile the same application for different boards\n\n## Dependencies\n\nThis library depends on:\n\n- [LVGL](https://registry.platformio.org/libraries/lvgl/lvgl), currently version 9.1.0\n- [platformio-espressif32-sunton](https://github.com/rzeldent/platformio-espressif32-sunton)\n\n\u003e [!NOTE]\n\u003e This library uses the newly introduced esp_lcd_panel interfaces. This should provide some support in the future for updates and new boards. These drivers are provided by Espressid and have already been copied and included to this library.\n\n## How to use\n\nGet started by following the steps below. It is also highly recommended to look at the demo application [esp32-smartdisplay-demo](https://github.com/rzeldent/esp32-smartdisplay-demo) to quickly see the possibilities of this library.\n\n![Demo screen](assets/images/PXL_20231130_225143662.jpg)\n\nThis demo provides:\n\n- User Interface created using the SquareLine Studio GUI generator.\n- Read the CdS (light sensor)\n- Control of the LEDs\n- Works for all known Sunton boards (and more): see [Sunton Boards information](https://github.com/rzeldent/platformio-espressif32-sunton)\n- Full source code\n\nThe next sections will guide you though the process of creating an application. However, knowledge of PlatformIO, C/C++ and LVGL is required!\n\nIf you run into problems, first try to open a discussion on the [github esp32-smartdisplay discussion board](https://github.com/rzeldent/esp32-smartdisplay/discussions).\n\n### Step 1: Download (or open) PlatformIO\n\n[![PlatformIO](assets/images/PlatformIO.png)](https://platformio.org/)\n\nThis library is made for usage in PlatformIO. If not familiar with PlatformIO please take a look at their site and micro controller boards they support. However these boards only use the Arduino platform and ESP32 boards.\n\nMake sure you have PlatformIO installed and functional. Follow the documentation on their site:\n[https://docs.platformio.org/en/latest/](https://docs.platformio.org/en/latest/)\n\n### Step 2: Boards definitions\n\nThe board definitions required for this library are defined in the boards library [platformio-espressif32-sunton](https://github.com/rzeldent/platformio-espressif32-sunton). This library must reside in the `\u003cproject\u003e/boards` directory so PlatformIo will automatically recognize these boards.\n\n**It is recommended to use `git submodule` to include these board definitions automatically.**\n\n\u003e [!TIP]\n\u003e If you already have a project, clone it with the `git clone --recurse-submodules`. If creating a new project, use `git submodule add https://github.com/rzeldent/platformio-espressif32-sunton.git boards` to add them to your project as a submodule.\n\n### Step 3: Create a new project\n\nUse the standard PlatformIO create project to start a new project. When using a new PlatformIO installation these boards, defined in [platformio-espressif32-sunton](https://github.com/rzeldent/platformio-espressif32-sunton), are not present. Just use a known ESP32 board and correct this later in the platformIO file.\n\nOptionally, you can copy the boards definition to the `\u003chome\u003e/.platformio\\platforms\\espressif32\\boards` directory to have them always available but it is probably easier to create the project, add the boards as a git submodule and change the board afterwards. For each supported board there is a board definition.\n\n### Step 4: Add this library to your project\n\nTo add this library (and its dependency on LVGL) add the following line to the `platformio.ini` file:\n\nFrom the platformIO registry (version 2.0.x):\n\n```ini\nlib_deps = rzeldent/esp32_smartdisplay\n```\n\nor the Github repository:\n\n```ini\nlib_deps = https://github.com/rzeldent/esp32-smartdisplay.git\n```\n\nThis will automatically download the library, the LVGL library (as a dependency) and set the defines required for the low level drivers.\n\n### Step 5: Create a settings file for LVGL\n\nLVGL needs a configuration file; `lv_conf.h`. This file contains information about the fonts, color depths, default background, styles, etc...\nThe default LVGL template can be found in the LVGL library at the location: `lvgl/lv_conf_template.h`.\nThis file must be copied to the include directory and renamed to `lv_conf.h`. Also the `#if 0` must be removed to enable the file to be included.\n\nThis file can immediately be used and is valid. Some modifications might be required fore additional features.\n\nMore information about setting up a project with LVGL can be obtained at [LVGL get-started/quick-overview](https://docs.lvgl.io/master/get-started/quick-overview.html#add-lvgl-into-your-project).\nI suggest to put the `lv_conf.h` file in the include directory and set the build flags to specify the location of the file, see below.\n\nImportant settings are:\n\n- Only the R5G6B5 format is supported on these panels.\n\n  ```h\n  /*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/\n  #define LV_COLOR_DEPTH 16\n  ```\n\n- For debugging, enable CPU usage, FPS (Frames per Second) and memory defragmentation\n\n  ```h\n  #define LV_USE_PERF_MONITOR 1\n  #define LV_USE_MEM_MONITOR 1\n  ```\n\nFor debugging it is possible to enable logging from LVGL. The library will output to the debugging output (using `lv_log_register_print_cb`).\nTo enable logging, set the define:\n\n```h\n/*Enable the log module*/\n#define LV_USE_LOG 1\n```\n\nBy default the logging is only `LV_LOG_LEVEL_WARN` but can be adjusted in the `lv_conf.h`.\n\nTo enable additional decoding options, libraries or widgets, enable them in the lv_conf.ini file by setting a LV_USE_xxxx to 1.\nThese are disabled by default.\n\n```cpp\n//API for LittleFs.\n#define LV_USE_FS_LITTLEFS 0\n//LODEPNG decoder library\n#define LV_USE_LODEPNG 0\n//PNG decoder(libpng) library\n#define LV_USE_LIBPNG 0\n//BMP decoder library\n#define LV_USE_BMP 0\n// JPG + split JPG decoder library.\n#define LV_USE_TJPGD 0\n// libjpeg-turbo decoder library.\n#define LV_USE_LIBJPEG_TURBO 0\n//GIF decoder library\n#define LV_USE_GIF 0\n//Decode bin images to RAM\n#define LV_BIN_DECODER_RAM_LOAD 0\n//RLE decompress library\n#define LV_USE_RLE 0\n//QR code library\n#define LV_USE_QRCODE 0\n//Barcode code library\n#define LV_USE_BARCODE 0\n//FreeType library\n#define LV_USE_FREETYPE 0\n// Built-in TTF decoder\n#define LV_USE_TINY_TTF 0\n//Rlottie library\n#define LV_USE_RLOTTIE 0\n//Enable Vector Graphic APIs\n#define LV_USE_VECTOR_GRAPHIC  0\n//Enable ThorVG (vector graphics library) from the src/libs folder\n#define LV_USE_THORVG_INTERNAL 0\n//Use lvgl built-in LZ4 lib\n#define LV_USE_LZ4_INTERNAL  0\n//Use external LZ4 library\n#define LV_USE_LZ4_EXTERNAL  0\n//FFmpeg library for image decoding and playing videos\n#define LV_USE_FFMPEG 0\n```\n\nMore information about the LVGL configuration can be found in the excellent [LVGL documentation](https://docs.lvgl.io).\n\n\n\u003e [!WARNING]\n\u003e After the library has been build, changes in the lv_conf.h are no longer applied because libraries are cached.\n\u003e To apply these settings, delete the `.pio` directory so the libraries will be rebuild.\n\n### Step 6: Copy the build flags below in your project\n\nEspecially the definition of the LV_CONF_PATH is critical, this must point to an **absolute path** where the `lv_conf.h` file is located.\nMore about this in the [section below](#more-on-lv_confh). See below how this can be done with the use of the platformIO defines:\n\n```ini\nbuild_flags =\n    -Ofast\n    -Wall\n    '-D BOARD_NAME=\"${this.board}\"'\n    '-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_INFO'\n    #'-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG'\n    #'-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE'\n    '-D LV_CONF_PATH=${platformio.include_dir}/lv_conf.h'\n```\n\nThe line in the settings logs the INFO level to the serial console but can be omitted for production builds:\n\n```ini\n-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_NONE\n```\n\nThe -Wall flag can also be removed but outputs all the warnings.\n\n### Step 7: Initialize the display (and touch) in your project\n\nTo enable to display in your project call the void `smartdisplay_init()` function at startup and optionally set the orientation:\n\n```cpp\n#include \u003cArduino.h\u003e\n#include \u003cesp32_smartdisplay.h\u003e\n\nvoid setup()\n{\n  smartdisplay_init();\n\n  auto display = lv_display_get_default();\n  // lv_display_set_rotation(display, LV_DISPLAY_ROTATION_90);\n  // lv_display_set_rotation(display, LV_DISPLAY_ROTATION_180);\n  // lv_display_set_rotation(display, LV_DISPLAY_ROTATION_270);\n}\n```\n\nand update tick update and drawing in the loop:\n\n```cpp\nauto lv_last_tick = millis();\n\nvoid loop()\n{\n    auto const now = millis();\n    // Update the ticker\n    lv_tick_inc(now - lv_last_tick);\n    lv_last_tick = now;\n    // Update the UI\n    lv_timer_handler();\n}\n```\n\n## Step 8 (Optional): Create your LVGL file or use SquareLine Studio to make a design\n\nThere is a good UI designer available for LVGL and free (but some limitations) for personal use: [SquareLine Studio](https://squareline.io/):\n\n[![SquareLine Studio](assets/images/SquareLineStudio.png)](https://squareline.io/)\n\nThis tool makes it easy to create transitions, insert images, attach events, work with round screens etc.. A big advantage is that the UI C-code is generated!\nSquareLine als provides drivers but only export the ui files!\n\nIn the project settings change the include `lvgl/lvgl.h` to `lvgl.h`.\n\n## Step 9: Compile, upload and enjoy\n\nThese steps should make it possible to run your application on the display!\n\nIf there are problems:\n\n- Read this manual again to see if all the steps were followed,\n- Check if you installed the board definition(s) correctly, [see](#step-2-boards-definitions),\n- Check if the [demo application works](https://github.com/rzeldent/esp32-smartdisplay-demo/tree/feature/esp32s3) and look for differences,\n- Check if it is a known or previously resolved issue in the [issues](https://github.com/rzeldent/esp32-smartdisplay/issues),\n- Refer to the [discussions](https://github.com/rzeldent/esp32-smartdisplay/discussions),\n- If all fails, submit an [issue](https://github.com/rzeldent/esp32-smartdisplay/issues), no SLA as this is done in my spare time.\n\n## Porting from LVGL 8.3.9\n\nThere are breaking changes in LVGL. Please refer to the documentation and forums provided by LVGL to port your application.\n\n### lv_conf.h\n\nThe lv_conf.h template has been changed quite extensively.\nThe best way to start is to do a fresh start using the template from ```lvgl\\lv_conf_template.h```.\nCopy this to your include directory and and rename this to ```lv_conf.h```.\nNext, update the ```#if 0``` on top to ```#if 1``` so the wil will be included:\n\n```c++\n/* clang-format off */\n#if 1 /*Set it to \"1\" to enable content*/\n```\n\n### Ticker\n\nThe ticker needs to be updated to keep track of time. In LVGL 8.3.8 this was done by setting: ```#define LV_TICK_CUSTOM 1```.\nNow it has to be updated by your application. A solution is to put this in the loop() and combine this with the ```lv_timer_handler()```\n\n```c++\n    // Update the ticker\n    static auto lv_last_tick = millis();\n\n    auto const now = millis();\n    lv_tick_inc(now - lv_last_tick);\n    lv_last_tick = now;\n    // Update the UI\n    lv_timer_handler();\n```\n\n## More on lv_conf.h\n\nTo use the LVGL library, a `lv_conf.h` file is required to define the settings for LVGL.\nAs this file is referenced from the build of LVGL, the **absolute path** must be known.\nNormally this file is included in the include directory of your project but also used by the LVGL in the library.\n\nTo include it globally, the define must be (for the include directory):\n\n```ini\n  -D LV_CONF_PATH=${PROJECT_INCLUDE_DIR}/lv_conf.h\n```\n\n\u003e [!TIP]\n\u003e The template for the `lv_conf.h` file can be found in the LVGL library at `.pio/libdeps/\u003cboard\u003e/lvgl/lv_conf_template.h`.\n\n## LVGL initialization Functions\n\nThe library exposes the following functions.\n\n### void smartdisplay_init()\n\nThis is the first function that needs to be called.\nIt initializes the display controller and touch controller and will turn on the display at 50% brightness.\n\n### void smartdisplay_lcd_set_backlight(float duty)\n\nSet the brightness of the backlight display. The timer used has 13 bits (0 - 8191) but this is converted into a float so the value can be set in percent..\nThe range is from [0, 1] so 0 is off, 0.5 is half and 1 is full brightness.\n\n### void smartdisplay_lcd_set_brightness_cb(smartdisplay_lcd_adaptive_brightness_cb_t cb, uint interval)\n\nThis function can be called to periodically call a user defined function to set the brightness of the display. If a NULL value is passed for the parameter `cb` the functionality is disabled and the display is set to 50% brightness.\n\nThe callback function must have the following format:\n\n```cpp\nfloat smartdisplay_lcd_adaptive_brightness_function)()\n{\n  ...\n  return \u003cfloat[0,1]\u003e\n}\n```\n\nIf the board has a CdS sensor, a callback is automatically provided. The callback can be set to the internal function `smartdisplay_lcd_set_brightness_cb`.\nThis function will adjust the brightness to the value read from the CdS sensor on the front of the display.\n\nSo, to enable adaptive brightness using the CdS sensor, call\n\n```c++\nsmartdisplay_lcd_set_brightness_cb(smartdisplay_lcd_adaptive_brightness_cds, 100);\n```\n\nIf no CdS sensor is present, for example, the time of day can be used or sunrise/set.\n\n### void smartdisplay_led_set_rgb(bool r, bool g, bool b)\n\nIf the board has a RGB led, this function controls the on/off state of the RGB leds.\nA true value means: ON (LED is lit), false turns off the led.\n\nThis function allows only 8 LED colors:\n\n| R   | G   | B   | Color   |\n| --- | --- | --- | ------- |\n| 0   | 0   | 0   | Black   |\n| 1   | 0   | 0   | Red     |\n| 0   | 1   | 0   | Green   |\n| 0   | 0   | 1   | Blue    |\n| 1   | 1   | 0   | Yellow  |\n| 1   | 0   | 1   | Magenta |\n| 0   | 1   | 1   | Cyan    |\n| 1   | 1   | 1   | White   |\n\n![RGB Mix](assets/images/RGB.png)\n\n### touch_calibration_data_t touch_calibration_data\n\nThis data structure holds the calibration data for the touch display. If the valid member is true, adjustments will be applied.\n\n### touch_calibration_data_t smartdisplay_compute_touch_calibration(const lv_point_t screen[3], const lv_point_t touch[3])\n\nThis function returns the calibration data based on 3 points. The screen array contains the (selected) calibration points on the screen and the touch array the actual measured position.\nThe data returned can set in to the `touch_calibration_data`\n\n## Rotation of the display and touch\n\nThe library supports rotating for most of the controllers using hardware. Support for the direct 16bits parallel connection is done using software emulation (in LVGL). Rotating the touch is done by LVGL when rotating.\n\nFrom the LVGL documentation:\n_The rotation values are relative to how you would rotate the physical display in the clockwise direction.\nThus, LV_DISP_ROT_90 means you rotate the hardware 90 degrees clockwise, and the display rotates 90 degrees counterclockwise to compensate._\n\nRotating is done calling the `lv_display_set_rotation` function in the LVGL library with the rotation:\n\n```c++\n  auto display = lv_display_get_default();\n  lv_display_set_rotation(display, LV_DISPLAY_ROTATION_90);\n```\n\nSome boards are around that have flipped screens, this is probably due to differences during tha manufacturing or using different TFTs. It is possible to correct these boards overriding the default defines.\n\nTo adjust the display and touch to the default (LV_DISP_ROT_NONE) there are 6 defines in the boards definition:\n\n| Name             | Description                                   |\n| ---------------- | --------------------------------------------- |\n| DISPLAY_SWAP_XY  | Swaps the X and Y coordinates for the display |\n| DISPLAY_MIRROR_X | Mirrors the X coordinate for the display      |\n| DISPLAY_MIRROR_Y | Mirrors the Y coordinate for the display      |\n| TOUCH_SWAP_XY    | Swaps the X and Y coordinates for the touch   |\n| TOUCH_MIRROR_X   | Mirrors the X coordinate for the touch        |\n| TOUCH_MIRROR_Y   | Mirrors the Y coordinate for the touch        |\n\n## Appendix: Template to support ALL the boards\n\nThe platformio.ini file below supports all the boards. This is useful when running your application on multiple boards. If using one board only, uncomment the `default_envs` for that board in the `[platformio]` section.\n\n\u003e [!TIP]\n\u003e When building using a pipeline (github action), the ini below, with all the boards, can be used automatically create builds for all the boards.\n\n```ini\n[platformio]\n#default_envs = esp32-1732S019C\n#default_envs = esp32-1732S019N\n#default_envs = esp32-2424S012C\n#default_envs = esp32-2424S012N\n#default_envs = esp32-2432S022N\n#default_envs = esp32-2432S022C\n#default_envs = esp32-2432S024C\n#default_envs = esp32-2432S024N\n#default_envs = esp32-2432S024R\n#default_envs = esp32-2432S028R\n#default_envs = esp32-2432S028Rv2\n#default_envs = esp32-2432S028Rv3\n#default_envs = esp32-2432S032C\n#default_envs = esp32-2432S032N\n#default_envs = esp32-2432S032R\n#default_envs = esp32-3248S035C\n#default_envs = esp32-3248S035R\n#default_envs = esp32-4827S043C\n#default_envs = esp32-4827S043N\n#default_envs = esp32-4827S043R\n#default_envs = esp32-4848S040CIY1\n#default_envs = esp32-4848S040CIY3\n#default_envs = esp32-8048S043C\n#default_envs = esp32-8048S043N\n#default_envs = esp32-8048S043R\n#default_envs = esp32-8048S050C\n#default_envs = esp32-8048S050N\n#default_envs = esp32-8048S050R\n#default_envs = esp32-8048S070C\n#default_envs = esp32-8048S070N\n#default_envs = esp32-8048S070R\n#default_envs = esp32-s3touchlcd7\n\n[env]\nplatform = espressif32\nframework = arduino\n\nmonitor_speed = 115200\nmonitor_rts = 0\nmonitor_dtr = 0\nmonitor_filters = esp32_exception_decoder\n\n# Partition scheme for OTA\nboard_build.partitions = min_spiffs.csv\n\nbuild_flags =\n    -Ofast\n    #-Wall\n    -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE\n    # LVGL settings\n    #-DLV_CONF_PATH=${PROJECT_INCLUDE_DIR}/lv_conf.h\n\nlib_deps =\n    https://github.com/rzeldent/esp32-smartdisplay.git\n\n[env:esp32-1732S019C]\nboard = esp32-1732S019C\n\n[env:esp32-1732S019N]\nboard = esp32-1732S019N\n\n[env:esp32-2424S012C]\nboard = esp32-2424S012C\n\n[env:esp32-2424S012N]\nboard = esp32-2424S012N\n\n[env:esp32-2432S022N]\nboard = esp32-2432S022N\n\n[env:esp32-2432S022C]\nboard = esp32-2432S022C\n\n[env:esp32-2432S024C]\nboard = esp32-2432S024C\n\n[env:esp32-2432S024N]\nboard = esp32-2432S024N\n\n[env:esp32-2432S024R]\nboard = esp32-2432S024R\n\n[env:esp32-2432S028R]\nboard = esp32-2432S028R\n\n[env:esp32-2432S028Rv2]\nboard = esp32-2432S028Rv2\n\n[env:esp32-2432S028Rv3]\nboard = esp32-2432S028Rv3\n\n[env:esp32-2432S032C]\nboard = esp32-2432S032C\n\n[env:esp32-2432S032N]\nboard = esp32-2432S032N\n\n[env:esp32-2432S032R]\nboard = esp32-2432S032R\n\n[env:esp32-3248S035C]\nboard = esp32-3248S035C\n\n[env:esp32-3248S035R]\nboard = esp32-3248S035R\n\n[env:esp32-4827S043C]\nboard = esp32-4827S043C\n\n[env:esp32-4827S043R]\nboard = esp32-4827S043R\n\n[env:esp32-4827S043N]\nboard = esp32-4827S043N\n\n[env:esp32-4848S040CIY1]\nboard = esp32-4848S040CIY1\n\n[env:esp32-4848S040CIY3]\nboard = esp32-4848S040CIY3\n\n[env:esp32-8048S043C]\nboard = esp32-8048S043C\n\n[env:esp32-8048S043N]\nboard = esp32-8048S043N\n\n[env:esp32-8048S043R]\nboard = esp32-8048S043R\n\n[env:esp32-8048S050C]\nboard = esp32-8048S050C\n\n[env:esp32-8048S050N]\nboard = esp32-8048S050N\n\n[env:esp32-8048S050R]\nboard = esp32-8048S050R\n\n[env:esp32-8048S070C]\nboard = esp32-8048S070C\n\n[env:esp32-8048S070N]\nboard = esp32-8048S070N\n\n[env:esp32-8048S070R]\nboard = esp32-8048S070R\n\n[env:esp32-s3touchlcd7]\nboard = esp32-s3touchlcd7\n```\n\n## Appendix: External dependencies\n\nThe following libraries are used from the [Espressif component registry](https://components.espressif.com/):\n\n| Name                                                                                                                                              | Version |\n| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |\n| [ESP_LCD_PANEL_IO_ADDITIONS](https://components.espressif.com/api/download/?object_type=component\u0026object_id=fc4eba6f-2091-4b28-8703-df58c6c975c7) | v1.0.0  |\n| [ESP IO Expander Component](https://components.espressif.com/api/download/?object_type=component\u0026object_id=44022a0f-c4b2-40c0-b2a2-40d7b648cb52)  | v1.0.0  |\n| [ESP LCD Touch](https://components.espressif.com/api/download/?object_type=component\u0026object_id=bb4a4d94-2827-4695-84d1-1b53383b8001)              | v1.1.1  |\n\n## Version history\n\n- November 2024\n  - Version 2.1.0\n  - LVGL 9.2.2\n  - Software rotation flag\n  - Fix for non connected RST in touch drivers\n  - Fix for esp32-3248S035C buffer size\n- October 2024\n  - Fix for LVGL 9.2.2 that removed the sw_rotate flag\n- August 2024\n  - LVGL 9.2\n  - New boards\n- July 2024\n  - LVGL 9.1\n  - Update to LVGL 8.4.0\n  - Version 2.0.10\n- March 2024\n  - Rewrote drivers for devices and made them cleaner\n  - More parametrization\n  - Fix for more than one point received from GT911\n  - Added esp32-2432S022C\n  - Rotation issues fixes\n- January 2024\n  - Fixed esp32-8048S070C\n  - Added esp32-4848S040C_I_Y_1/3\n  - Added automatic brightness functionality (and CdS sensor callback)\n  - Use of Sunton boards defines\n  - Possibility to add calibration parameters\n- December 2023\n  - 2.0.2 release\n  - Updated documentation\n  - Added rotation\n  - Added esp32-1732S019N/C\n- November 2023\n  - Major version update: 2.0.0\n  - Rewrite of the library to support the new ESP32-C3 and ESP32-S3 panels\n  - Use the new Espressif esp_lcd interface\n  - Use C instead of cpp\n- October 2023\n  - Added support for esp32-8048S034N/C\n  - Added option for flipped/mirrored TFT's\n  - Changed default RGB order to BGR\n  - Version 1.0.8 and 1.0.9\n- September 2023\n  - Added support for esp32-2432S024N/R/S\n  - Version 1.0.7\n- August 2023\n  - Added support for esp32-8048S070N/C\n  - Display buffer size configurable\n- February 2023\n  - Version 1.0.3\n  - Added variable for the LCD panel RGB/BGR order\n- February 2023\n  - Version 1.0.3\n  - Added mutex for access to lvgl, required for multithreading\n  - Changed RGB led input to lv_color32_t\n- December 2022\n  - Initial version 1.0.2.\n  - Drivers for ESP32-2432S028R, ESP32-3248S035R and ESP32-3248S035C displays working.\n  - Sound output\n  - RGB Led output\n  - CDS light sensor input\n- July 2022\n  - Initial work started\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzeldent%2Fesp32-smartdisplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frzeldent%2Fesp32-smartdisplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzeldent%2Fesp32-smartdisplay/lists"}