Multiples muestras - valor mayor

Hola foro!

Tengo una duda, espero puedan ayudarme. Creo que es algo sencillo, pero no estoy seguro de como se hace.

Supongamos que tengo un sensor "x". Ese sensor me arroja valores indefinidamente, pero quiero que cada, por así decirlo, 200 muestras me tome el valor más alto de todos dentro de esas 200 muestras.

Como le podría hacer?

De antemano, muchas gracias amigos :smiley:

Es simple, defines una variable para guardar el valor máximo, supongamos valorMaximo y la inicializas a 0 (generalmente el menor valor a leer).
Luego con cada lectura comparas el valor leído con valorMaximo y si es mayor lo guardas en esa variable.
Algo así

if(valorLeido > valorMaximo){
  valorMaximo = valorLeido;
}

y listo, una vez completado tu ciclo de muestreo (las 200 lecturas) haces lo que debas con valorMaximo y finalmente vuelves a ponerla a 0 para iniciar el próximo ciclo.

Saludos

1 Like

Gracias hermano, sabia que era algo muy sencillo jajaj pero ya ando en finales y ando medio bloqueado xD!

Dejo el código ya funcionando aquí:

//ASC712 Nos da 2.5v para 0A
//La sencibilidad proporcionada por el fabricante varia dependiendo 
//de la capacidad del sensor
//float Sensibilidad = .185; //Sensicibilidad en Voltios/Amperio para sensor de 5A
float Sensibilidad = .100; //Sensicibilidad en Voltios/Amperio para sensor de 20A
//float Sensibilidad = .066; //Sensicibilidad en Voltios/Amperio para sensor de 30A

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  float I = obtenerI(200);
  Serial.print("Corriente: ");
  Serial.println(I,3);
  //delay(100);
}

float obtenerI(int numMuestras)
{
  float voltajeSensor;
  float valorMax = 0;
  float corriente;
  for(int i = 0; i < numMuestras; i++)
  {
    voltajeSensor = analogRead(A0)*(5.0 / 1023.0); //Leemos el sensor y lo convertimos a voltaje   
    if (voltajeSensor > valorMax){
      valorMax = voltajeSensor;
    }
  }
  corriente = (valorMax - 2.5)/Sensibilidad;
  return(corriente);
}