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
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.
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.