女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP32驅動ST7789觸摸屏開發指南:LVGL主題設置與示波器面板

PCB56242069 ? 來源:PCB56242069 ? 作者:PCB56242069 ? 2025-04-28 18:07 ? 次閱讀

一、項目概述

本文介紹如何使用ESP32微控制器驅動ST7789 TFT液晶屏和XPT2046觸摸芯片,通過LVGL圖形庫實現主題切換功能,并開發一個實用的觸摸屏示波器應用。項目包含兩大核心功能:

LVGL多主題切換:支持8種不同風格的UI主題

示波器功能
模擬/數字信號采集、觸摸控制面板、光標測量系統、自動頻率檢測

二、硬件準備

組件 型號 說明
主控 零知ESP32 雙核240MHz處理器
屏幕 ST7789 2.4寸 240×320分辨率
觸摸芯片 XPT2046 電阻式觸摸控制器
接線 SPI 使用硬件SPI接口

接線圖

wKgZPGgPE5iAVw_4AAWAWieXOA0976.png

三、環境搭建

1. 安裝庫

lv_arduino v3.0.1

TFT_eSPI

XPT2046_Touchscreen

2. TFT_eSPI配置(User_Setup.h):

?
?#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display

#define TFT_WIDTH  240 // ST7789 240 x 240
#define TFT_HEIGHT 320 // ST7789 240 x 320

#define TFT_MISO 19
#define TFT_MOSI 23   
#define TFT_SCLK 18
#define TFT_CS   15  Chip select control pin
#define TFT_DC   2   Data Command control pin
#define TFT_RST  4   Reset pin (could connect to RST pin)

四、核心代碼解析

4.1 LVGL主題設置

?
// 主題初始化
void setup() {
    lv_test_theme(); // 默認主題
    // 可選主題:
    // lv_test_theme_1(lv_theme_night_init(210, NULL));
    // lv_test_theme_1(lv_theme_material_init(210, NULL));
}

// 顯示驅動回調
void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {
    tft.setAddrWindow(area->x1, area->y1, area->x2, area->y2);
    for(int y=area->y1; y<=area-?>y2; y++){
        for(int x=area->x1; x<=area-?>x2; x++){
            tft.writeColor(color_p->full, 1);
            color_p++;
        }
    }
    lv_disp_flush_ready(disp);
}

4.2 觸摸驅動(帶消抖)

?
bool my_touchpad_read(lv_indev_drv_t *indev, lv_indev_data_t *data) {
    static lv_coord_t last_x = 0, last_y = 0;
    bool is_touched = ts.touched();
    
    if(is_touched){
        TS_Point p = ts.getPoint();
        // 坐標轉換與校準
        last_x = map(p.x, cal_x_min, cal_x_max, 0, 320);
        last_y = map(p.y, cal_y_max, cal_y_min, 0, 240);
        
        // 滑動檢測
        if(abs(last_x - prev_x) >5 || abs(last_y - prev_y) >5){
            is_sliding = true;
        }
        
        // 消抖處理
        if(!is_sliding && (millis()-last_touch_time)>CLICK_DEBOUNCE_MS){
            last_touch_time = millis();
        }
    }
    data->point.x = last_x;
    data->point.y = last_y;
    return false;
}

4.3 簡易示波器核心邏輯

波形采樣:

?
void takeSample() {
    if(!digitalMode){ // 模擬模式
        uint16_t raw = analogRead(ADC_PIN);
        samplesBuffer[sampleIndex] = raw * amplitudeScale;
    }else{ // 數字模式
        bool state = digitalRead(DIGITAL_PIN);
        samplesBuffer[sampleIndex] = state ? 4095 : 0;
    }
    sampleIndex = (sampleIndex+1) % MAX_SAMPLES;
}

波形繪制:

