mirror of
https://gitee.com/lzc56/MiaoUI.git
synced 2025-06-18 13:57:52 +00:00
51 lines
1.4 KiB
C
51 lines
1.4 KiB
C
#include "wave.h"
|
|
#include "stdio.h"
|
|
#include "dispDirver.h"
|
|
|
|
uint8_t buffer[HOR_RES];
|
|
|
|
void Wave_Widget(xpMenu Menu)
|
|
{
|
|
uint8_t time;
|
|
char str[30];
|
|
float value = 0;
|
|
switch (Menu->now_item->element->data->Data_Type)
|
|
{
|
|
case DATA_INT:
|
|
value = (float)(*(int *)(Menu->now_item->element->data->ptr));
|
|
break;
|
|
case DATA_FLOAT:
|
|
value = *(float *)(Menu->now_item->element->data->ptr);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
for (time = HOR_RES - 1; time > 0; time--)
|
|
{
|
|
buffer[time] = buffer[time - 1];
|
|
}
|
|
buffer[0] = ((value) / (float)((Menu->now_item->element->data->max - Menu->now_item->element->data->min))) * (VER_RES - 20);
|
|
OLED_ClearBuffer();
|
|
OLED_SetDrawColor(&Menu->bgColor);
|
|
OLED_DrawBox(0, 0, HOR_RES, VER_RES);
|
|
uint8_t color = Menu->bgColor^0x01;
|
|
OLED_SetDrawColor(&color);
|
|
for (time = 0; time < HOR_RES - 1; time++)
|
|
{
|
|
OLED_DrawLine(time, buffer[time], time + 1, buffer[time + 1]);
|
|
}
|
|
switch (Menu->now_item->element->data->Data_Type)
|
|
{
|
|
case DATA_INT:
|
|
sprintf(str, "%s:%d ", Menu->now_item->element->data->name, *(int *)(Menu->now_item->element->data->ptr));
|
|
break;
|
|
case DATA_FLOAT:
|
|
sprintf(str, "%s:%.2f ", Menu->now_item->element->data->name, *(float *)(Menu->now_item->element->data->ptr));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
OLED_DrawStr(0, VER_RES - 5, str);
|
|
OLED_SendBuffer();
|
|
}
|