我有一个光传感器,可以读取从 0 到 4095 的光强度。我努力使用光的平方反比定律编写一个方程,以便当光最低时(假设最低环境光为 50),它返回 1,如果最高 (4095),则返回 26,但至关重要的是,从 1 到 26 的增量需要光线呈指数级增加,即:
123 4 5 6 7 8 9 10 ...27
light intensity ->
有什么方程式的建议吗?我似乎无法弄清楚。语言是 C。
最佳答案
您想要将 4095 到 50 的区间分成 25 个相等的部分 (26-1)。这意味着每个“强度段”的宽度是:
(4095-50)/25 = 161.8
因此,如果变量 x
的范围为 1 到 26,则距离方程为:
D = sqrt( 1 / (4095 - (x * 161.8)) )
这是采用 Intensity_value = 1/D^2
作为比例(我说“强度值”,因为如果它是真实强度,则这不包括比例常数 - 我们是处理这个问题的任意单位)。
换句话说,如果您将 x
绘制在一条线上,并且每个 x
值距原点的距离为 D
,那么您将获取您显示的 1
到 26
的结果。从你的图表中,我假设当你向右移动时,强度正在减弱。
您应该能够将其推广到不同的强度范围和相应的 x
的不同范围。
关于c - 平方反比定律方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761508/