?
void updateWaveform() {
    waveSprite.fillSprite(BG_COLOR);
    // 繪制網格
    for(int x=0; x

五、觸摸控制面板實現

?
void create_ui(){
    // 創建選項卡式控制面板
    lv_obj_t *tabview = lv_tabview_create(rightPanel, NULL);
    lv_obj_t *timeTab = lv_tabview_add_tab(tabview, "時基");
    
    // 時基選擇滾輪
    lv_obj_t *timebaseRoller = lv_roller_create(timeTab);
    lv_roller_set_options(timebaseRoller, "0.5msn1.0msn2.0ms", LV_ROLLER_MODE_NORMAL);
    
    // 幅度控制滑塊
    lv_obj_t *ampSlider = lv_slider_create(ampTab);
    lv_slider_set_range(ampSlider, 0, 400);
    
    // 模式切換開關
    modeSwitch = lv_switch_create(controlPanel);
    lv_obj_set_event_cb(modeSwitch, mode_switch_event_cb);
}

六、性能優化技巧

雙緩沖機制:使用TFT_eSPI的Sprite功能減少閃爍

異步采樣:在loop()中分離采樣和顯示邏輯

動態刷新:根據時基自動調整刷新率

內存管理

?
static lv_color_t buf[LV_HOR_RES_MAX * 10]; // LVGL緩沖區
TFT_eSprite waveSprite = TFT_eSprite(&tft); // 波形緩沖

七、實測效果

7.1 LVGL不同主題切換

wKgZPGgPUXGAMURlAEDocwUkdmk964.png

演示視頻:
https://www.bilibili.com/video/BV1CwjAziEKj/?spm_id_from=888.80997.embed_other.whitelist&bvid=BV1CwjAziEKj&vd_source=a31e3d8d8ce008260eee442534c2f63d

7.2示波器觸控界面效果

wKgZO2gPUeWAH6IOAFIlaHG6FZY336.png

演示視頻:
https://www.bilibili.com/video/BV1FxjwzwEyF/?spm_id_from=888.80997.embed_other.whitelist&bvid=BV1FxjwzwEyF&vd_source=a31e3d8d8ce008260eee442534c2f63d

八、常見問題解決

觸摸校準異常

修改cal_x_min/max和cal_y_min/max值

使用校準例程獲取實際參數

LVGL內存不足

?// 修改lv_conf.h配置
#define LV_MEM_SIZE (48*1024)
#define LV_DISP_DEF_REFR_PERIOD 30

完整代碼獲取:

Github倉庫:https://github.com/Leeri1y/esp32-st7789

百度網盤:https://pan.baidu.com/s/19TVS2PBJpYqExxsannnH3w?pwd=epyd 提取碼: epyd

互動交流:歡迎在評論區留言討論,遇到問題可提交Issues

附錄:關鍵函數速查表

函數 功能 調用示例
lv_btn_create() 創建按鈕 lv_obj_t * btn = lv_btn_create(parent, NULL);
lv_sw_get_state() 獲取開關狀態 bool state = lv_sw_get_state(sw);
lv_roller_set_options() 設置滾輪選項 lv_roller_set_options(roller, "1n2n3", true);
waveSprite.pushSprite() 刷新顯示 waveSprite.pushSprite(0, 0);
ts.touched() 檢測觸摸 if(ts.touched()) { ... }

?動手實踐建議

先運行基礎顯示示例驗證硬件連接

逐步添加功能模塊(先顯示后觸摸)

使用串口監視器調試輸出

保存不同版本的代碼備份

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 示波器
    +關注

    關注

    113

    文章

    6583

    瀏覽量

    188388
  • ESP32
    +關注

    關注

    21

    文章

    1011

    瀏覽量

    18922
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    泰克4系列MSO示波器觸摸屏操作、協議解碼與電源噪聲分析指南

    高速信號調試與復雜系統測試中的得力助手。本文將詳細介紹該示波器觸摸屏操作、協議解碼應用及電源噪聲分析的具體方法,幫助用戶高效掌握其核心功能。 ? 一、觸摸屏操作指南:直觀交互與高效控
    的頭像 發表于 05-30 14:19 ?88次閱讀
    泰克4系列MSO<b class='flag-5'>示波器</b><b class='flag-5'>觸摸屏</b>操作、協議解碼與電源噪聲分析<b class='flag-5'>指南</b>

    ESP32驅動ST7789觸摸屏開發指南LVGL主題設置示波器面板

    一、項目概述本文介紹如何使用ESP32微控制器驅動ST7789 TFT液晶和XPT2046觸摸芯片,通過
    發表于 04-29 10:20

    LVGL主題切換 #ST7789 #嵌入式開發

    嵌入式開發
    PCB56242069
    發布于 :2025年04月29日 08:50:04

    基于ESP32的圓形顯示圣誕主題互動式雪球

    用一款以圣誕為主題的互動式雪球讓節日氛圍鮮活起來!項目使用矽遞科技(SeeedStudio)圓形顯示和(XIAO)ESP32S3開發板打造出極具視覺吸引力的雪景動畫,包含動態飄落的雪
    的頭像 發表于 04-15 11:48 ?348次閱讀
    基于<b class='flag-5'>ESP32</b>的圓形顯示<b class='flag-5'>屏</b>圣誕<b class='flag-5'>主題</b>互動式雪球

    st7789軟件包不能添加是怎么回事?

    1、在UI界面上可以看到st7789,但在packages中沒有。 2、沒有看到對應的下載信息。 3、在對應github中可以正常下載。 4、RTT版本為5.1.0. 5、類似的ili9341的添加是正常的。
    發表于 03-20 07:51

    ESP32-P4方案4.3寸IPS觸摸屏強勢來襲!支持MIPI CSI攝像頭視覺擴展

    啟明智顯全新推出的ESP32-P44.3寸IPS觸摸屏,搭載強大的雙核400MHzRISC-V處理器,配備32MBPSRAM和16MBFLASH,分辨率800*480,性能和視覺體驗再次突破!核心
    的頭像 發表于 12-07 01:10 ?1139次閱讀
    <b class='flag-5'>ESP32</b>-P4方案4.3寸IPS<b class='flag-5'>觸摸屏</b>強勢來襲!支持MIPI CSI攝像頭視覺擴展

    ESP32-P4方案4.3寸IPS觸摸屏上線!

    啟明智顯全新推出的ESP32-P4 4.3寸IPS觸摸屏,搭載強大的雙核400MHz RISC-V處理器,配備32MB PSRAM和16MB FLASH,分辨率800*480,性能和視覺體驗再次突破!
    的頭像 發表于 12-06 16:26 ?1128次閱讀
    <b class='flag-5'>ESP32</b>-P4方案4.3寸IPS<b class='flag-5'>觸摸屏</b>上線!

    開發觸摸屏驅動板需要考慮哪些因素

    驅動板是現代電子設備中不可或缺的一部分,它負責將用戶的觸摸操作轉化為設備可以理解的信號。觸摸屏驅動板需要通過多個關鍵步驟來實現其功能,以
    的頭像 發表于 10-29 14:05 ?1516次閱讀

    LVGL開發指南介紹

    電子發燒友網站提供《LVGL開發指南介紹.pdf》資料免費下載
    發表于 09-09 10:24 ?20次下載

    啟明智顯Model3A芯片方案7寸高清觸摸屏:開箱、設置與實操全攻略指南

    一、背景本指南將詳細介紹啟明智顯的Model3A芯片方案下的7寸高清觸摸屏ZX7D00CM21S的開箱步驟、基礎設置以及實操應用。無論您是電子愛好者、開發者還是工程師,這份
    的頭像 發表于 07-01 16:09 ?1779次閱讀
    啟明智顯Model3A芯片方案7寸高清<b class='flag-5'>觸摸屏</b>:開箱、<b class='flag-5'>設置</b>與實操全攻略<b class='flag-5'>指南</b>

    ESP32S2使用HMI例程移植ST7789數據位DB0出現延遲怎么解決?

    環境相關 vscode插件,IDFV4.3版本 使用esp32-s2-hmi-devkit-1例程 硬件是自己畫的ESP32S2開發板,lcd采用了ST7789v,16位并行8080協
    發表于 06-21 06:12

    請問esp32在使用lvgl的時候要怎么配置使用外部ROM?

    請問esp32 在使用lvgl的時候要怎么配置使用外部ROM?我現在用的是git上的的lv_port_esp32 https://github.com/lvgl/
    發表于 06-20 06:29

    esp32-s3驅動rgb刷屏卡頓,花屏是什么原因?

    esp32-s3驅動rgb,根據test_rgb_panel.c,但是刷屏太卡頓了,運行lvgl的demo,fps為0,想請教一下rgb
    發表于 06-19 06:21

    請問ESP32-S2在LCD外設調用LVGL的情況下LSB如何設置

    已經成功將pheriphal/lcd/lvgl的例程成功移植到串口上運行,但是在顏色上出現了問題。 IMG_20220417_224308.jpg (2.99 MiB) Viewed 1454
    發表于 06-17 07:47

    esp32s2同時使用wifi和lvgl出錯重啟是什么原因?

    我嘗試在用lvgl做一組wifi掃描連接界面,但加入wifi掃描后,esp32s2就不斷重啟,使用的版本是release4.4,vscode c開發。具體我也去查過,也有人遇到這個問題,他用
    發表于 06-17 06:16
    主站蜘蛛池模板: 大关县| 江山市| 保康县| 界首市| 湟源县| 永宁县| 定兴县| 宾阳县| 拉孜县| 彭泽县| 临沧市| 略阳县| 陈巴尔虎旗| 台北县| 长子县| 庐江县| 浮梁县| 堆龙德庆县| 海盐县| 永兴县| 大姚县| 白玉县| 武宣县| 若尔盖县| 扶余县| 永兴县| 胶南市| 偃师市| 封丘县| 项城市| 南靖县| 讷河市| 香河县| 乌拉特中旗| 伊通| 石家庄市| 扎囊县| 荆门市| 肃宁县| 元朗区| 弥渡县|