如果解决获取数据抖动的问题

思路:应该设置死区

假设我们把0~100映射到0~20,那么每个单位就会对应5,我们可以把2作为死区。

即0~2映射为0,3~4即可映射为0也可映射为1,根据上一个状态来判断,这样就不会出现显示端0和1跳来跳去的情况。

代码:

复制代码
typedef unsigned int uint16_t;

#define MAP_STEP_LENGTH 5
#define MAP_DEAD_AREA	2

uint16_t GetStableData(void inputData)
{
	static uint16_t lastData = 0;
	uint16_t temp;
	uint16_t remain;

	temp = inputData/MAP_STEP_LENGTH;

	remain = inputData - temp;

	if(remain >= (MAP_STEP_LENGTH - MAP_DEAD_AREA))
	{
		if(lastData >= temp+1)
		{
			lastData = temp+1;
		}
		else
		{
			lastData = temp;
		}
	}
	else
	{
		lastData = temp;
	}
	return lastData;
}
相关推荐
ACP广源盛1392462567339 分钟前
Ling‑3.0‑flash 昇腾 0‑Day 适配落地@ACP#IX9104 在国产高密度算力矩阵中的机遇与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
wengqidaifeng1 小时前
2026 年电赛(TI 杯)H 题:摆杆机械结构、MaxiCamPro 测量、步进编码器与三层 PID
单片机·嵌入式硬件·mcu
振南的单片机世界2 小时前
1MΩ内阻+10pF寄生电容=信号“低通谋杀”
arm开发·stm32·单片机·嵌入式硬件
十月的皮皮3 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 -上位机主窗口设计说明
c语言·stm32·单片机·stm32cubemx
wuyk5553 小时前
第1章:无刷电机核心原理与运行机制
c语言·开发语言·stm32·单片机·嵌入式硬件·机器学习
科芯创展3 小时前
XZ9164,16V,0.8A稳压LDO芯片
单片机·嵌入式硬件
WWJA王文举3 小时前
HAL库、标准库、LL库和寄存器开发有什么区别?STM32四种开发方式一次讲透
stm32·单片机·嵌入式硬件
0x3F(小茶)4 小时前
FreeRTOS 系统配置
c语言·单片机·mcu
wengqidaifeng4 小时前
2026 年电赛(TI 杯)H 题:完整测评流程、失败案例复盘、比赛策略与开源交付
c语言·单片机·嵌入式硬件
0x3F(小茶)5 小时前
FreeRTOS 任务相关 API 函数
c语言·arm开发·单片机