first commit

This commit is contained in:
Alejandro Guerrero 2026-09-27 17:21:39 +02:00
commit e6a42e28e9
4355 changed files with 4626605 additions and 0 deletions

View file

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.16.0)
list(APPEND EXTRA_COMPONENT_DIRS "$(PROJECT_PATH)/../../../../../LovyanGFX")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(LovyanGFX-build-test)

View file

@ -0,0 +1 @@
#include "main/main.cpp"

View file

@ -0,0 +1,4 @@
idf_component_register(
SRCS "main.cpp"
INCLUDE_DIRS "."
REQUIRES LovyanGFX)

View file

@ -0,0 +1,239 @@
#if !defined LGFX_AUTODETECT
#define LGFX_AUTODETECT
#endif
#if !defined LGFX_USE_V1
#define LGFX_USE_V1
#endif
#if defined ( ARDUINO ) && defined ( ESP32 )
#include <SPIFFS.h>
#endif
#include <LovyanGFX.hpp>
#if defined SKIP_I2C_TEST
#define DUMMY_DISPLAY
#endif
#if defined DUMMY_DISPLAY
// AUTODETECT will fail, so let's build a dummy object
// with arbitraty display for the sakes of testing
class LGFX : public lgfx::LGFX_Device
{
lgfx::Panel_ST7735S _panel_instance;
lgfx::Bus_SPI _bus_instance;
public:
LGFX(void)
{
{
auto cfg = _bus_instance.config();
_bus_instance.config(cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
_panel_instance.config(cfg);
}
setPanel(&_panel_instance);
}
};
#endif
#if !defined SKIP_I2C_TEST
class LGFX_I2C : public lgfx::LGFX_Device
{
lgfx::Bus_I2C _bus_instance;
lgfx::Panel_SSD1306 _panel_instance;
lgfx::Touch_FT5x06 _touch_instance;
public:
LGFX_I2C(void)
{
{
auto cfg = _bus_instance.config();
_bus_instance.config(cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
_panel_instance.config(cfg);
}
{
auto cfg = _touch_instance.config();
_touch_instance.config(cfg);
_panel_instance.setTouch(&_touch_instance);
}
setPanel(&_panel_instance);
}
};
#endif
static LGFX display1;
#if !defined SKIP_I2C_TEST
static LGFX_I2C display2;
#endif
static LGFX_Sprite sprite(&display1);
void test(LGFX_Device &lcd)
{
lcd.init();
lcd.setRotation(1);
lcd.setBrightness(128);
lcd.setColorDepth(24);
lcd.drawPixel(0, 0, 0xFFFF);
lcd.drawFastVLine(2, 0, 100, lcd.color888(255, 0, 0));
lcd.drawFastVLine(4, 0, 100, lcd.color565( 0, 255, 0));
lcd.drawFastVLine(6, 0, 100, lcd.color332( 0, 0, 255));
uint32_t red = 0xFF0000;
lcd.drawFastHLine(0, 2, 100, red);
lcd.drawFastHLine(0, 4, 100, 0x00FF00U);
lcd.drawFastHLine(0, 6, 100, (uint32_t)0xFF);
uint16_t green = 0x07E0;
lcd.drawRect(10, 10, 50, 50, 0xF800);
lcd.drawRect(12, 12, 50, 50, green);
lcd.drawRect(14, 14, 50, 50, (uint16_t)0x1F);
uint8_t blue = 0x03;
lcd.fillRect(20, 20, 20, 20, (uint8_t)0xE0);
lcd.fillRect(30, 30, 20, 20, (uint8_t)0x1C);
lcd.fillRect(40, 40, 20, 20, blue);
lcd.setColor(0xFF0000U);
lcd.fillCircle ( 40, 80, 20 );
lcd.fillEllipse( 80, 40, 10, 20);
lcd.fillArc ( 80, 80, 20, 10, 0, 90);
lcd.fillTriangle(80, 80, 60, 80, 80, 60);
lcd.setColor(0x0000FFU);
lcd.drawCircle ( 40, 80, 20 );
lcd.drawEllipse( 80, 40, 10, 20);
lcd.drawArc ( 80, 80, 20, 10, 0, 90);
lcd.drawTriangle(60, 80, 80, 80, 80, 60);
lcd.setColor(0x00FF00U);
lcd.drawBezier( 60, 80, 80, 80, 80, 60);
lcd.drawBezier( 60, 80, 80, 20, 20, 80, 80, 60);
lcd.drawGradientLine( 0, 80, 80, 0, 0xFF0000U, 0x0000FFU);
lcd.fillScreen(0xFFFFFFu);
lcd.setColor(0x00FF00u);
lcd.fillScreen();
lcd.clear(0xFFFFFFu);
lcd.setBaseColor(0x000000u);
lcd.clear();
lcd.drawLine(0, 1, 39, 40, red);
lcd.drawLine(1, 0, 40, 39, blue);
lcd.startWrite();
lcd.drawLine(38, 0, 0, 38, 0xFFFF00U);
lcd.drawLine(39, 1, 1, 39, 0xFF00FFU);
lcd.drawLine(40, 2, 2, 40, 0x00FFFFU);
lcd.endWrite();
lcd.startWrite();
lcd.startWrite();
lcd.startWrite();
lcd.endWrite();
lcd.endWrite();
lcd.endWrite();
lcd.endWrite();
lcd.startWrite();
lcd.startWrite();
lcd.drawPixel(0, 0);
lcd.endTransaction();
lcd.beginTransaction();
lcd.drawPixel(0, 0);
lcd.endWrite();
lcd.endWrite();
lcd.startWrite();
for (uint32_t x = 0; x < 128; ++x) {
for (uint32_t y = 0; y < 128; ++y) {
lcd.writePixel(x, y, lcd.color888( x*2, x + y, y*2));
}
}
lcd.endWrite();
sprite.setColorDepth(24);
sprite.createSprite(65, 65);
for (uint32_t x = 0; x < 64; ++x) {
for (uint32_t y = 0; y < 64; ++y) {
sprite.drawPixel(x, y, lcd.color888(3 + x*4, (x + y)*2, 3 + y*4));
}
}
sprite.drawRect(0, 0, 65, 65, 0xFFFF);
sprite.pushSprite(64, 0);
sprite.pushSprite(&lcd, 0, 64);
sprite.setPivot(32, 32);
int32_t center_x = lcd.width()/2;
int32_t center_y = lcd.height()/2;
lcd.startWrite();
for (int angle = 0; angle <= 360; ++angle) {
sprite.pushRotateZoom(center_x, center_y, angle, 2.5, 3);
if ((angle % 36) == 0) lcd.display();
}
lcd.endWrite();
sprite.deleteSprite();
sprite.setColorDepth(4);
sprite.createSprite(65, 65);
sprite.setPaletteColor(1, 0x0000FFU);
sprite.setPaletteColor(2, 0x00FF00U);
sprite.setPaletteColor(3, 0xFF0000U);
sprite.fillRect(10, 10, 45, 45, 1);
sprite.fillCircle(32, 32, 22, 2);
sprite.fillTriangle(32, 12, 15, 43, 49, 43, 3);
sprite.pushSprite(&lcd, 0, 0, 0);
lcd.drawBmp((uint8_t*)nullptr, 0, 0, 0);
lcd.drawPng((uint8_t*)nullptr, 0, 0, 0);
lcd.drawJpg((uint8_t*)nullptr, 0, 0, 0);
lcd.drawQoi((uint8_t*)nullptr, 0, 0, 0);
#if defined ( ARDUINO ) && defined ( ESP32 )
lcd.drawBmpFile(SPIFFS, "/test.bmp");
lcd.drawPngFile(SPIFFS, "/test.png");
lcd.drawJpgFile(SPIFFS, "/test.jpg");
lcd.drawQoiFile(SPIFFS, "/test.qoi");
#endif
}
void setup()
{
test(display1);
#if !defined SKIP_I2C_TEST
test(display2);
#endif
}
void loop(void)
{
lgfx::delay(1000);
}
#if !defined ARDUINO
extern "C" {
void loopTask(void*)
{
setup();
for(;;) {
loop();
}
}
void app_main()
{
xTaskCreatePinnedToCore( loopTask, "loopTask", 8192, NULL, 1, NULL, 1 );
}
}
#endif

View file

@ -0,0 +1,15 @@
; Inspired from https://github.com/Jason2866/Tasmota-build
[platformio]
description = LGFX Build test suite for platformio
default_envs = esp8266
; lib_extra_dirs = ../../../../LovyanGFX
src_dir = main
extra_configs = platformio_esp8266.ini
platformio_esp32.ini
platformio_atmelsam.ini
platformio_rpipico.ini
[env]
framework = arduino
lib_deps = LovyanGFX

View file

@ -0,0 +1,18 @@
[atmelsam_default]
platform = atmelsam
[env:seeed_wio_terminal]
[env:adafruit_pybadge_m4]
[env:seeed_wio_terminal-default]
platform = ${atmelsam_default.platform}
board = seeed_wio_terminal
[env:adafruit_pybadge_m4-default]
platform = ${atmelsam_default.platform}
board = adafruit_pybadge_m4
build_src_flags =
${env.src_build_flags}
-DLED_PIN=13
-O3 -flto

View file

@ -0,0 +1,268 @@
[coding_standards]
build_flags =
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-sign-compare
-Wunreachable-code
-Wall
-Wextra
-Wshadow
-Wdouble-promotion
-Wformat
-Wnonnull
[esp32_1_0_6]
platform = espressif32 @ ^3
build_flags = ${coding_standards.build_flags}
[esp32_2_0_0]
platform = espressif32 @ ^4
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.0
build_flags = ${coding_standards.build_flags}
[esp32_2_0_1]
platform = espressif32 @ ^4
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.1
build_flags = ${coding_standards.build_flags}
[esp32_2_0_2]
platform = espressif32 @ ^4
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.2
build_flags = ${coding_standards.build_flags}
[esp32_2_0_3]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip
build_flags = ${coding_standards.build_flags}
[esp32_2_0_4]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.4/esp32-2.0.4.zip
build_flags = ${coding_standards.build_flags}
[esp32_2_0_5]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.5/esp32-2.0.5.zip
build_flags = ${coding_standards.build_flags}
[esp32_2_0_6]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.6/esp32-2.0.6.zip
build_flags = ${coding_standards.build_flags}
[esp32_2_0_7]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.7/esp32-2.0.7.zip
build_flags = ${coding_standards.build_flags}
[esp32_2_0_8]
platform = https://github.com/tasmota/platform-espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.8/esp32-2.0.8.zip
build_flags = ${coding_standards.build_flags}
[esp32_default]
platform = https://github.com/tasmota/platform-espressif32
;platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32/releases/download/2.0.3/esp32-2.0.3.zip
build_flags = ${coding_standards.build_flags}
[esp32]
board = esp32dev
[M5StickC]
board = m5stick-c
[M5Stack]
board = m5stack-core-esp32
[M5Core2]
board = m5stack-core2
[M5CoreS3]
board = esp32-s3-devkitc-1
board_upload.flash_size = 16MB
board_upload.maximum_size = 16777216
board_build.partitions = default_16MB.csv
board_build.arduino.memory_type = qio_qspi
build_flags =
${env.build_flags}
-DARDUINO_M5STACK_CORES3
-DBOARD_HAS_PSRAM
-DARDUINO_UDB_MODE=1
[esp32c3]
board = esp32dev
board_build.mcu = esp32c3
build_flags =
-DDUMMY_DISPLAY
${coding_standards.build_flags}
[esp32s2]
board = esp32dev
board_build.mcu = esp32s2
[esp32s3]
board = esp32dev
board_build.mcu = esp32s3
; for some reason platformio 5.0 wants this
[env:esp32]
[env:m5stick-c]
[env:m5stack-core-esp32]
[env:m5stack-core2]
[env:m5stack-cores3]
[env:esp32-s2]
[env:esp32-s3]
[env:esp32-c3]
[env:m5stack-cores3-2_0_5]
extends = M5CoreS3, esp32_2_0_5
[env:m5stack-cores3-2_0_6]
extends = M5CoreS3, esp32_2_0_6
[env:m5stack-cores3-2_0_7]
extends = M5CoreS3, esp32_2_0_7
[env:m5stack-cores3-2_0_8]
extends = M5CoreS3, esp32_2_0_8
[env:m5stack-cores3-default]
extends = M5CoreS3, esp32_2_0_8
[env:esp32-1_0_6]
extends = esp32, esp32_1_0_6
board = esp32dev
[env:esp32-2_0_0]
extends = esp32, esp32_2_0_0
[env:esp32-2_0_1]
extends = esp32, esp32_2_0_1
[env:esp32-2_0_2]
extends = esp32, esp32_2_0_2
[env:esp32-2_0_3]
extends = esp32, esp32_2_0_3
[env:esp32-2_0_4]
extends = esp32, esp32_2_0_4
[env:esp32-2_0_5]
extends = esp32, esp32_2_0_5
[env:esp32-2_0_6]
extends = esp32, esp32_2_0_6
[env:esp32-2_0_7]
extends = esp32, esp32_2_0_7
[env:esp32-2_0_8]
extends = esp32, esp32_2_0_8
[env:esp32-default]
extends = esp32, esp32_default
[env:m5stick-c-1_0_6]
extends = M5StickC, esp32_1_0_6
[env:m5stick-c-2_0_0]
extends = M5StickC, esp32_2_0_0
[env:m5stick-c-2_0_1]
extends = M5StickC, esp32_2_0_1
[env:m5stick-c-2_0_2]
extends = M5StickC, esp32_2_0_2
[env:m5stick-c-2_0_3]
extends = M5StickC, esp32_2_0_3
[env:m5stick-c-2_0_4]
extends = esp32, esp32_2_0_4
[env:m5stick-c-2_0_5]
extends = esp32, esp32_2_0_5
[env:m5stick-c-2_0_6]
extends = esp32, esp32_2_0_6
[env:m5stick-c-2_0_7]
extends = esp32, esp32_2_0_7
[env:m5stick-c-2_0_8]
extends = esp32, esp32_2_0_8
[env:m5stick-c-default]
extends = M5StickC, esp32_default
[env:m5stack-core-esp32-1_0_6]
extends = M5Stack, esp32_1_0_6
[env:m5stack-core-esp32-2_0_0]
extends = M5Stack, esp32_2_0_0
[env:m5stack-core-esp32-2_0_1]
extends = M5Stack, esp32_2_0_1
[env:m5stack-core-esp32-2_0_2]
extends = M5Stack, esp32_2_0_2
[env:m5stack-core-esp32-2_0_3]
extends = M5Stack, esp32_2_0_3
[env:m5stack-core-esp32-2_0_4]
extends = esp32, esp32_2_0_4
[env:m5stack-core-esp32-2_0_5]
extends = esp32, esp32_2_0_5
[env:m5stack-core-esp32-2_0_6]
extends = esp32, esp32_2_0_6
[env:m5stack-core-esp32-2_0_7]
extends = esp32, esp32_2_0_7
[env:m5stack-core-esp32-2_0_8]
extends = esp32, esp32_2_0_8
[env:m5stack-core-esp32-default]
extends = M5Stack, esp32_default
[env:m5stack-core2-1_0_6]
extends = M5Core2, esp32_1_0_6
[env:m5stack-core2-2_0_0]
extends = M5Core2, esp32_2_0_0
[env:m5stack-core2-2_0_1]
extends = M5Core2, esp32_2_0_1
[env:m5stack-core2-2_0_2]
extends = M5Core2, esp32_2_0_2
[env:m5stack-core2-2_0_3]
extends = M5Core2, esp32_2_0_3
[env:m5stack-core2-2_0_4]
extends = esp32, esp32_2_0_4
[env:m5stack-core2-2_0_5]
extends = esp32, esp32_2_0_5
[env:m5stack-core2-2_0_6]
extends = esp32, esp32_2_0_6
[env:m5stack-core2-2_0_7]
extends = esp32, esp32_2_0_7
[env:m5stack-core2-2_0_8]
extends = esp32, esp32_2_0_8
[env:m5stack-core2-default]
extends = M5Core2, esp32_default
[env:esp32-c3-2_0_1]
extends = esp32c3, esp32_2_0_1
[env:esp32-c3-2_0_2]
extends = esp32c3, esp32_2_0_2
[env:esp32-c3-2_0_3]
extends = esp32c3, esp32_2_0_3
[env:esp32-c3-2_0_4]
extends = esp32c3, esp32_2_0_4
[env:esp32-c3-2_0_5]
extends = esp32c3, esp32_2_0_5
[env:esp32-c3-2_0_6]
extends = esp32c3, esp32_2_0_6
[env:esp32-c3-2_0_7]
extends = esp32c3, esp32_2_0_7
[env:esp32-c3-2_0_8]
extends = esp32c3, esp32_2_0_8
[env:esp32-c3-default]
extends = esp32c3, esp32_default
[env:esp32-s2-2_0_1]
extends = esp32s2, esp32_2_0_1
[env:esp32-s2-2_0_2]
extends = esp32s2, esp32_2_0_2
[env:esp32-s2-2_0_3]
extends = esp32s2, esp32_2_0_3
[env:esp32-s2-2_0_4]
extends = esp32, esp32_2_0_4
[env:esp32-s2-2_0_5]
extends = esp32, esp32_2_0_5
[env:esp32-s2-2_0_6]
extends = esp32, esp32_2_0_6
[env:esp32-s2-2_0_7]
extends = esp32, esp32_2_0_7
[env:esp32-s2-2_0_8]
extends = esp32, esp32_2_0_8
[env:esp32-s2-default]
extends = esp32s2, esp32_default
[env:esp32-s3-2_0_3]
extends = esp32s3, esp32_2_0_3
[env:esp32-s3-2_0_4]
extends = esp32, esp32_2_0_4
[env:esp32-s3-2_0_5]
extends = esp32, esp32_2_0_5
[env:esp32-s3-2_0_6]
extends = esp32, esp32_2_0_6
[env:esp32-s3-2_0_7]
extends = esp32, esp32_2_0_7
[env:esp32-s3-2_0_8]
extends = esp32, esp32_2_0_8
[env:esp32-s3-default]
extends = esp32s3, esp32_default

View file

@ -0,0 +1,28 @@
[esp8266_default]
platform = espressif8266
[esp8266_3_0_0]
platform = espressif8266@3.0.0
[esp8266_3_1_0]
platform = espressif8266@3.1.0
[esp8266_3_2_0]
platform = espressif8266@3.2.0
[env:esp8266]
[env:esp8266-3_0_0]
platform = ${esp8266_3_0_0.platform}
board = d1_mini
[env:esp8266-3_1_0]
platform = ${esp8266_3_1_0.platform}
board = d1_mini
[env:esp8266-3_2_0]
platform = ${esp8266_3_2_0.platform}
board = d1_mini

View file

@ -0,0 +1,13 @@
[rpipico_default]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
[env:pico-default]
extends = rpipico_default
build_flags =
-DDUMMY_DISPLAY

View file

@ -0,0 +1,2 @@
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n