Go Down

Topic: Duda con funciones fuera de loop (Read 188 times) previous topic - next topic

Ivan_Bliminse

Soy nuevo en esto de arduino y encontré un tutorial para calibrar un sensor de corriente, el código que efectúa todo es el siguiente:

Code: [Select]
float Sensibilidad=0.139; //sensibilidad en V/A para nuestro sensor
float offset=0.100; // Equivale a la amplitud del ruido
void setup() {
 
  Serial.begin(9600);
}

void loop() {
 
  float Ip=get_corriente();//obtenemos la corriente pico
  float Irms=Ip*0.707; //Intensidad RMS = Ipico/(2^1/2)
  float P=Irms*220.0; // P=IV watts
  Serial.print("Ip: ");
  Serial.print(Ip,3);
  Serial.print("A , Irms: ");
  Serial.print(Irms,3);
  Serial.print("A, Potencia: ");
  Serial.print(P,3); 
  Serial.println("W");
  delay(500);     
}

float get_corriente()
{
  float voltajeSensor;
  float corriente=0;
  long tiempo=millis();
  float Imax=0;
  float Imin=0;
  while(millis()-tiempo<500)//realizamos mediciones durante 0.5 segundos
  {
    voltajeSensor = analogRead(A0) * (5.0 / 1023.0);//lectura del sensor
    corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad); //Ecuación  para obtener la corriente
    if(corriente>Imax)Imax=corriente;
    if(corriente<Imin)Imin=corriente;
  }
  return(((Imax-Imin)/2)-offset);
}


Tengo dos dudas, el programa al subirlo a la plataforma, funciona perfecto pero no entiendo de que forma se ejecuta lo que está debajo del loop porque según veo, este termina luego del "delay(500);".
Mi segunda duda es que no debería ir un ";" luego de la linea "float get_corriente()" para que este funcionara?
Muchas gracias de antemano por su ayuda!

surbyte

Quote
Tengo dos dudas, el programa al subirlo a la plataforma, funciona perfecto pero no entiendo de que forma se ejecuta lo que está debajo del loop porque según veo, este termina luego del "delay(500);".
El
Code: [Select]
delay(500); solo agrega una pausa inservible para que no se llene la pantalla del monitor serie de datos.
Algo que pudo hacerse con millis().

Quote
Mi segunda duda es que no debería ir un ";" luego de la linea "float get_corriente()" para que este funcionara?
Si quieres antes del setup pudes definir

Code: [Select]
float get_corriente();

Pero no cambia nada.

Go Up