中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做低價的跨境電商網站百度競價推廣開戶多少錢

做低價的跨境電商網站,百度競價推廣開戶多少錢,南安住房與城鄉(xiāng)建設部網站,做網站的注意什么問題技術流 使用Gui Guider進行UI設計,生成lvgl code將lvgl code移植到esp32s3開發(fā)板 Gui Guider的安裝 安裝下面流程一步一步進行 LVGL的移植 硬件:esp32-8048s043開發(fā)板 開發(fā)環(huán)境:PlatformIO M1芯片安裝ESP32驅動 從https://www.wch.cn…

技術流

  1. 使用Gui Guider進行UI設計,生成lvgl code
  2. 將lvgl code移植到esp32s3開發(fā)板

Gui Guider的安裝

安裝下面流程一步一步進行
在這里插入圖片描述

LVGL的移植

硬件:esp32-8048s043開發(fā)板
開發(fā)環(huán)境:PlatformIO

M1芯片安裝ESP32驅動

從https://www.wch.cn/downloads/CH34XSER_MAC_ZIP.html安裝驅動,開發(fā)板USB連接后若顯示 /dev/cu.wchusbserial* 即安裝成功,可以使用Arduino和PlatformIO進行開發(fā)。

使用PlatformIO進行ESP32S3-WROOM-1的開發(fā)配置

使用esp32-s3-devkitc-1-N8開發(fā)板,需要加一些燒錄參數(shù)才可以將程序燒錄進去。

