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

思路:应该设置死区

假设我们把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;
}
相关推荐
ch3nyuyu14 小时前
单片机实验2
单片机·嵌入式硬件
mk01515 小时前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
达子66617 小时前
Zephyr RTOS 学习系统:第一阶段 —— 入门篇
stm32·单片机·嵌入式硬件
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
STM32入门第一课:32位MCU
stm32·单片机
西城微科方案开发1 天前
智能电子跳绳方案开发
单片机·嵌入式硬件
国科安芯1 天前
抗辐射微控制器在卫星电源管理分系统中的控制架构与可靠性研究——基于AS32S601型MCU的星载能源系统智能化管理技术分析
网络·单片机·嵌入式硬件·安全·架构·系统架构·能源
KaifuZeng1 天前
电路面试问题汇总一
单片机·嵌入式硬件·面试·电路
Freedom_my1 天前
STM32简单项目
stm32·单片机·嵌入式硬件
GeekArch1 天前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程
Delta-delta1 天前
M85-GCC13.3-CMSIS-接入笔记
笔记·单片机·嵌入式硬件