Pages: [1]   Go Down
Author Topic: duda llamada de funciones  (Read 586 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola!
Os explico un poco y ahora os pongo el código.
Tengo dos higrómetros y cada uno activa un rele diferente según la humedad, pues bien estoy intentando hacerlo con solo una función y si tengo activo un rele no puedo activar el otro y creo que el problema es que hasta que no salga del while no ejecuta nada mas.

Me gustaría encontrar otra solución para poder regar las dos zonas a la vez

Code:
  int humedad;
    int sonda;
    int seco;
    int eV;
    String regado;
    String porCiento;
    String tiempoRiego;
    String higro;
    //zona1
      int higro1 = A15;
      int eV1 = 21;
      
    //zona2
      int higro2 = A14;
      int eV2 = 20;
      
void setup()
{
    Serial.begin(9600) ;

  

  pinMode(higro1, INPUT);
  pinMode(eV1, OUTPUT);
  pinMode(eV2, OUTPUT);

}
String riego(int sonda){
  
  seco = analogRead(sonda);
  Serial.println(seco);
  
  if(sonda == 69){
    humedad = 900;
    eV = eV1;
    higro = "h1";
  }
  else{
    humedad = 600;
    eV = eV2;
    higro = "h2";

  }
    
  int i = 0;
  while(seco <= humedad){
    
    //if nivel{
      digitalWrite(eV,HIGH);
      if(i==0){
        tiempoRiego = "-";
        i= 1;
        
        regado = higro;
        regado += "-";
        regado += tiempoRiego;
      }
     seco = analogRead(sonda);
    //}
  }
   digitalWrite(eV,LOW);

  return (regado);

}
void loop()
{
      
  regado = riego(higro1);
  regado = riego(higro2);
 
  
}


Creo que no me dejo nada del código

gracias
« Last Edit: February 13, 2013, 05:24:37 am by Jossema106 » Logged


Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 695
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

deberias hacerlos por separado con una funcion que compare si esta en el rango, y si es asi activa sino desactivas.
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 47
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A mi poco saber te pongo el código con algunas correcciones que creo que mejorarían el código.
Puede que me equivoque en las correcciones.
Code:
   int humedad;
    int sonda;
    int seco;
    int eV;
    String regado;
    String porCiento;
    String tiempoRiego;
    String higro;
    //zona1
      int higro1 = A15;
      int eV1 = 21;
     
    //zona2
      int higro2 = A14;
      int eV2 = 20;
     
void setup()
{
    Serial.begin(9600) ;

 

//  pinMode(higro1, INPUT);  las entradas analógicas no hay que definirlas como entradas
  pinMode(eV1, OUTPUT);
  pinMode(eV2, OUTPUT);

}
void riego(int sonda){ // no creo que necesites devolver nada de la función
   
  seco = analogRead(sonda);
  Serial.println(seco);
 
  if(sonda == 69){ // sonda será igual a A14 ó A15 ¿no será seco lo que quieres comparar?
    humedad = 900;
    eV = eV1;
    higro = "h1";
  }
  else{
    humedad = 600;
    eV = eV2;
    higro = "h2";

  }
   
  int i = 0;
  while(seco <= humedad){
   
    //if nivel{
      digitalWrite(eV,HIGH);
      if(i==0){
        tiempoRiego = "-";
        i= 1;
       
        regado = higro;
        regado += "-"; // creo que quieres concatenar y eso me parece que se hace con ||, no con +=. pero al ser una variable de tipo string no estoy seguro
        regado += tiempoRiego;
      }
     seco = analogRead(sonda);
    //}
  }
   digitalWrite(eV,LOW);

}
void loop()
{
       
  riego(higro1);
  riego(higro2);
 
 
}


Lo que has hecho creo que es que riegas una zona hasta que alcanza un cierto valor de humedad y después riegas la otra.
Para hacer lo que dices me parece que tendrás que estructurarlo de otra manera. Evitando un bucle while.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias!

Ya lo he solucionado, cambio un while por un if con su else.

No sabia lo de las entradas analogicas.
Comparo con 69 y 68 porque es el valor que tiene el pin ( creia que tendria a15 y a14) pero no es asi.

Necesito devolver la cadena en la que almaceno previamente la sonda que lee y el tiempo que esta activa.

Se concatena asi.


Gracias!
Logged


Pages: [1]   Go Up
Jump to: