constexpr uint8_t Sync = 2;

int sensorValue;
int cyccnt = 0;
byte stcur = 1; // stato corrente di fase
int Volt_pin = A0;
int MaxVolt = 0;
long MedVolt = 0;
double Volt;
int Amp2_pin=A2; // corrente assorbita
int MinAmp2 = 1023;
int MaxAmp2 = 0;
long MedAmp2 = 0;
double Amp2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(Sync, INPUT);
while(digitalRead(Sync) == LOW){} // Attende di sincronizzarsi alla fase positiva
}
void loop()
{
if(stcur == 0){
if (digitalRead(Sync) == HIGH){ // Registra la transizione a fase positiva
stcur = 1; // fase positiva diventa la fase corrente
cyccnt = cyccnt + 1; // conta il numero di cicli
MedVolt = MedVolt + MaxVolt;
MedAmp2 = MedAmp2 + MaxAmp2 - MinAmp2;
MaxVolt = 0;
MinAmp2 = 1023;
MaxAmp2 = 0;
if(cyccnt == 50){ // Ha effettuato medie per un secondo
Volt = 0.004711*double(MedVolt) + 35; // taratura corrente
Amp2 = 0.0010255*double(MedAmp2) - 0.045; // taratura corrente
Serial.print("V: ");
Serial.println(int(Volt + 0.5));
Serial.print("A: ");
Serial.print(MedAmp2);
Serial.print(" -> ");
Serial.println(Amp2);
MedVolt = 0;
MedAmp2 = 0;
cyccnt = 0;
while(digitalRead(Sync) == LOW){ // Risincronizzazione
}
stcur = 1;
}
}
}
else {
if (digitalRead(Sync) == 0){
stcur = 0;
}
}
sensorValue = analogRead(Volt_pin);
if(sensorValue>MaxVolt) MaxVolt=sensorValue;
sensorValue = analogRead(Amp2_pin);
if(sensorValue if(sensorValue>MaxAmp2) MaxAmp2=sensorValue;
}