String AO_setup(int i, int Rng) {

  DFRobot_GP8403 AO;
  bool needBegin = true;
  bool needRng = true;
  int twinRng = 0;

  if(i%2){  // Odd
    twinRng = RngAO[i-1];
  }else{    // Even
    twinRng = RngAO[i+1];
  }

  needBegin = (twinRng == 0);

  if(Rng > twinRng){
    needRng = true;
  }else{
    needRng = false;
  }

  if(i <= 1){
    AO = AO_0;
  }else if(i <= 3){
    AO = AO_2;
  }else if(i <= 5){
    AO = AO_4;
  }else if(i <= 7){
    AO = AO_6;
  }else if(i <= 9){
    AO = AO_8;
  }else if(i <= 11){
    AO = AO_10;
  }else if(i <= 13){
    AO = AO_12;
  }else if(i <= 15){
    AO = AO_14;
  }

  if(needBegin){  // If not begin yet
    Serial.println("AO_0 init begin");
    while(AO.begin()!=0);
    Serial.println("AO_0 init succeed");
    AO.setDACOutVoltage(0, 0);
    AO.setDACOutVoltage(0, 1);
    delay(20);
    AO.store();
  }
  if(needRng){
    if(Rng == 10){
      AO.setDACOutRange(AO.eOutputRange10V);
    }else{
      AO.setDACOutRange(AO.eOutputRange5V);
    }
  }
  RngAO[i] = Rng;
}

String AO_Write(int i, int volt) {

  DFRobot_GP8403 AO;
  int ch;

  if(i%2){  // Odd
    ch = 1;
  }else{    // Even
    ch = 0;
  }
  
  if(i <= 1){
    AO = AO_0;
  }else if(i <= 3){
    AO = AO_2;
  }else if(i <= 5){
    AO = AO_4;
  }else if(i <= 7){
    AO = AO_6;
  }else if(i <= 9){
    AO = AO_8;
  }else if(i <= 11){
    AO = AO_10;
  }else if(i <= 13){
    AO = AO_12;
  }else if(i <= 15){
    AO = AO_14;
  }

  AO.setDACOutVoltage(volt, ch);
}