我的电路图如下,有一个4*4
的电阻矩阵,我这里用面包板搭了个demo,利用mega2560的数字IO口列选电阻,然后四路adc一起测电压
采样原理如下,电压探针的位置接四路adc,上面四路列选,当选中该列时置低电平,其余列置高电平
出现了一个问题,就是我在按压左下红色框框住的压敏电阻时(电阻和压力成反比,压力增大,电阻减小),红色电阻对应的那路adc不变,其他三个蓝色电阻对应的那三路adc测出来的电压变低了,我不是很理解为什么
有没有佬可以教教我怎么测这个东西的电阻
// 测得电压
array([[4.99755859, 4.99755859, 4.99755859, 4.99755859],
[4.99755859, 4https://img-mid.csdnimg.cn/release/static/image/mid/ask/3fec226259af4311b506d633d84b852a.png "#left")
.99755859, 4.99755859, 2.32177734],
[4.99755859, 4.99755859, 4.99755859, 2.30712891],
[4.99755859, 4.99755859, 4.99755859, 2.28271484]])
完整的测试代码如下
void encode(int i, int j, int val);
void setup()
{
Serial.begin(115200);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
void loop()
{
for(int i=0;i<4;++i)
{
if(i > 0)
{
digitalWrite(1 + i, LOW);
}
else
{
digitalWrite(5, LOW);
}
digitalWrite(2 + i, HIGH);
for(int j=0;j<4;++j)
{
send(i, j, analogRead(A0 + j));
delay(50);
}
}
}
void send(int i, int j, int val)
{
Serial.print(i);
Serial.print(',');
Serial.print(j);
Serial.print(',');
Serial.println(val);
}