/**
****************************************************************************************************
* @file main.c
* @version V1.0
* @brief LVGL V8无操作系统移植 实验
****************************************************************************************************
* @attention Waiken-Smart 慧勤智远
*
* 实验平台: STM32F103ZET6小系统板
*
****************************************************************************************************
*/
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./USMART/usmart.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/KEY/key.h"
#include "./BSP/TOUCH/touch.h"
#include "./MALLOC/malloc.h"
#include "./BSP/TIMER/btim.h"
#include "lvgl.h"
#include "lv_port_indev_template.h"
#include "lv_port_disp_template.h"
#include "stdlib.h"
#include "time.h"
#include "stm32f1xx_hal.h"
#include <stdio.h>
static int32_t slider_value = 0; //滑块数值--升降台高度
static int32_t arc_value = 0; //圆弧数值--LED亮度
static int32_t c=0;
static int32_t b=0;
unsigned int gaodu; //高度变量
uint8_t send[2] = {0,0}; //串口发送
static lv_obj_t *label;
static lv_obj_t *label1;
static lv_obj_t *label_s;
static lv_obj_t *label_t;
static lv_obj_t *label_t_1; //升降
static lv_obj_t *btn_s;
static lv_obj_t *btn;
static lv_obj_t *btn1;
static lv_obj_t *btn2;
static lv_obj_t *msgbox;
static lv_obj_t *msgbox1;
static lv_obj_t *msgbox2;
static lv_obj_t *msgbox3;
static lv_obj_t *title;
static lv_obj_t *title1;
static lv_obj_t *title2;
static lv_obj_t *title3;
static const char *btn5[]={"Counite",""};
static const char *btn6[]={"Counite",""};
static const char *btn7[]={"Counite",""};
static const char *btn8[]={"Counite",""};
LV_IMG_DECLARE (gaohaoguang);
LV_IMG_DECLARE (weixia);
LV_IMG_DECLARE (shengjiangtai);
LV_IMG_DECLARE (daideng);
//static lv_obj_t *led;
//static lv_obj_t *switch2;
//static lv_obj_t *spinner;
//static lv_obj_t *list;
//static lv_obj_t *checkbox;
//static lv_obj_t *dd;
//static lv_obj_t *roller;
//static lv_obj_t *bar;
//static lv_obj_t *spinbox;
//static lv_point_t line_points[]={{150,50},{250,200},{50,200},{150,50}};
//static const char *map[]={"#ff0000 btn1#","\n","btn2","btn3",""};
//static const char *btns[]={"continue","close",""};
UART_HandleTypeDef huart1;
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &huart1)
{
printf("arc_value");
send[0] = (int)slider_value;
send[1] = (int)arc_value;
// send[1] += 5;
HAL_UART_Transmit_IT(&huart1,send,2);
}
}
int i,n,m,p;
uint16_t Num;
static void my_event_cb(lv_event_t * e) //回调函数
{
lv_obj_t *a=lv_event_get_target(e);
if(a==btn)
{ n=1;
}
if(a==btn1)
{n=0;
p=3;}
if(p==3){
if(c==1){p=0;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
// lv_obj_clear_flag(msgbox, LV_OBJ_FLAG_HIDDEN);
if(c==2){p=0;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
// lv_obj_clear_flag(msgbox1, LV_OBJ_FLAG_HIDDEN);
if(c==3){p=0;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
// lv_obj_clear_flag(msgbox2, LV_OBJ_FLAG_HIDDEN);
if(c==4){p=0;lv_label_set_text_fmt (label_s,"No");}}
// lv_obj_clear_flag(msgbox3, LV_OBJ_FLAG_HIDDEN);
}
//滑块事件回调-------------------------------------------------------------------------------------------
static void slider_event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
if (code != LV_EVENT_VALUE_CHANGED) return;
lv_obj_t *slider = lv_event_get_target(e);
slider_value = lv_slider_get_value(slider); // 更新全局变量
lv_label_set_text_fmt(label_t, "high: %d", slider_value);
}
//圆弧事件回调-------------------------------------------------------------------------------------------
static void arc_event_cb(lv_event_t *e)
{
lv_obj_t *target = lv_event_get_target(e);
arc_value = lv_arc_get_value(target);
}
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
delay_init(72); /* 延时初始化 */
usart_init(115200); /* 串口初始化为115200 */
usmart_dev.init(72); /* 初始化USMART */
led_init(); /* 初始化LED */
lcd_init(); /* 初始化LCD */
key_init(); /* 初始化按键 */
my_mem_init(SRAMIN); /* 初始化内部SRAM内存池 */
tp_dev.init(); /* 触摸屏初始化 */
btim_timx_int_init(10-1,7200-1); /* 初始化定时器 */
lv_init(); /* lvgl系统初始化 */
lv_port_disp_init(); /* lvgl显示接口初始化,放在lv_init()的后面 */
lv_port_indev_init(); /* lvgl输入接口初始化,放在lv_init()的后面 */
//串口------------------------------------------------------------------------------------------
HAL_UART_Transmit_IT(&huart1,send,2);
//背景板------------------------------------------------------------------------------------------
// label_t = lv_label_create(lv_scr_act ());
//图片--------------------------------------------------------------------------------------------
lv_obj_t *img = lv_img_create(lv_scr_act());
lv_img_set_src (img,&gaohaoguang);
lv_obj_set_pos (img,15,195);
lv_obj_t *img1 = lv_img_create(lv_scr_act());
lv_img_set_src (img1,&weixia);
lv_obj_set_pos (img1,315,171);
lv_obj_t *img2 = lv_img_create(lv_scr_act());
lv_img_set_src (img2,&shengjiangtai);
lv_obj_set_pos (img2,26,60);
lv_obj_t *img3 = lv_img_create(lv_scr_act());
lv_img_set_src (img3,&daideng);
lv_obj_set_pos (img3,197,160);
//滑块--------------------------------------------------------------------------------------------
lv_obj_t *slider = lv_slider_create(lv_scr_act());
lv_obj_set_pos(slider,25,-85);
lv_obj_set_size(slider,330,30);
lv_slider_set_value(slider,0,LV_ANIM_OFF);
lv_slider_set_range(slider,0,100);
lv_obj_add_event_cb(slider,slider_event_cb,LV_EVENT_VALUE_CHANGED,NULL);
// 设置轨道背景色
lv_obj_set_style_bg_color(slider, lv_color_hex(0x808080), LV_PART_MAIN);
// 设置指示器颜色
lv_obj_set_style_bg_color(slider, lv_color_hex(0x0000FF), LV_PART_INDICATOR);
// 设置旋钮颜色和尺寸
lv_obj_set_style_bg_color(slider, lv_color_hex(0x00ffff), LV_PART_KNOB);
lv_obj_set_style_pad_all(slider, 8, LV_PART_KNOB); // 旋钮大小
lv_obj_set_align(slider,LV_ALIGN_CENTER);
// 数值显示
label_t = lv_label_create(lv_scr_act());
lv_obj_set_align(label_t, LV_ALIGN_TOP_RIGHT);
char text_buffer[20]; // 定义足够大的字符数组存储转换后的字符串
sprintf(text_buffer, "%d", slider_value); // 将整数转换为字符串
lv_label_set_text(label_t, text_buffer); // 传递字符串指针
lv_obj_set_style_text_font(label_t, &lv_font_montserrat_48, 0);
// lv_obj_set_style_text_color(label_t_1, lv_color_hex(0x0fff0f), 0);
//圆弧--------------------------------------------------------------------------------------------
lv_obj_t *arc = lv_arc_create(lv_scr_act());
/* 设置圆弧尺寸 */
lv_obj_set_size(arc, 174, 174); // 宽度和高度均为 200px
/* 调整圆弧线条粗细 */
lv_obj_set_style_arc_width(arc, 20, LV_PART_MAIN); // 背景线条粗细
lv_obj_set_style_arc_width(arc, 20, LV_PART_INDICATOR); // 前景线条粗细
/* 设置位置和范围 */
lv_obj_set_pos(arc, 151, 110); // 调整位置(根据新尺寸可能需要重新定位)
lv_arc_set_range(arc, 0, 100); // 值范围 0~100
/* 绑定事件 */
lv_obj_add_event_cb(arc, arc_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//拓展内容 1. 实体按键输入
while(1)
{ srand(Num);
// send[0] = slider_value;
// send[1] = arc_value;
HAL_UART_Transmit_IT(&huart1, send, 2);
HAL_Delay(10); // 示例:10ms发送一次
// if(n==1){i=rand()%50+1;}
// lv_label_set_text_fmt (label_t," %d ",i);
tp_dev.scan(0); /* 触摸扫描 */
lv_task_handler();
Num+=7;
if(i>=1&&i<=3){m=1;c=m;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
if(i>=4&&i<10||i>35&&i<40){m=2;c=m;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
if(i>=15&&i<=20||i>45&&i<=50){m=3;c=m;lv_label_set_text_fmt (label_s,"Prize: %d ",c);}
if(i>=10&&i<15||i>=40&&i<=45||i>=26&&i<=35||i>20&&i<=25){m=4;c=m;lv_label_set_text_fmt (label_s,"No");}
}
}
我如何把这两个数据发给电脑send[0] = (int)slider_value;
send[1] = (int)arc_value;
最新发布