我的Arduino Nano发送的(传感器)值不正确

我的Arduino Nano发送的(传感器)值不正确,arduino,xbee,Arduino,Xbee,我想开发一个无线传感器系统。我用过,和专业S1 这是我的代码: int value ; const int gasSensor = A0; void setup() { Serial.begin(9600); } void loop() { int value = analogRead (gasSensor); float volt = (value/1023.0)*5.0 ; // Rechne die von ADC ausgegebenen Werten

我想开发一个无线传感器系统。我用过,和专业S1

这是我的代码:

int value ;
const int gasSensor = A0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    int value = analogRead (gasSensor);

    float volt = (value/1023.0)*5.0 ;   // Rechne die von ADC ausgegebenen Werten in Volt um
    float Rs1 = 10*(5-volt)/volt;       // Rechne den Widerstandswert
    //Serial.print("40B7DEF1");         // Sensorname
    //Serial.print("\t");               // Tabulator

    // Kalibrierungsarray der Länge N = 17
    float Rs [17] = {57.84260516,  2.200081335,  1.606762875,  1.178596714,  0.944910617,     0.865628395,  0.764262648,  0.687566798,  0.626992561,  0.567101091,  0.544815465,  0.496850952,  0.474860336,  0.474860336,  0.442046642,  0.423905489,  0.402219139};
    float ppmValue [17] = {0,  5,  10,  15,  20,  24,  28.25,  32.5,  37.75,  43.25,  48.75,  53.25,  57.75,  62.50,  67.50,  75.5,  77.5};

    if (Rs1 >= Rs [0])
    {
        float ppm = ppmValue [0];
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println(ppm);
        delay(30000);
    }

    // Interpolation: ppm [0;5]
    if ( Rs[1] < Rs1 && Rs1 < Rs[0]){
        float ppm = ppmValue [0] + ((-Rs1 + Rs [0])/(Rs[0] - Rs [1] ))*(ppmValue [1] - ppmValue[0]);
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [5;10]
    else if ( Rs[2] < Rs1 && Rs1 < Rs[1]){
        float ppm = ppmValue [1] + ((-Rs1 + Rs [1])/(Rs[1] - Rs [2] ))*(ppmValue [2] - ppmValue[1]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [10;15]
    else if ( Rs[3] < Rs1 && Rs1 < Rs[2]){
        float ppm = ppmValue [2] + ((-Rs1 + Rs [2])/(Rs[2] - Rs [3] ))*(ppmValue [3] - ppmValue[2]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [15;24]
    else if ( Rs[4] < Rs1 && Rs1 < Rs[3]){
        float ppm = ppmValue [3] + ((-Rs1 + Rs [3])/(Rs[3] - Rs [4] ))*(ppmValue [4] - ppmValue[3]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [24;28.25]
    else if ( Rs[5] < Rs1 && Rs1 < Rs[4]){
        float ppm = ppmValue [4] + ((-Rs1 + Rs [4])/(Rs[4] - Rs [5] ))*(ppmValue [5] - ppmValue[4]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [28.25;32.5]
    else if ( Rs[6] < Rs1 && Rs1 < Rs[5]){
        float ppm = ppmValue [5] + ((-Rs1 + Rs [5])/(Rs[5] - Rs [6] ))*(ppmValue [6] - ppmValue[5]);
        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [32.5;37.75]
    else  if ( Rs[7] < Rs1 && Rs1 < Rs[6]){
        float  ppm = ppmValue [6] + ((-Rs1 + Rs [6])/(Rs[6] - Rs [7] ))*(ppmValue [7] - ppmValue[6]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [37.75;43.25]
    else if ( Rs[8] < Rs1 && Rs1 < Rs[7]){
        float  ppm = ppmValue [7] + ((-Rs1 + Rs [7])/(Rs[7] - Rs [8] ))*(ppmValue [8] - ppmValue[7]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [43.25;48.75]
    else if ( Rs[9] < Rs1 && Rs1 < Rs[8]){
        float ppm = ppmValue [8] + ((-Rs1 + Rs [8])/(Rs[8] - Rs [9] ))*(ppmValue [9] - ppmValue[8]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }
    // Interpolation: ppm [48.75;53.25]
    else  if ( Rs[10] < Rs1 && Rs1 < Rs[9]){
        float  ppm = ppmValue [9] + ((-Rs1 + Rs [9])/(Rs[9] - Rs [10] ))*(ppmValue [10] - ppmValue[9]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [53.25;57.75]
    else if ( Rs[11] < Rs1 && Rs1 < Rs[10]){
        float ppm = ppmValue [10] + ((-Rs1 + Rs [10])/(Rs[10] - Rs [11] ))*(ppmValue [11] - ppmValue[10]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [57.75;62.5]
    else if ( Rs[12] < Rs1 && Rs1 < Rs[11]){
        float  ppm = ppmValue [11] + ((-Rs1 + Rs [11])/(Rs[11] - Rs [12] ))*(ppmValue [12] - ppmValue[11]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [62.5;67.5]
    else  if ( Rs[13] < Rs1 && Rs1 < Rs[12]){
        float  ppm = ppmValue [12] + ((-Rs1 + Rs [12])/(Rs[12] - Rs [13] ))*(ppmValue [13] - ppmValue[12]);
        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [67.5;75.5]
    else  if ( Rs[14] < Rs1 && Rs1 < Rs[13]){
        float ppm = ppmValue [13] + ((-Rs1 + Rs [13])/(Rs[13] - Rs [14] ))*(ppmValue [14] - ppmValue[13]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    // Interpolation: ppm [75.5;77.5]
    else if( Rs[15] < Rs1 && Rs1 < Rs[14]){
        float ppm = ppmValue [14] + ((-Rs1 + Rs [14])/(Rs[14] - Rs [15] ))*(ppmValue [15] - ppmValue[14]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    else if( Rs[16] < Rs1 && Rs1 < Rs[15]){
        float ppm = ppmValue [15] + ((-Rs1 + Rs [15])/(Rs[15] - Rs [16] ))*(ppmValue [16] - ppmValue[15]);

        //PPM Ausgabe
        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);}

    else if (Rs1 >= Rs [16])
    {
        float ppm = ppmValue [16];

        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    else if (Rs1 < Rs [16])
    {
        float ppm = 80;

        //Serial.print ("ppm: ");
        Serial.print("1");            // Sensorname
        Serial.print("\t");           // Tabulator

        Serial.println (ppm);
        delay(30000);
    }

    delay(3000);
}
int值;
常数int气体传感器=A0;
无效设置(){
Serial.begin(9600);
}
void循环(){
int值=模拟读数(气体传感器);
浮动电压=(值/1023.0)*5.0;//以伏特为单位
浮子Rs1=10*(5伏)/V;//重新安装宽支架
//Serial.print(“40B7DEF1”);//传感器名称
//Serial.print(“\t”);//制表器
//Kalibrierungsarray der Länge N=17
浮点数Rs[17]={57.84260516、2.200081335、1.606762875、1.178596714、0.944910617、0.865628395、0.764262648、0.687566798、0.626992561、0.567101091、0.544815465、0.496850952、0.474860336、0.474860336、0.442046642、0.423905489、0.40219139};
浮动PPM值[17]={0,5,10,15,20,24,28.25,32.5,37.75,43.25,48.75,53.25,57.75,62.50,67.50,75.5,77.5};
如果(Rs1>=Rs[0])
{
浮动ppm=ppm值[0];
//Serial.print(“ppm:”);
Serial.print(“1”);//传感器名称
Serial.print(“\t”);//制表器
串行打印项次(ppm);
延迟(30000);
}
//插值:ppm[0;5]
如果(Rs[1]else if (Rs1 < Rs [16])
for ( int i = 0; i <= 16; i++ ) {
    if (Rs1 < Rs [i]) {
        if (i = 0) {
            float ppm = ppmValue [i];
        }
        else{
            float ppm = ppmValue [i-1] + ((-Rs1 + Rs [i-1])/(Rs[i-1] - Rs [i] ))*(ppmValue [i] - ppmValue[i-1]);
        }
        //Serial.print ("ppm: ");
        Serial.print("1");
        // Sensorname
        Serial.print("\t");
        // Tabulator
        Serial.println (ppm);
        delay(30000);
        break;
    }
    else if (Rs1 > Rs [16]) {

        float ppm = 80;
        //Serial.print ("ppm: ");
        Serial.print("1");
        // Sensorname
        Serial.print("\t");
        // Tabulator
        Serial.println (ppm);
        delay(30000);
    }
}