feat:增加圆环参数

This commit is contained in:
2024-06-07 21:55:55 +08:00
parent 5dd6ddd802
commit 81f0e13eae
13 changed files with 354 additions and 199 deletions

View File

@@ -124,12 +124,11 @@ void Page_Run(void)
void Page_Init(void)
{
PAGE_REG(page_menu);
// PAGE_REG(page_rtcam);
PAGE_REG(page_param_pid0);
PAGE_REG(page_param_pid1);
// PAGE_REG(page_argv);
// PAGE_REG(page_sys);
// PAGE_REG(page_run);
PAGE_REG(page_param_pid1);
PAGE_REG(page_param_pid2);
PAGE_REG(page_dparam);
Page_Shift(page_menu);

View File

@@ -19,9 +19,10 @@ enum PageID {
PAGE_NULL = -1,
//......
page_menu,
//page_rtcam,
// page_rtcam,
page_param_pid0,
page_param_pid1,
page_param_pid2,
page_dparam,
// page_argv,
// page_sys,
@@ -30,11 +31,11 @@ enum PageID {
page_max,
};
typedef enum page_event{
page_event_forward = rotate_button_forward,
page_event_backward = rotate_button_backward,
typedef enum page_event {
page_event_forward = rotate_button_forward,
page_event_backward = rotate_button_backward,
page_event_press_short = rotate_button_press_short,
page_event_press_long = rotate_button_press_long,
page_event_press_long = rotate_button_press_long,
} page_event;
typedef void (*CallbackFunction_t)(void);
@@ -47,16 +48,16 @@ typedef struct {
EventFunction_t EventCallback;
} PAGE_LIST;
//页面注册函数
#define PAGE_REG(name)\
do{\
extern void PageRegister_##name(unsigned char pageID);\
PageRegister_##name(name);\
}while(0)
// 页面注册函数
#define PAGE_REG(name) \
do { \
extern void PageRegister_##name(unsigned char pageID); \
PageRegister_##name(name); \
} while (0)
void Page_Register(uint8_t pageID, char *pageText,
CallbackFunction_t setupCallback, CallbackFunction_t loopCallback,
CallbackFunction_t exitCallback, EventFunction_t eventCallback);
CallbackFunction_t setupCallback, CallbackFunction_t loopCallback,
CallbackFunction_t exitCallback, EventFunction_t eventCallback);
void Page_EventTransmit(unsigned char event);
void Page_Shift(unsigned char pageID);

View File

@@ -44,14 +44,14 @@ static void Loop()
{
ips200_show_string(0, 0, "sta:");
ips200_show_float(80, 0, in_state, 4, 1);
ips200_show_string(0, 20, "outca:");
ips200_show_float(80, 20, out_cangle, 4, 1);
ips200_show_string(0, 20, "outsp:");
ips200_show_float(80, 20, out_speed, 4, 1);
ips200_show_string(0, 40, "angle");
ips200_show_float(80, 40, in_angle, 4, 1);
ips200_show_string(0, 60, "near");
ips200_show_float(80, 60, in_pos, 4, 1);
ips200_show_string(0, 80, "gyroz");
ips200_show_float(80, 80, in_gyro, 4, 2);
ips200_show_string(0, 60, "accz");
ips200_show_float(80, 60, (float)imu660ra_acc_z, 6, 1);
ips200_show_string(0, 80, "accy");
ips200_show_float(80, 80, (float)imu660ra_acc_y, 4, 2);
ips200_show_string(0, 100, "speed");
ips200_show_float(80, 100, in_speed, 4, 4);
ips200_show_string(0, 120, "outang");

View File

@@ -5,13 +5,14 @@
#include "jj_blueteeth.h"
#define LINE_HEAD 1
#define LINE_END 5
#define LINE_END 4
static char Text[] = "Menu";
static int8_t Curser = LINE_HEAD; // 定义光标位置
static int8_t Curser_Last = LINE_HEAD; // 定义光标位置
uint32_t cnt = 0;
uint32_t cnt = 0;
uint8_t go_flag = 0;
uint32_t reset[3];
static void Print_Menu_p(void);
/***************************************************************************************
@@ -30,7 +31,7 @@ static void Setup()
ips200_clear();
Print_Menu_p();
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
reset[0]=0x01;
reset[0] = 0x01;
}
/**
@@ -49,6 +50,14 @@ static void Exit()
*/
static void Loop()
{
if (go_flag == 1) {
system_delay_ms(1000);
bt_fly_flag = 1;
system_delay_ms(1000);
bt_run_flag = 1;
go_flag = 0;
}
}
/**
@@ -70,21 +79,8 @@ static void Event(page_event event)
Page_Shift(Curser); // 切换到光标选中的页面
}
} else if (page_event_press_long == event) {
if(cnt==0)
{
by_frame_send(reset);
cnt=1;
}
else if(cnt==1)
{
cnt=2;
bt_fly_flag=1;
}else if(cnt==2)
{
cnt=0;
bt_run_flag=1;
}
go_flag = 1;
ips200_clear();
}
if (Curser < LINE_HEAD) {

View File

@@ -4,9 +4,9 @@
#include "page.h"
#include <math.h>
#define LINE_HEAD 0
#define LINE_END Page2_head - 1
static char Text[] = "Param_pid0";
#define LINE_HEAD 1
#define LINE_END Page2_head
static char Text[] = "turn_pid";
static int event_flag = 0;
static int index_power = 0;
static int8_t Curser = LINE_HEAD; // 定义光标位置
@@ -25,13 +25,14 @@ static void jj_param_show();
static void Setup()
{
ips200_clear();
ips200_show_string(0, 2,"turn");
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
for (int16 i = 0; i <= LINE_END; i++) {
ips200_show_string(0, i * 18 + 2, Param_Data[i].text);
for (int16 i = 0; i < LINE_END; i++) {
ips200_show_string(0, i * 18 + 20, Param_Data[i].text);
if (Param_Data[i].type == EINT32)
ips200_show_int(50, i * 18 + 2, *((int32 *)(Param_Data[i].p_data)), 5);
ips200_show_int(50, i * 18 + 20, *((int32 *)(Param_Data[i].p_data)), 5);
else if (Param_Data[i].type == EFLOAT)
ips200_show_float(50, i * 18 + 2, *((float *)(Param_Data[i].p_data)), 4, 5);
ips200_show_float(50, i * 18 + 20, *((float *)(Param_Data[i].p_data)), 4, 5);
}
ips200_show_int(100, 2, index_power, 5);
}
@@ -87,20 +88,20 @@ static void Event(page_event event)
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
} else if (1 == event_flag) {
if (page_event_forward == event) {
if (Param_Data[Curser].type == EFLOAT) {
*((float *)(Param_Data[Curser].p_data)) += powf(10.0f, (float)index_power);
} else if (Param_Data[Curser].type == EINT32) {
*((int32 *)(Param_Data[Curser].p_data)) += 1;
} else if (Param_Data[Curser].type == EUINT32) {
*((uint32 *)(Param_Data[Curser].p_data)) += 1;
if (Param_Data[Curser-1].type == EFLOAT) {
*((float *)(Param_Data[Curser-1].p_data)) += powf(10.0f, (float)index_power);
} else if (Param_Data[Curser-1].type == EINT32) {
*((int32 *)(Param_Data[Curser-1].p_data)) += 1;
} else if (Param_Data[Curser-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser-1].p_data)) += 1;
}
} else if (page_event_backward == event) {
if (Param_Data[Curser].type == EFLOAT) {
*((float *)(Param_Data[Curser].p_data)) -= powf(10.0f, (float)index_power);
} else if (Param_Data[Curser].type == EINT32) {
*((int32 *)(Param_Data[Curser].p_data)) -= 1;
} else if (Param_Data[Curser].type == EUINT32) {
*((uint32 *)(Param_Data[Curser].p_data)) -= 1;
if (Param_Data[Curser-1].type == EFLOAT) {
*((float *)(Param_Data[Curser-1].p_data)) -= powf(10.0f, (float)index_power);
} else if (Param_Data[Curser-1].type == EINT32) {
*((int32 *)(Param_Data[Curser-1].p_data)) -= 1;
} else if (Param_Data[Curser-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser-1].p_data)) -= 1;
}
} else if (page_event_press_short == event) {
index_power++;
@@ -117,12 +118,12 @@ static void Event(page_event event)
}
static void jj_param_show()
{
if (EINT32 == Param_Data[Curser].type)
ips200_show_int(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser].p_data)), 5);
else if (EUINT32 == Param_Data[Curser].type)
ips200_show_uint(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser].p_data)), 5);
else if (EFLOAT == Param_Data[Curser].type)
ips200_show_float(50, Curser * 18 + 2, *((float *)(Param_Data[Curser].p_data)), 4, 5);
if (EINT32 == Param_Data[Curser-1].type)
ips200_show_int(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser-1].p_data)), 5);
else if (EUINT32 == Param_Data[Curser-1].type)
ips200_show_uint(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser-1].p_data)), 5);
else if (EFLOAT == Param_Data[Curser-1].type)
ips200_show_float(50, Curser * 18 + 2, *((float *)(Param_Data[Curser-1].p_data)), 4, 5);
}
/**
* @brief 页面注册函数

View File

@@ -4,9 +4,10 @@
#include "page.h"
#include <math.h>
#define LINE_HEAD 0
#define LINE_END DATA_IN_FLASH_NUM - 1 - Page2_head
static char Text[] = "Param_pid1";
#define LINE_HEAD 1
#define LINE_END Page3_head - Page2_head
#define Strat_param Page2_head
static char Text[] = "stra_pid";
static int event_flag = 0;
static int index_power = 0;
static int8_t Curser = LINE_HEAD; // 定义光标位置
@@ -25,13 +26,14 @@ static void jj_param_show();
static void Setup()
{
ips200_clear();
ips200_show_string(0, 2,"straight");
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
for (int16 i = 0; i < 13; i++) {
ips200_show_string(0, i * 18 + 2, Param_Data[i + 13].text);
if (Param_Data[i + 13].type == EINT32)
ips200_show_int(50, i * 18 + 2, *((int32 *)(Param_Data[i + 13].p_data)), 5);
else if (Param_Data[i + 13].type == EFLOAT)
ips200_show_float(50, i * 18 + 2, *((float *)(Param_Data[i + 13].p_data)), 4, 5);
for (int16 i = 0; i < LINE_END; i++) {
ips200_show_string(0, i * 18 + 20, Param_Data[i +Strat_param ].text);
if (Param_Data[i + Strat_param].type == EINT32)
ips200_show_int(50, i * 18 + 20, *((int32 *)(Param_Data[i + Strat_param].p_data)), 5);
else if (Param_Data[i + Strat_param].type == EFLOAT)
ips200_show_float(50, i * 18 + 20, *((float *)(Param_Data[i + Strat_param].p_data)), 4, 5);
}
ips200_show_int(100, 2, index_power, 5);
}
@@ -87,20 +89,20 @@ static void Event(page_event event)
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
} else if (1 == event_flag) {
if (page_event_forward == event) {
if (Param_Data[Curser + 13].type == EFLOAT) {
*((float *)(Param_Data[Curser + 13].p_data)) += powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + 13].type == EINT32) {
*((int32 *)(Param_Data[Curser + 13].p_data)) += 1;
} else if (Param_Data[Curser + 13].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Page2_head].p_data)) += 1;
if (Param_Data[Curser + Strat_param-1].type == EFLOAT) {
*((float *)(Param_Data[Curser + Strat_param-1].p_data)) += powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + Strat_param-1].type == EINT32) {
*((int32 *)(Param_Data[Curser + Strat_param-1].p_data)) += 1;
} else if (Param_Data[Curser + Strat_param-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Strat_param-1].p_data)) += 1;
}
} else if (page_event_backward == event) {
if (Param_Data[Curser + Page2_head].type == EFLOAT) {
*((float *)(Param_Data[Curser + Page2_head].p_data)) -= powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + Page2_head].type == EINT32) {
*((int32 *)(Param_Data[Curser + Page2_head].p_data)) -= 1;
} else if (Param_Data[Curser + Page2_head].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Page2_head].p_data)) -= 1;
if (Param_Data[Curser + Strat_param-1].type == EFLOAT) {
*((float *)(Param_Data[Curser + Strat_param-1].p_data)) -= powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + Strat_param-1].type == EINT32) {
*((int32 *)(Param_Data[Curser + Strat_param-1].p_data)) -= 1;
} else if (Param_Data[Curser + Strat_param-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Strat_param-1].p_data)) -= 1;
}
} else if (page_event_press_short == event) {
index_power++;
@@ -117,12 +119,12 @@ static void Event(page_event event)
}
static void jj_param_show()
{
if (EINT32 == Param_Data[Curser + 13].type)
ips200_show_int(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + 13].p_data)), 5);
else if (EUINT32 == Param_Data[Curser + 13].type)
ips200_show_uint(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + 13].p_data)), 5);
else if (EFLOAT == Param_Data[Curser + 13].type)
ips200_show_float(50, Curser * 18 + 2, *((float *)(Param_Data[Curser + 13].p_data)), 4, 5);
if (EINT32 == Param_Data[Curser + Strat_param-1].type)
ips200_show_int(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + Strat_param-1].p_data)), 5);
else if (EUINT32 == Param_Data[Curser + Strat_param-1].type)
ips200_show_uint(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + Strat_param-1].p_data)), 5);
else if (EFLOAT == Param_Data[Curser + Strat_param-1].type)
ips200_show_float(50, Curser * 18 + 2, *((float *)(Param_Data[Curser + Strat_param-1].p_data)), 4, 5);
}
/**
* @brief 页面注册函数

137
app/page/page_param_pid2.c Normal file
View File

@@ -0,0 +1,137 @@
#include "jj_param.h"
#include "page_ui_widget.h"
#include "jj_motion.h"
#include "page.h"
#include <math.h>
#define LINE_HEAD 1
#define LINE_END DATA_IN_FLASH_NUM - Page3_head
#define Strat_param Page3_head
static char Text[] = "cir_pid";
static int event_flag = 0;
static int index_power = 0;
static int8_t Curser = LINE_HEAD; // 定义光标位置
static int8_t Curser_Last = LINE_HEAD; // 定义光标位置
static void jj_param_show();
/***************************************************************************************
*
* 以下为页面模板函数
*
***************************************************************************************/
/**
* @brief 页面初始化事件
* @param 无
* @retval 无
*/
static void Setup()
{
ips200_clear();
ips200_show_string(0, 2,"circle");
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
for (int16 i = 0; i < LINE_END; i++) {
ips200_show_string(0, i * 18 + 20, Param_Data[i +Strat_param ].text);
if (Param_Data[i + Strat_param].type == EINT32)
ips200_show_int(50, i * 18 + 20, *((int32 *)(Param_Data[i + Strat_param].p_data)), 5);
else if (Param_Data[i + Strat_param].type == EFLOAT)
ips200_show_float(50, i * 18 + 20, *((float *)(Param_Data[i + Strat_param].p_data)), 4, 5);
}
ips200_show_int(100, 2, index_power, 5);
}
/**
* @brief 页面退出事件
* @param 无
* @retval 无
*/
static void Exit()
{
}
/**
* @brief 页面循环执行的内容
* @param 无
* @retval 无
*/
static void Loop()
{
}
/**
* @brief 页面事件
* @param btn:发出事件的按键
* @param event:事件编号
* @retval 无
*/
static void Event(page_event event)
{
if (0 == event_flag) {
Curser_Last = Curser;
if (page_event_forward == event) {
Curser--; // 光标上移
} else if (page_event_backward == event) {
Curser++; // 光标下移
} else if (page_event_press_short == event) {
event_flag = 1; // 选中参数
Print_Curser(Curser, Curser_Last, RGB565_RED);
return;
} else if (page_event_press_long == event) {
jj_param_write();
sport_pid_init();
Page_Shift(page_menu);
return;
}
if (Curser < LINE_HEAD) {
Curser = LINE_END;
} else if (Curser > LINE_END) {
Curser = LINE_HEAD;
}
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
} else if (1 == event_flag) {
if (page_event_forward == event) {
if (Param_Data[Curser + Strat_param-1].type == EFLOAT) {
*((float *)(Param_Data[Curser + Strat_param-1].p_data)) += powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + Strat_param-1].type == EINT32) {
*((int32 *)(Param_Data[Curser + Strat_param-1].p_data)) += 1;
} else if (Param_Data[Curser + Strat_param-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Strat_param-1].p_data)) += 1;
}
} else if (page_event_backward == event) {
if (Param_Data[Curser + Strat_param-1].type == EFLOAT) {
*((float *)(Param_Data[Curser + Strat_param-1].p_data)) -= powf(10.0f, (float)index_power);
} else if (Param_Data[Curser + Strat_param-1].type == EINT32) {
*((int32 *)(Param_Data[Curser + Strat_param-1].p_data)) -= 1;
} else if (Param_Data[Curser + Strat_param-1].type == EUINT32) {
*((uint32 *)(Param_Data[Curser + Strat_param-1].p_data)) -= 1;
}
} else if (page_event_press_short == event) {
index_power++;
if (index_power > 2) {
index_power = -2;
}
ips200_show_int(100, 2, index_power, 5);
} else if (page_event_press_long == event) {
event_flag = 0;
Print_Curser(Curser, Curser_Last, RGB565_PURPLE);
}
jj_param_show();
}
}
static void jj_param_show()
{
if (EINT32 == Param_Data[Curser + Strat_param-1].type)
ips200_show_int(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + Strat_param-1].p_data)), 5);
else if (EUINT32 == Param_Data[Curser + Strat_param-1].type)
ips200_show_uint(50, Curser * 18 + 2, *((int32 *)(Param_Data[Curser + Strat_param-1].p_data)), 5);
else if (EFLOAT == Param_Data[Curser + Strat_param-1].type)
ips200_show_float(50, Curser * 18 + 2, *((float *)(Param_Data[Curser + Strat_param-1].p_data)), 4, 5);
}
/**
* @brief 页面注册函数
*
* @param pageID
*/
void PageRegister_page_param_pid2(unsigned char pageID)
{
Page_Register(pageID, Text, Setup, Loop, Exit, Event);
}