[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduinoboard_build.arduino.partitions = default_16MB.csv
board_build.arduino.memory_type = qio_opi
build_flags = -DBOARD_HAS_PSRAM
board_upload.flash_size = 16MB

運行LVGL Widget的Demo案例

PlatformIO新建一個Project,進行上述的燒錄配置。
隨后再加入開發(fā)的依賴庫

lib_deps = lvgl/lvgl@8.3.9tamctec/TAMC_GT911@^1.0.2moononournation/GFX Library for Arduino@1.2.8

保存,自動進行依賴庫的安裝
去官網https://docs.lvgl.io/8.3/,進行l(wèi)vgl的配置,主要就是修改lv_conf.h文件。
在這里插入圖片描述
如果是初始化的項目,在腳本最上面添加兩個依賴,可直接build,看項目是否正常工作。

#include <Wire.h>
#include <SPI.h>

修改main.cpp,運行widget案例:


/******************************************************************************** LVGL Widgets* This is a widgets demo for LVGL - Light and Versatile Graphics Library* import from: https://github.com/lvgl/lv_demos.git** Dependent libraries:* LVGL: https://github.com/lvgl/lvgl.git* Touch libraries:* FT6X36: https://github.com/strange-v/FT6X36.git* GT911: https://github.com/TAMCTec/gt911-arduino.git* XPT2046: https://github.com/PaulStoffregen/XPT2046_Touchscreen.git** LVGL Configuration file:* Copy your_arduino_path/libraries/lvgl/lv_conf_template.h* to your_arduino_path/libraries/lv_conf.h* Then find and set:* #define LV_COLOR_DEPTH     16* #define LV_TICK_CUSTOM     1** For SPI display set color swap can be faster, parallel screen don't set!* #define LV_COLOR_16_SWAP   1** Optional: Show CPU usage and FPS count* #define LV_USE_PERF_MONITOR 1******************************************************************************/
// #include "lv_demo_widgets.h"
#include <Arduino.h>
#include <lvgl.h>
#include <demos/lv_demos.h>
/*************************************************************************************************************************************************************/
#include <Arduino_GFX_Library.h>
#define LV_USE_PERF_MONITOR 1
#define TFT_BL 2
#define GFX_BL DF_GFX_BL // default backlight pin, you may replace DF_GFX_BL to actual backlight pin/* More dev device declaration: https://github.com/moononournation/Arduino_GFX/wiki/Dev-Device-Declaration */
#if defined(DISPLAY_DEV_KIT)
Arduino_GFX *gfx = create_default_Arduino_GFX();
#else  /* !defined(DISPLAY_DEV_KIT) *//* More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class */
// Arduino_DataBus *bus = create_default_Arduino_DataBus();/* More display class: https://github.com/moononournation/Arduino_GFX/wiki/Display-Class */
// Arduino_GFX *gfx = new Arduino_ILI9341(bus, DF_GFX_RST, 0 /* rotation */, false /* IPS */);Arduino_ESP32RGBPanel *bus = new Arduino_ESP32RGBPanel(GFX_NOT_DEFINED /* CS */, GFX_NOT_DEFINED /* SCK */, GFX_NOT_DEFINED /* SDA */,40 /* DE */, 41 /* VSYNC */, 39 /* HSYNC */, 42 /* PCLK */,45 /* R0 */, 48 /* R1 */, 47 /* R2 */, 21 /* R3 */, 14 /* R4 */,5 /* G0 */, 6 /* G1 */, 7 /* G2 */, 15 /* G3 */, 16 /* G4 */, 4 /* G5 */,8 /* B0 */, 3 /* B1 */, 46 /* B2 */, 9 /* B3 */, 1 /* B4 */
);
// option 1:
// ST7262 IPS LCD 800x480
Arduino_RPi_DPI_RGBPanel *gfx = new Arduino_RPi_DPI_RGBPanel(bus,800 /* width */, 0 /* hsync_polarity */, 8 /* hsync_front_porch */, 4 /* hsync_pulse_width */, 8 /* hsync_back_porch */,480 /* height */, 0 /* vsync_polarity */, 8 /* vsync_front_porch */, 4 /* vsync_pulse_width */, 8 /* vsync_back_porch */,1 /* pclk_active_neg */, 14000000 /* prefer_speed */, true /* auto_flush */);
#endif /* !defined(DISPLAY_DEV_KIT) */
/******************************************************************************** End of Arduino_GFX setting******************************************************************************//******************************************************************************** Please config the touch panel in touch.h******************************************************************************/
#include "touch.h"/* Change to your screen resolution */
static uint32_t screenWidth;
static uint32_t screenHeight;
static lv_disp_draw_buf_t draw_buf;
static lv_color_t *disp_draw_buf;
static lv_disp_drv_t disp_drv;/* 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);#if (LV_COLOR_16_SWAP != 0)gfx->draw16bitBeRGBBitmap(area->x1, area->y1, (uint16_t *)&color_p->full, w, h);
#elsegfx->draw16bitRGBBitmap(area->x1, area->y1, (uint16_t *)&color_p->full, w, h);
#endiflv_disp_flush_ready(disp);
}void my_touchpad_read(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
{if (touch_has_signal()){if (touch_touched()){data->state = LV_INDEV_STATE_PR;/*Set the coordinates*/data->point.x = touch_last_x;data->point.y = touch_last_y;}else if (touch_released()){data->state = LV_INDEV_STATE_REL;}}else{data->state = LV_INDEV_STATE_REL;}
}void setup()
{Serial.begin(115200);// while (!Serial);Serial.println("LVGL Widgets Demo");// Init touch device// Init Displaygfx->begin();
#ifdef TFT_BLpinMode(TFT_BL, OUTPUT);digitalWrite(TFT_BL, HIGH);
#endifgfx->fillScreen(RED);delay(500);gfx->fillScreen(GREEN);delay(500);gfx->fillScreen(BLUE);delay(500);gfx->fillScreen(BLACK);delay(500);lv_init();delay(10);touch_init();screenWidth = gfx->width();screenHeight = gfx->height();
#ifdef ESP32disp_draw_buf = (lv_color_t *)heap_caps_malloc(sizeof(lv_color_t) * screenWidth * screenHeight / 4, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
#elsedisp_draw_buf = (lv_color_t *)malloc(sizeof(lv_color_t) * screenWidth * screenHeight / 4);
#endifif (!disp_draw_buf){Serial.println("LVGL disp_draw_buf allocate failed!");}else{lv_disp_draw_buf_init(&draw_buf, disp_draw_buf, NULL, screenWidth * screenHeight / 4);/* Initialize the display */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);lv_demo_widgets();Serial.println("Setup done");}
}void loop()
{lv_timer_handler(); /* let the GUI do its work */delay(5);
}

其中,touch.h文件放入src/中:

