c-如何使用多路复用器查看以前的数据



我在电路中使用arduino uno,2多路复用器和电压分配器网络。我使用的是8:1模拟多路复用器。这是我的密码。问题是,当我发送so、s1、s2、s3时,我想读取这些值。目前在下面的程序中,我只是启用so、s1、s2引脚并读取值。一旦发生切换,我想读取这些值。例如,当读取A0时,A5 s0、s1、s2为LOW。在1s之后,它调谐S0=0,S1=0,S1=1。现在,旧数据被新的模拟值取代,即用来自mux1的A1和来自Mux2的A1。

此处附加数据表此处A0-A7通过电压分配器网络连接。至2多路复用器。S0、s1、s2、E短接2个多路复用器,并提供给arduino的7,6,5,4引脚模拟输出根据真值表读取,并根据真值值表控制。

在我的代码中,我可以正确地读取模拟值。但是我如何存储它们或区分多路复用器输出的Ao,A1???它应该会影响其他渠道。

 int SO_enable=7;
 int S1_enable=6;
 int S2_enable=5;
 int Enablepin=4;
 int Sensor_Value0=0;
 int Sensor_Value1=0;
float  voltage0;
float voltage1;
float ARDUINO_ANALOG_SCALING=0.0048875855327468231;
int row,column;
int array[9][4]={
                    {0,0,0,0},
                    {0,0,0,1},
                    {0,0,1,0},  
                    {0,0,1,1},
                    {0,1,0,0},
                    {0,1,0,1},
                    {0,1,1,0},
                    {0,1,1,1},
                    {1,0,0,0}
                 };


void setup()
{
  pinMode(SO_enable, OUTPUT) ;
   pinMode(S1_enable, OUTPUT) ;
   pinMode(S2_enable, OUTPUT) ;
    pinMode(Enablepin, OUTPUT) ;
     pinMode(A0, INPUT) ;
      pinMode(A5, INPUT) ;
   Serial.begin(9600);
}
void loop()
{
   for(row=0;row<9;row++)
  {
    int k=(8*array[row][0]+4*array[row][1]+2*array[row][2]+1*array[row][3]);
    Serial.print("value of k :");
    Serial.println(k);
      digitalWrite(Enablepin,array[row][0]);
      digitalWrite(SO_enable,array[row][1]);
      digitalWrite(S1_enable,array[row][2]);
      digitalWrite(S2_enable,array[row][3]);  
      Sensor_Value0=analogRead(A0);
      Sensor_Value1=analogRead(A5);
      voltage0=Sensor_Value0 * ARDUINO_ANALOG_SCALING;
      voltage1=Sensor_Value1* ARDUINO_ANALOG_SCALING;
        Serial.print("VOlt across Analog pin0:");
    Serial.println(voltage0);
    Serial.print("VOlt across Analog pin5:");
    Serial.println(voltage1);
    Serial.println("......................");
    delay(2000);
  }


}

您想得到电压随时间的变化吗?为什么只声明一个全局数组,如:

float prev_voltage0[9];
float prev_voltage1[9];
for (...) {
    ....
    //difference is (voltage0 - prev_voltage0[row])
    prev_voltage0[row] = voltage0;
    prev_voltage1[row] = voltage1;
    delay(2000);
}

最新更新