为什么要写这篇
算是一次更深一些的思考吧,对于查数据表,通常都只有一个表格,如果翻看数据手册,就会看到数据表中对应的数值只是一个典型值,而实际情况是传感器的值必定会在某个范围内波动,对应一个上限值和一个下限值。通常使用这个典型值就可以了,方法就是这篇博客:
但如果需要查找两个数据表,分别是上限表和下限表,那该怎么办呢?顺序查表?有没有可能落空呢?我想到一个比较简单的办法,只要在范围内,必定会返回一个数值。
怎么实现
先对ADC采集的数值分别在两个数据表中进行查找,得到两个相近的值(假设是温度),然后再进一步判断(判断是否在该温度的上下限中,若不在两个温度的上下限中,则找最接近的温度),得到最接近的值(温度)。前提是传感器的上下限不存在重合部分,传感器的数值对应唯一温度
程序如下,可直接复制到菜鸟C在线工具中运行
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#define DEBUG_OUTPUT 0
#define ARRAY_SIZE 40
uint16_t lower_limit[40] =
{
6132, 5988, 5842, 5697, 5553, 5411