/******************************************************************************** Touch libraries:* FT6X36: https://github.com/strange-v/FT6X36.git* GT911: https://github.com/TAMCTec/gt911-arduino.git* XPT2046: https://github.com/PaulStoffregen/XPT2046_Touchscreen.git******************************************************************************//* uncomment for FT6X36 */
// #define TOUCH_FT6X36
// #define TOUCH_FT6X36_SCL 19
// #define TOUCH_FT6X36_SDA 18
// #define TOUCH_FT6X36_INT 39
// #define TOUCH_SWAP_XY
// #define TOUCH_MAP_X1 480
// #define TOUCH_MAP_X2 0
// #define TOUCH_MAP_Y1 0
// #define TOUCH_MAP_Y2 320/* uncomment for GT911 */#define TOUCH_GT911#define TOUCH_GT911_SCL 20#define TOUCH_GT911_SDA 19#define TOUCH_GT911_INT -1#define TOUCH_GT911_RST 38#define TOUCH_GT911_ROTATION ROTATION_NORMAL#define TOUCH_MAP_X1 480#define TOUCH_MAP_X2 0#define TOUCH_MAP_Y1 272#define TOUCH_MAP_Y2 0/* uncomment for XPT2046 */
// #define TOUCH_XPT2046
// #define TOUCH_XPT2046_SCK 12
// #define TOUCH_XPT2046_MISO 13
// #define TOUCH_XPT2046_MOSI 11
// #define TOUCH_XPT2046_CS 38
// #define TOUCH_XPT2046_INT 18
// #define TOUCH_XPT2046_ROTATION 0
// #define TOUCH_MAP_X1 4000
// #define TOUCH_MAP_X2 100
// #define TOUCH_MAP_Y1 100
// #define TOUCH_MAP_Y2 4000int touch_last_x = 0, touch_last_y = 0;#if defined(TOUCH_FT6X36)
#include <Wire.h>
#include <FT6X36.h>
FT6X36 ts(&Wire, TOUCH_FT6X36_INT);
bool touch_touched_flag = true, touch_released_flag = true;#elif defined(TOUCH_GT911)
#include <Wire.h>
#include <TAMC_GT911.h>
TAMC_GT911 ts = TAMC_GT911(TOUCH_GT911_SDA, TOUCH_GT911_SCL, TOUCH_GT911_INT, TOUCH_GT911_RST, max(TOUCH_MAP_X1, TOUCH_MAP_X2), max(TOUCH_MAP_Y1, TOUCH_MAP_Y2));#elif defined(TOUCH_XPT2046)
#include <XPT2046_Touchscreen.h>
#include <SPI.h>
XPT2046_Touchscreen ts(TOUCH_XPT2046_CS, TOUCH_XPT2046_INT);#endif#if defined(TOUCH_FT6X36)
void touch(TPoint p, TEvent e)
{if (e != TEvent::Tap && e != TEvent::DragStart && e != TEvent::DragMove && e != TEvent::DragEnd){return;}// translation logic depends on screen rotation
#if defined(TOUCH_SWAP_XY)touch_last_x = map(p.y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width());touch_last_y = map(p.x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height());
#elsetouch_last_x = map(p.x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width());touch_last_y = map(p.y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height());
#endifswitch (e){case TEvent::Tap:Serial.println("Tap");touch_touched_flag = true;touch_released_flag = true;break;case TEvent::DragStart:Serial.println("DragStart");touch_touched_flag = true;break;case TEvent::DragMove:Serial.println("DragMove");touch_touched_flag = true;break;case TEvent::DragEnd:Serial.println("DragEnd");touch_released_flag = true;break;default:Serial.println("UNKNOWN");break;}
}
#endifvoid touch_init()
{
#if defined(TOUCH_FT6X36)Wire.begin(TOUCH_FT6X36_SDA, TOUCH_FT6X36_SCL);ts.begin();ts.registerTouchHandler(touch);#elif defined(TOUCH_GT911)Wire.begin(TOUCH_GT911_SDA, TOUCH_GT911_SCL);ts.begin();ts.setRotation(TOUCH_GT911_ROTATION);#elif defined(TOUCH_XPT2046)SPI.begin(TOUCH_XPT2046_SCK, TOUCH_XPT2046_MISO, TOUCH_XPT2046_MOSI, TOUCH_XPT2046_CS);ts.begin();ts.setRotation(TOUCH_XPT2046_ROTATION);#endif
}bool touch_has_signal()
{
#if defined(TOUCH_FT6X36)ts.loop();return touch_touched_flag || touch_released_flag;#elif defined(TOUCH_GT911)return true;#elif defined(TOUCH_XPT2046)return ts.tirqTouched();#elsereturn false;
#endif
}bool touch_touched()
{
#if defined(TOUCH_FT6X36)if (touch_touched_flag){touch_touched_flag = false;return true;}else{return false;}#elif defined(TOUCH_GT911)ts.read();if (ts.isTouched){
#if defined(TOUCH_SWAP_XY)touch_last_x = map(ts.points[0].y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);touch_last_y = map(ts.points[0].x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#elsetouch_last_x = map(ts.points[0].x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);touch_last_y = map(ts.points[0].y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#endifreturn true;}else{return false;}#elif defined(TOUCH_XPT2046)if (ts.touched()){TS_Point p = ts.getPoint();
#if defined(TOUCH_SWAP_XY)touch_last_x = map(p.y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);touch_last_y = map(p.x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#elsetouch_last_x = map(p.x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);touch_last_y = map(p.y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#endifreturn true;}else{return false;}#elsereturn false;
#endif
}bool touch_released()
{
#if defined(TOUCH_FT6X36)if (touch_released_flag){touch_released_flag = false;return true;}else{return false;}#elif defined(TOUCH_GT911)return true;#elif defined(TOUCH_XPT2046)return true;#elsereturn false;
#endif
}

