云南做网站报价,网站开发公司 广告词,网站开发与设计中学生,wordpress 页面满屏深圳晶彩智能ESP32-3248S035R介绍
深圳晶彩智能出品ESP32-3248S035R为3.5寸彩色屏采用分辨率480x320彩色液晶屏#xff0c;驱动芯片是ST7796。板载乐鑫公司出品ESP-WROOM-32#xff0c;Flash 4M。型号尾部“R”标识电阻膜的感压式触摸屏#xff0c;驱动芯片是XPT2046。
Lo…深圳晶彩智能ESP32-3248S035R介绍
深圳晶彩智能出品ESP32-3248S035R为3.5寸彩色屏采用分辨率480x320彩色液晶屏驱动芯片是ST7796。板载乐鑫公司出品ESP-WROOM-32Flash 4M。型号尾部“R”标识电阻膜的感压式触摸屏驱动芯片是XPT2046。
LovyanGFX库介绍
LovyanGFX是一个为Arduino平台设计的图形驱动库它专门用于驱动TFT LCD显示屏和触摸屏。这个库是由lovyan03开发的旨在提供一个易于使用且高效的图形界面开发体验。
LovyanGFX支持多种微控制器平台包括但不限于ESP32、ESP8266、SAMD21、SAMD51和RP2040。这使得开发者可以在多种硬件上实现图形用户界面的设计与实现。此外LovyanGFX基于Adafruit-GFX-Library开发这是一个广泛使用的图形库为各种硬件平台提供了基础的图形操作功能。
使用LovyanGFX开发者可以通过简单的API调用来控制显示屏进行图形绘制和文字显示等操作。它提供了一系列的绘图函数如绘制线条、圆形、矩形、位图以及使用不同的字体显示文本等。这些功能使得开发者能够快速构建出具有图形界面的应用程序。
LovyanGFX的另一个优点是它对ESP-IDF的支持非常友好。ESP-IDF是乐鑫官方提供的开发框架以其高效的执行效率而受到开发者的青睐。使用ESP-IDF开发者可以充分利用ESP32的强大功能如集成的Wi-Fi和蓝牙模块以及丰富的外设支持。这对于开发需要图形界面的商业产品尤其有利因为ESP-IDF支持的功能更加全面而且可以用于商业化产品而使用Arduino开发的产品通常需要开源其代码。
此外LovyanGFX的GitHub页面提供了详细的文档和示例代码帮助开发者更好地理解和使用这个库。开发者还可以在WSL上使用SDL2进行模拟显示这样就不需要反复烧录到硬件上查看效果大大提高了开发效率。
总之LovyanGFX是一个功能强大、易于使用且高效的图形驱动库非常适合Arduino平台上的图形界面开发。无论是新手还是有经验的开发者都可以利用这个库快速构建出具有吸引力的图形用户界面。
ESP32-3248S035R管脚分布 MOSI MISO CLK CS DC RSTST7796 12 13 14 15 2 -1 XPT2046 12 13 14 33
platformIO.ini设置
[env:esp32dev]
platform espressif32
board esp32dev
framework arduinoupload_speed 921600
board_build.f_flash 80000000L
board_build.flash_mode dio
monitor_speed 115200
;upload_port COM3board_build.mcu esp32
upload_protocol esptool
; change MCU frequency
board_build.f_cpu 240000000L
lib_ldf_mode deep
board_build.partitions huge_app.csvbuild_flags -DCORE_DEBUG_LEVEL3-DBOARD_HAS_PSRAM-mfix-esp32-psram-cache-issue lib_deps lovyan03/LovyanGFX^1.1.12 写字板程序
#include Arduino.h
#define LGFX_USE_V1
#include LovyanGFX.hppclass LGFX : public lgfx::LGFX_Device
{lgfx::Panel_ST7796 _panel_instance;lgfx::Bus_SPI _bus_instance;lgfx::Light_PWM _light_instance;lgfx::Touch_XPT2046 _touch_instance;//----------------------------------------------------------------------
public:LGFX(void){{ auto cfg _bus_instance.config(); cfg.spi_host SPI2_HOST; cfg.spi_mode 0; cfg.freq_write 40000000; cfg.freq_read 16000000; cfg.spi_3wire false; cfg.use_lock true; cfg.dma_channel 1; cfg.pin_sclk 14; cfg.pin_mosi 13; cfg.pin_miso 12; cfg.pin_dc 2; _bus_instance.config(cfg); _panel_instance.setBus(_bus_instance);}{ auto cfg _panel_instance.config(); cfg.pin_cs 15; cfg.pin_rst -1; cfg.pin_busy -1; cfg.memory_width 320; cfg.memory_height 480; cfg.panel_width 320; cfg.panel_height 480; cfg.offset_x 0; cfg.offset_y 0; cfg.offset_rotation 0; cfg.dummy_read_pixel 8; cfg.dummy_read_bits 1; cfg.readable false; cfg.invert false; cfg.rgb_order false; cfg.dlen_16bit false; cfg.bus_shared false; _panel_instance.config(cfg);}{ auto cfg _light_instance.config(); cfg.pin_bl 27; cfg.invert false; cfg.freq 44100; cfg.pwm_channel 7; _light_instance.config(cfg);_panel_instance.setLight(_light_instance); }{ auto cfg _touch_instance.config();cfg.x_min 360; cfg.x_max 4200; cfg.y_min 180; cfg.y_max 3900; cfg.pin_int -1; cfg.bus_shared true; cfg.offset_rotation 3; cfg.spi_host SPI2_HOST; cfg.freq 1000000; cfg.pin_sclk 14; cfg.pin_mosi 13; cfg.pin_miso 12; cfg.pin_cs 33; _touch_instance.config(cfg);_panel_instance.setTouch(_touch_instance); }setPanel(_panel_instance); }
};
uint32_t count ~0;static LGFX display;
static LGFX_Sprite sprite(display);void setup(void)
{ display.init();display.setColorDepth(1);sprite.setColorDepth(1); display.setTextSize((std::max(display.width(), display.height()) 255) 8);display.fillScreen(TFT_BLACK);
}void loop(void)
{display.startWrite();display.setRotation(count 7);display.setColorDepth((count 8) ? 16 : 24);display.setTextColor(TFT_BLACK);display.drawNumber(display.getRotation(), 16, 0);display.setTextColor(0xFF0000U);display.drawString(R, 25, 16);display.setTextColor(0x00FF00U);display.drawString(G, 32, 16);display.setTextColor(0x0000FFU);display.drawString(B, 39, 16);display.setTextColor(0x0467FFU);display.drawString(JCZN, 25, 3);display.drawRect(30, 30, display.width() - 60, display.height() - 60, count * 7);display.drawFastHLine(0, 0, 10);display.endWrite();int32_t x, y;if (display.getTouch(x, y)){display.fillRect(x - 2, y - 2, 5, 5, count * 7);}
}