正如一位评论者指出的那样,analogRead的返回值是0-1023之间的整数 . 这是引脚A0上的电压比例,从0到比较电压 . (如果你使用的是5V Arduino,1023是5V.3V Arduino,1023是3V . 看起来你做的任何复杂事情都不会改变你所用的比较电压,所以这应该是准确的 . )
我将假设您正在使用5V,因为这是您的传感器使用的 .
您需要做的是查看设备的data sheet,以确定压力和电压之间的关系 . 看一下表,你有一个复杂的bugger,但是从第5页的图表看,你可以假设0.5V(analogRead大约102)是-2kPa的压力和4.5V(analogRead大约921) )是2kPa的压力 . 你很幸运,缩放是线性的 .
我说“周围”是因为很清楚该设备在响应中有相当多的污点 - 至少加上或减去.5V或.2kPa! (换句话说,0kPa可以读取从462到562的任何地方 . )
你应该将analogRead值从0-102映射到-2kPa,从921-1023到2kPa,其间的所有内容都应该是介于-2和2之间的lerp . 我没有在我面前的arduino所以我不能尝试一下,但应该是这样的:
result = analogRead(A0);
if (result < 102) {
kPa = -2.0;
} else {
if (result > 921) {
kPa = 2.0;
} else {
kPa = map(result, 102, 921, -2000, 2000)/1000.0;
}
}
让我知道,在评论中,如果我搞砸了什么,我会看到修复它 . 这都没有能够实际编译/测试的好处 . =]