本文來源電子發燒友社區,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2307456_1_1.html
前言
前面我們抑制了LVGL,現在我們就可以利用GUI提供的控件,進行各種可視化項目設計了。本開發板具備ADC,所以想到的是利用ADC采集模擬數據,使用LVGL的CHART控件進行波形顯示,實現簡易示波器的設計。
代碼
make menuconfig
Driver->
Enable HDF platform adc driver
使能ADC驅動。
gn文件添加頭文件
"http://drivers/hdf_core/framework/support/platform/include/adc",路徑
#include
#include
#include "stdint.h"
#include "los_task.h"
#include "ohos_run.h"
#include "st7735.h"
#include "lv_port_disp.h"
#include "lvgl.h"
#include "demos/lv_demos.h"
#include "adc_if.h"
static void btn_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t * btn = lv_event_get_target(e);
if(code == LV_EVENT_CLICKED) {
static uint8_t cnt = 0;
cnt++;
/*Get the first child of the button which is the label and change its text*/
lv_obj_t * label = lv_obj_get_child(btn, 0);
lv_label_set_text_fmt(label, "Button: %d", cnt);
}
}
void lv_log_print(const char * buf)
{
printf("%srn",buf);
}
/**
* Create a button with a label and react on click event.
*/
void lv_example_get_started_1(void)
{
lv_obj_t * btn = lv_btn_create(lv_scr_act()); /*Add a button the current screen*/
lv_obj_set_pos(btn, 10, 10); /*Set its position*/
lv_obj_set_size(btn, 60, 25); /*Set its size*/
lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_ALL, NULL); /*Assign a callback to the button*/
lv_obj_t * label = lv_label_create(btn); /*Add a label to the button*/
lv_label_set_text(label, "Button"); /*Set the labels text*/
lv_obj_center(label);
}
void lv_tick_handle(UINT32 arg)
{
while(1)
{
LOS_Msleep(5); /*Sleep for 5 millisecond*/
lv_tick_inc(5);
lv_timer_handler();
}
}
lv_obj_t * chart;
lv_chart_series_t * ser1;
int adc_chart_init(void)
{
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x343247), 0);
/*Create a chart*/
chart = lv_chart_create(lv_scr_act());
lv_chart_set_type(chart, LV_CHART_TYPE_LINE);
lv_chart_set_point_count(chart, 10);
lv_chart_set_range(chart,LV_CHART_AXIS_PRIMARY_Y, 0, 330*3);
lv_chart_set_range(chart,LV_CHART_AXIS_SECONDARY_Y, 0, 330*3);
lv_chart_set_update_mode(chart, LV_CHART_UPDATE_MODE_SHIFT);
lv_chart_set_div_line_count(chart, 4, 8);
//lv_chart_set_zoom_x(lv_obj_t * obj, uint16_t zoom_x);
//lv_chart_set_zoom_y(lv_obj_t * obj, uint16_t zoom_y);
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 0, 1, 1, true, 1);
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_X, 0, 0, 2, 1, true, 1);
lv_obj_set_size(chart, 135, 130);
lv_obj_align(chart, LV_ALIGN_CENTER, 0, 0);
/*Add data series*/
ser1 = lv_chart_add_series(chart,lv_color_hex(0xF800),LV_CHART_AXIS_PRIMARY_Y);
return 0;
}
int adc_chart_newdata(int index,uint32_t newdata,int refresh)
{
if(index == 0)
{
lv_chart_set_next_value(chart, ser1, newdata);
}
else
{
}
if(refresh)
{
lv_chart_refresh(chart); /*Required after direct set*/
}
return 0;
}
#define ADC_DEVICE_NUM 1
#define ADC_CHANNEL_NUM 6
void StartHdfSPITest(void)
{
UINT32 g_lv_time_task;
TSK_INIT_PARAM_S task = { 0 };
task.pfnTaskEntry = (TSK_ENTRY_FUNC)lv_tick_handle;
task.pcName = "lv_time_task";
task.uwStackSize = 0x1000;
task.usTaskPrio = 25 - 1;
DevHandle adcHandle;
uint32_t readVal = 0;
///adcHandle = AdcOpen(ADC_DEVICE_NUM);
///if (adcHandle == NULL) {
/// printf("open adc errrn");
///}
lv_init();
lv_port_disp_init();
///lv_log_register_print_cb(lv_log_print);
LOS_TaskCreate(&g_lv_time_task, &task);
//lv_demo_stress();
//lv_example_get_started_1();
adc_chart_init();
while(1)
{
static int num = 0;
//if (AdcRead(adcHandle, ADC_CHANNEL_NUM, &readVal) == HDF_SUCCESS) {
readVal = lv_rand(0,0xFFF);
num++;
readVal = readVal * 330 / (1u<<12);
adc_chart_newdata(0,readVal,1);
//}
LOS_Msleep(200);
lv_task_handler();
}
}
OHOS_APP_RUN(StartHdfSPITest);
效果
總結
上述只是進行了簡單的演示,可以考慮更加完善,實現一個可用的簡單示波器。 另外借助LVGL可以實現更多有意思的小項目,比如信號發生器,串口調試助手等等。二維碼生成器等。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
開鴻智谷
+關注
關注
2文章
125瀏覽量
1157 -
NiobeU4
+關注
關注
3文章
31瀏覽量
511
發布評論請先 登錄
相關推薦
有獎丨米爾 全志T536開發板免費試用
米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起
追加名額丨米爾瑞芯微RK3576開發板有獎試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發板發起
有獎丨米爾 瑞芯微RK3576開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576開發板發起
開鴻智谷用技術助力構建鴻蒙世界的基石
高級工程師王振德受邀出席此次技術交流盛會并發表主題演講,為鴻蒙生態的繁榮貢獻企業力量。開鴻智谷的鴻蒙團隊一直與廣大開發者無私分享技術心得,共同解決著代碼難題,讓更多人能
點擊參與米爾NXP i.MX 93開發板有獎試用
米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起
開鴻智谷與OpenHarmony的創新對話
OpenHarmony4.1Release版本根技術特性解讀為契機,聚集廣大開發者、生態伙伴、行業領袖與百位技術專家共同討論技術話題。開鴻智谷作為互聯互通核心成員,不僅在現場榮獲多項獎
開鴻智谷亮相OpenHarmony開發者大會,與生態共創開源新篇章!
5月25日,以“鴻心聚力智引未來”為主題的OpenHarmony開發者大會2024(以下簡稱大會)在深圳成功舉辦。開鴻智谷獲得多項獎項及授牌
開鴻智谷聯合多家伙伴戰略簽約,加速鴻蒙生態發展!
5月20日,開鴻智谷母公司拓維信息520產品與技術開放日暨28周年慶圓滿舉行,此次周年慶不僅是對公司創新突破、產品孵化和商業成果的回顧,更是攜手合作伙伴共同展望未來、開啟新篇章的重要時刻。開
開鴻智谷受邀出席2023年度南山區經濟突出貢獻企業TOP峰會
4月19日,2023年度南山區經濟突出貢獻今業TOP峰會順利召開,開鴻智谷(深圳子公司)作為南山鴻蒙產業生態的核心企業,OpenHarmony項目群A類捐贈人、鴻蒙生態服務公司首批入駐
拓維信息及旗下開鴻智谷同獲華為HarmonyOS開發服務商認證
近日,拓維信息及旗下開鴻智谷雙雙通過華為HarmonyOS開發服務商認證,成為華為“鴻蒙服務商先鋒計劃”認證級伙伴。秉持共同發展、共創價值的合作理念,拓維信息、
國內首批 | 開鴻智谷多名講師獲“鴻蒙原生應用開發培訓講師”資格認證
2023年3月4日-5日,鴻蒙生態服務(深圳)有限公司(以下簡稱“鴻蒙生態服務公司”)組織了國內首批“鴻蒙原生應用開發培訓講師”認證,開鴻智谷
評論