我想从传感器上获取数据(我使用的是 velostat)。这是我的代码。
Arduino代码
#define numRows 1
#define numCols 1
int rows_out = 13;
int cols_in = 12;
int Values = 0;
void setup() {
// set all rows and columns to INPUT (high impedance):
pinMode(rows_out, INPUT_PULLUP);
pinMode(cols_in, INPUT);
Serial.begin(9600);
}
void loop() {
pinMode(cols_in, OUTPUT); // set as OUTPUT
digitalWrite(cols_in, LOW); // set LOW
Values = analogRead(rows_out); // read INPUT
pinMode(cols_in, INPUT); // set back to INPUT!
// Print the incoming values of the grid:
Serial.println(Values);
delay(1000);
}
我做了一个传感器与velostat。它有两根电缆,我把其中一根连接到arduino板的模拟引脚上,另一根连接到GND和其他模拟引脚上。另一根接GND和其他模拟引脚。
定速器电缆1-模拟针脚12
节流阀电缆2 - 模拟针脚13 - GND
但是当我上传这个程序时,串行显示器上出现了奇怪的数据。
串行显示器上显示的数据
4095
4095
4075
3283
3082
3056
2973
2941
2865
2685
2308
1859
1365
如果有人知道原因,请帮帮我。我猜是电缆的连接有问题,或者我接错了针,但我不确定。
数据可能没有问题,你很可能跳过了校准步骤。
定速器测量压力,但根据用于制造传感器的材料,它的PressureIn-VoltageOut特性可能有很大差异。此外,即使是相同结构的传感器也会存在差异,因此,在需要精度的应用中,校准的必要性至关重要。
为了简单起见,我建议你假设一个线性特性,并进行以下3步校准。
在数学上,它看起来像:aX1 + b = 0 aX2 + b = 15。
P.S.: 对不起,数学格式太可怕了,还不熟悉如何在markdown中很好地整合数学。
后来的编辑:可以通过在更多的测量值上取平均,并为第二个等式选取一个更大的任意值(以获得更多的粒度)来实现更高的精度。