修改lv_conf.ini文件,打開對應demo實例的開關

/*===================* DEMO USAGE====================*//*Show some widget. It might be required to increase `LV_MEM_SIZE` */
#define LV_USE_DEMO_WIDGETS 1
#if LV_USE_DEMO_WIDGETS
#define LV_DEMO_WIDGETS_SLIDESHOW 1
#endif

將.pio/libdeps/esp32*/lvgl整個文件夾復制到src/lvgl,即可插上開發(fā)板build、上傳到板子。

**注:**修改lv_conf.h的demo部分的開關以及在main.cpp的setup代碼的lv_demo_widgets();可以選擇demo演示

http://www.risenshineclean.com/news/6857.html

相關文章:

  • 如何取消wordpress限制搜索引擎優(yōu)化大致包含哪些內容或環(huán)節(jié)
  • 中國建設銀行網站評價西安關鍵詞優(yōu)化服務
  • 免費空間網站推薦百度地圖網頁版進入
  • 寧波有哪家公司做網站的2023年火爆的新聞
  • html購物網站重慶關鍵詞優(yōu)化服務
  • 珠海企業(yè)網站推廣服務找關鍵詞的方法與技巧
  • 網站開發(fā)跟軟件開發(fā)如何在百度搜索到自己的網站
  • 專業(yè)網站設計開發(fā)網站互聯(lián)網廣告投放代理公司
  • 做h5的網站有哪些php開源建站系統(tǒng)
  • 東莞住房和建設局網站外貿業(yè)務推廣
  • 設計網站公司為什么都在上海淘寶運營培訓多少錢
  • wordpress單本小說站seo主要優(yōu)化哪些
  • 南皮網站建設南寧網站建設及推廣
  • 公司設計網站需要注意哪些sem優(yōu)化是什么意思
  • 無錫做網站價格方象科技的企業(yè)愿景
  • 漢口網站制作怎么開發(fā)一個網站
  • 百度站點提交工具app開發(fā)工具
  • 網站建設的單可以刷嗎磁力多多
  • 資訊類網站建設網站生成器
  • visual studio 網站開發(fā)網絡推廣外包怎么接單
  • 青島網站建設公司排行谷歌下載安裝
  • 免費安裝電腦wordpress長沙關鍵詞優(yōu)化服務
  • 淺析b2c電子商務網站的建設seo是對網站進行什么優(yōu)化
  • 豆各莊做網站的公司長治seo
  • 設計logo圖標抖音seo推薦算法
  • 做網站什么什么鄭州網絡推廣平臺
  • 維度網絡做網站合肥網絡推廣外包
  • 男生十大好就業(yè)專業(yè)seo是什么意思知乎
  • 海爾建設此網站的目的企業(yè)文化建設方案
  • 手機屏幕網站重慶seo小z博客