一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

零知開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(三):記事本功能實現(xiàn)

PCB56242069 ? 來源:PCB56242069 ? 作者:PCB56242069 ? 2025-06-27 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?

智能設(shè)備的人機交互界面中,記事本功能是基礎(chǔ)且重要的應(yīng)用場景。本教程將基于STM32F4和LVGL庫,在3.5英寸ILI9486顯示屏上實現(xiàn)完整的記事本功能,包含文本輸入、虛擬鍵盤、內(nèi)容清除等核心功能。

一、硬件連接(同電子書教程)

硬件連接方式與電子書閱讀器完全一致,請參考系列教程(一)的硬件連接部分。顯示屏直接插入零知增強板專用接口,無需額外連線。

系列教程直達:零知開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(一):電子書閱讀器功能

ILI9486擴展板顯示屏及記事本UI頁面圖:

wKgZPGhahOOAOmqWACUdxV-WDhM491.jpg

二、軟件UI組件實現(xiàn)

2.1 核心功能實現(xiàn)

lv_obj_t *win = create_app_win("NotePad");
    lv_coord_t hres = lv_disp_get_hor_res(NULL);
    lv_coord_t vres = lv_disp_get_ver_res(NULL);
    lv_coord_t header_height = 32; // 標題欄高度

    // 創(chuàng)建文本區(qū)域
    lv_obj_t *ta = lv_ta_create(win, NULL);
    lv_obj_set_size(ta, hres - 40, (vres - header_height) / 2);
    lv_obj_align(ta, NULL, LV_ALIGN_IN_TOP_MID, 0, header_height + 10);
    lv_ta_set_text(ta, "");
    lv_ta_set_cursor_type(ta, LV_CURSOR_BLOCK);
    lv_ta_set_placeholder_text(ta, "Type your note here...");
    lv_ta_set_sb_mode(ta, LV_SB_MODE_AUTO);

    // 創(chuàng)建鍵盤 - 使用更小的鍵盤節(jié)省空間
    lv_obj_t *kb = lv_kb_create(win, NULL);
    lv_obj_set_size(kb, hres - 40, (vres - header_height) / 3);
    lv_obj_align(kb, ta, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
    lv_kb_set_ta(kb, ta);

    // 創(chuàng)建按鈕容器 - 簡化按鈕數(shù)量
    lv_obj_t *btn_cont = lv_cont_create(win, NULL);
    lv_cont_set_layout(btn_cont, LV_LAYOUT_ROW_M);
    lv_obj_set_size(btn_cont, hres - 40, 40);
    lv_obj_align(btn_cont, kb, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);

    // 只保留清除按鈕節(jié)省空間
    lv_obj_t *btn_clear = lv_btn_create(btn_cont, NULL);
    lv_obj_t *btn_clear_label = lv_label_create(btn_clear, NULL);
    lv_label_set_text(btn_clear_label, "Clear");
    lv_obj_set_event_cb(btn_clear, note_clear_event_cb);
    lv_obj_set_user_data(btn_clear, ta);

2.2 文本區(qū)域功能詳解

光標控制

LV_CURSOR_BLOCK: 塊狀光標,提高可視性

自動光標跟蹤:滾動時保持光標可見

觸摸精確定位:點擊任意位置移動光標

滾動優(yōu)化

自動滾動條管理(LV_SB_MODE_AUTO)

平滑滾動動畫

長文本分頁渲染

占位提示

引導(dǎo)用戶輸入的提示文本

輸入內(nèi)容時自動消失

內(nèi)容清空后重新顯示

2.3 清除功能實現(xiàn)

// 清除按鈕事件處理
static void note_clear_event_cb(lv_obj_t * btn, lv_event_t event)
{
    if(event == LV_EVENT_SHORT_CLICKED) {
        lv_obj_t *ta = (lv_obj_t *)lv_obj_get_user_data(btn);
        lv_ta_set_text(ta, "");
    }
}

三、零知IDE配置(同電子書教程)

請參考系列教程(一)的零知IDE配置部分,確保:

正確配置LCD屏幕驅(qū)動

啟用觸摸屏支持

添加LVGL庫依賴

關(guān)鍵配置項:

#define LV_USE_TA            1
#define LV_USE_KB            1
#define LV_USE_ANIMATION     1    // 啟用動畫效果
#define LV_FONT_ROBOTO_16    1    // 啟用默認字體

觸摸屏校準:

bool my_touchpad_read(lv_indev_drv_t * indev, lv_indev_data_t * data)
{
        static lv_coord_t last_x = 0;
        static lv_coord_t last_y = 0;
        
        data->state = ts.touched() ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
        if(data->state == LV_INDEV_STATE_PR){
                TS_Point p = ts.getPoint();
                 
               
                last_x = LV_HOR_RES-(p.y *LV_HOR_RES)/4095;       
                last_y = (p.x *LV_VER_RES)/4095;       
                 
                Serial.print("touched:");
                Serial.print(last_x);Serial.print(",");Serial.println(last_y);
        }
        data->point.x = last_x;
        data->point.y = last_y;
         
        return false; 
}

四、演示效果

4.1 功能演示

觸摸鍵盤輸入英文內(nèi)容

觸摸文本區(qū)域移動光標

滑動查看長文本內(nèi)容

點擊清除按鈕清空內(nèi)容

大小寫和符號鍵盤切換

4.2 視頻效果

https://www.bilibili.com/video/BV1QdKgzjEpe/?spm_id_from=333.1387.homepage.video_card.click&vd_source=a31e3d8d8ce008260eee442534c2f63d

記事本界面包含文本編輯區(qū)、虛擬鍵盤和清除按鈕

4.3 性能指標

項目 數(shù)值 說明
鍵盤響應(yīng)時間 < 50ms 從觸碰到鍵盤彈出的延遲
內(nèi)存占用 32KB 包括LVGL核心和文本緩沖區(qū)
輸入響應(yīng)延遲 < 30ms 按鍵到字符顯示的時間
最大字符容量 無限制 動態(tài)內(nèi)存管理
觸摸精度 ±3像素 鍵盤按鍵觸發(fā)精度

五、常見問題解決

?輸入卡頓/優(yōu)化方法

// 在lv_conf.h中增加內(nèi)存池大小
#define LV_MEM_SIZE (16U* 1024U) // 增加至48KB
#define LV_DISP_DEF_REFR_PERIOD 30 // 降低刷新率至30ms

六、總結(jié)與擴展

6.1 實現(xiàn)總結(jié)

本教程實現(xiàn)了基礎(chǔ)記事本功能:

文本輸入與編輯功能

虛擬鍵盤輸入支持

一鍵清除內(nèi)容

滾動查看長文本

觸摸優(yōu)化的用戶界面

6.2 擴展建議

// 1. 中文輸入支持(需外置字庫)
void init_chinese_font() {
    lv_font_t * cn_font = lv_font_load("S:/fonts/simhei_20.bin");
    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_text_font(&style, LV_STATE_DEFAULT, cn_font);
    lv_obj_add_style(ta, LV_TEXTAREA_PART_MAIN, &style);
}

// 2. 保存到Flash
void save_to_flash() {
    const char* text = lv_ta_get_text(ta);
    // 使用W25Q128 Flash芯片存儲
    w25qxx_write_str(0x1000, text);
}

// 3. 添加時間戳
void add_timestamp() {
    char time_str[20];
    sprintf(time_str, "n[%02d:%02d]", rtc.getHours(), rtc.getMinutes());
    lv_ta_add_text(ta, time_str);
}

// 4. 云同步功能
void sync_to_cloud() {
    if(WiFi.status() == WL_CONNECTED) {
        httpClient.post("/api/notes", lv_ta_get_text(ta));
    }
}

6.3 下一步

在下一個系列教程中,我們將實現(xiàn)相冊瀏覽功能,支持圖片預(yù)覽和大圖查看模式。

?零知開源是一個真正屬于國人自己的開源軟硬件平臺,在開發(fā)效率上超越了Arduino平臺并且更加容易上手,大大降低了開發(fā)難度。
?零知開源在軟件方面提供了完整的學習教程和豐富示例代碼,讓不懂程序的工程師也能非常輕而易舉的搭建電路來創(chuàng)作產(chǎn)品,測試產(chǎn)品。快來動手試試吧!

?訪問零知開源平臺,獲取更多實戰(zhàn)項目和教程資源吧!


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4605

    瀏覽量

    76424
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    203

    瀏覽量

    29054
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    開源——STM32F4驅(qū)動MAX31865實現(xiàn)PT100高精度測溫

    材料增強板(STM32F407VET6) MAX31865模塊(支持線制PT100) 線制PT100傳感器 0.96寸I2C OLE
    發(fā)表于 05-26 18:52

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(一):電子書閱讀器功能

    教程將詳細介紹如何在增強板上使用3.5寸ILI9486顯示屏實現(xiàn)電子書閱讀器
    發(fā)表于 06-24 19:09

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(二):日歷功能實現(xiàn)

    ——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列
    發(fā)表于 06-25 17:51

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程():記事本功能實現(xiàn)

    在智能設(shè)備的人機交互界面中,記事本功能是基礎(chǔ)且重要的應(yīng)用場景。教程將基于STM32F4和LVGL庫,在3.5英寸
    發(fā)表于 06-27 09:51

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(四):相冊預(yù)覽和大圖功能

    與電子書閱讀器完全一致,請參考系列教程(一)的硬件連接部分。顯示屏直接插入增強板專用接口,無需額外連線。系列教程直達:
    發(fā)表于 06-30 09:13

    關(guān)于用STC52芯片單片機實現(xiàn)英文記事本功能

    本人小白,課程要求制作一個單片機開發(fā)板并實現(xiàn)一個英文記事本,現(xiàn)在板做好了,但是關(guān)于程序編寫沒有什么思路,希望大神們可以指點指點,最好給點程序哈哈,因為沒什么思路了,下面是設(shè)計要求:1、開機密碼設(shè)置
    發(fā)表于 12-06 18:20

    利用stm32F4驅(qū)動攝像頭在ILI9341顯示屏顯示畫面

    (本文建立在對OV7725有一定了解的基礎(chǔ)上)我的目的很簡單,就是利用stm32F4 驅(qū)動攝像頭在我的ILI9341顯示屏(240*320分辨率)上顯示畫面。把我手頭上的器件圖先給出把
    發(fā)表于 08-03 07:04

    如何利用stm32F4驅(qū)動攝像頭在ILI9341顯示屏顯示畫面

    如何利用stm32F4驅(qū)動攝像頭在ILI9341顯示屏顯示畫面?
    發(fā)表于 10-11 09:25

    TFTLCD液晶顯示屏芯片ILI9486L的數(shù)據(jù)手冊免費下載

    的320RGBX480點圖形數(shù)據(jù)包和電源電路。ILI9486L支持并行CPU 8-/9-/16-/18位數(shù)據(jù)總線接口和3-/4線串行外圍接口(SPI)。ILI9486L還兼容用于視頻圖像顯示
    發(fā)表于 10-10 08:00 ?64次下載
    TFTLCD液晶<b class='flag-5'>顯示屏</b>芯片<b class='flag-5'>ILI9486</b>L的數(shù)據(jù)手冊免費下載

    TFT3.5 ILI9486彩屏電路原理圖免費下載

    本文檔的主要內(nèi)容詳細介紹的是TFT3.5 ILI9486彩屏電路原理圖免費下載。
    發(fā)表于 03-05 08:00 ?37次下載
    TFT3.5 <b class='flag-5'>ILI9486</b>彩屏電路原理圖免費下載

    AWTK 開源串口開發(fā)(12) - 記事本應(yīng)用

    傳統(tǒng)的的串口中,開發(fā)一個記事本應(yīng)用,即使可能,也是非常麻煩的事情。在AWTK串口中,內(nèi)置文件模型和文件選擇對話框,實現(xiàn)一個簡單的記事本,
    的頭像 發(fā)表于 03-09 08:23 ?619次閱讀
    AWTK <b class='flag-5'>開源</b>串口<b class='flag-5'>屏</b>開發(fā)(12) - <b class='flag-5'>記事本</b>應(yīng)用

    如何在Windows 11恢復(fù)舊版記事本

    據(jù)了解,Microsoft于今年二月對Windows 11的兩大應(yīng)用程序——記事本與媒體播放器做出更新,引入了新的UI設(shè)計和增強功能。然而仍有部分用戶偏愛老版本的應(yīng)用。
    的頭像 發(fā)表于 03-28 10:21 ?2048次閱讀

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(二):日歷功能實現(xiàn)

    教程詳細介紹了基于STM32F4ILI9486觸摸的日歷應(yīng)用開發(fā),涵蓋硬件連接、軟件實現(xiàn)
    的頭像 發(fā)表于 06-25 17:34 ?188次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>ILI9486</b><b class='flag-5'>顯示屏</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b><b class='flag-5'>系列</b>教程(二):日歷<b class='flag-5'>功能</b><b class='flag-5'>實現(xiàn)</b>

    開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(四):相冊預(yù)覽和大圖功能

    教程詳細講解如何在LVGL中實現(xiàn)相冊預(yù)覽和圖片放大功能。通過事件回調(diào)、窗口管理和圖片取模技術(shù),構(gòu)建流暢的用戶體驗。主要內(nèi)容包括:硬件連接方式(與電子書教程相同)、軟件UI組件
    的頭像 發(fā)表于 06-27 12:01 ?164次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>ILI9486</b><b class='flag-5'>顯示屏</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b><b class='flag-5'>系列</b>教程(四):相冊預(yù)覽和大圖<b class='flag-5'>功能</b>

    開源——STM32F4結(jié)合BMP581氣壓傳感器實現(xiàn)ST7789中文顯示教程

    開源平臺是一個專為國開發(fā)者設(shè)計的軟硬件開源平臺,提供比Arduino更易上手的開發(fā)體驗。教程展示了如何在
    的頭像 發(fā)表于 07-09 09:21 ?163次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b>結(jié)合BMP581氣壓傳感器<b class='flag-5'>實現(xiàn)</b>ST7789中文<b class='flag-5'>顯示</b>教程