constexpr uint8_t Sync = 2;

int Volt_pin = A0;
int sensorValue;
int cyccnt = 0;
byte stcur = 1; // stato corrente di fase
int MaxVolt = 0;
long MedVolt = 0;
double Volt;
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;
MaxVolt = 0;
if(cyccnt == 50){ // Ha effettuato medie per un secondo
Volt = 0.004711*double(MedVolt) + 35; // taratura corrente
Serial.print(MedVolt);
Serial.print(" -> ");
Serial.println(int(Volt + 0.5));
MedVolt = 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;
}