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

思路:应该设置死区

假设我们把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;
}
相关推荐
wuyk55512 小时前
104.C 语言字节对齐:从底层原理到工程实践的完整指南
c语言·开发语言·stm32·单片机·嵌入式硬件
新晨单片机设计20 小时前
S006A-基于STM32单片机温湿度检测系统【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
逐步前行1 天前
ESP32-S3-分区表(Partition Table)
单片机
星河单片机1 天前
STM32驱动HS‑S37A水位传感器+OLED完整实验讲解
stm32·单片机·嵌入式硬件
糖糖单片机设计1 天前
STM32水稻苗大棚环境监测系统
stm32·单片机·嵌入式硬件
star learning white1 天前
STM32入门学习3
stm32·单片机·学习
jianqiang.xue1 天前
审查技能库(上):内存安全四件套
stm32·单片机·物联网·架构·esp32
XiHongShi20161 天前
cpuz分享,建议保存
单片机·学习
糖糖单片机设计1 天前
STM32 老人跌倒监测报警系统
stm32·单片机·嵌入式硬件
智闲电子设计1 天前
STM32 硬件 CRC 与 UID 实战:固件校验防变砖,UID 防抄板,这两个外设白用太可惜
stm32·单片机·嵌入式硬件