void AO_setup(int i, int Rng) {

  DFRobot_GP8403* AO;
  bool needBegin = true;
  bool needRng = true;

  needBegin = (RngAO[i] == 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;
  }

  if(needBegin){  // If not begin yet
    Serial.println("AO_"+ String(i) + ": initialization Begin");
    while(AO->begin()!=0);
    AO->setDACOutVoltage(0, 2);
    delay(5);
    AO->store();
  }

  if(Rng == 10){
    AO->setDACOutRange(AO->eOutputRange10V);
    Serial.println("AO_"+ String(i) + ": Initialized, Set Range 10V");
  }else{
    AO->setDACOutRange(AO->eOutputRange5V);
    Serial.println("AO_"+ String(i) + ": Initialized, Set Range 5V");
  }

  RngAO[i] = Rng;
  RngAO[i+1] = Rng;
}

void 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;
  }

  //Serial.println(" [AO] " + String(i) + " > " + String(volt));
  //Serial.print(" > ");
  //Serial.println(volt);
  AO->setDACOutVoltage(volt, ch);
}