float getTensaoDivisor()
{
    float v_divisor = (analogRead(0) * 5) / (float)1024;
    return v_divisor;
}

float getTensaoCapacitor(float v_divisor)
{
    float v_capacitor = (v_divisor * 31.961) / (float)2.906;
    return v_capacitor;
}

float getTensaoTrafo(float v_capacitor)
{
    float v_trafo = (v_capacitor / (float)sqrt(2)) + 1.4;
    return v_trafo;
}

float getTensaoTomada(float v_trafo)
{
    float v_tomada = (v_trafo * 127) / (float)24;
    return v_tomada;
}

void setup()
{
  Serial.begin(9600);
  analogReference(DEFAULT);
  pinMode(A0, INPUT);
}

void loop()
{    
  if(Serial.available() > 0)
  {
    byte input = Serial.read();
    if(input == 0x00)
    {
      float v_divisor = getTensaoDivisor();
      float v_capacitor = getTensaoCapacitor(v_divisor);
      float v_trafo = getTensaoTrafo(v_capacitor);
      float v_tomada = getTensaoTomada(v_trafo);
      Serial.write(v_tomada);
    }
  }
  
  /*float div = getTensaoDivisor();
  float cap = getTensaoCapacitor(div);
  float traf = getTensaoTrafo(cap);
  float toma = getTensaoTomada(traf);  
  
  Serial.print(div);Serial.print("; ");Serial.print(cap);Serial.print("; ");Serial.print(traf);Serial.print("; ");Serial.println(toma);
  delay(500);*/
}