Hola, me gustaría saber si existe alguna forma de asignarle un nombre o un valor a un rango de valores dentro de un if y así poder asignarlo a un delay y que cambie hasta que mi variable entre a otro rango de valores, esto con el fin de que sólo me envíe un mensaje al Monitor serie y no me esté enviando constantemente.
En primer lugar, tal y como le ha comentado Surbyte las variables globales están mal colocadas o mal definidas y serán inicializadas con “0” ya que m=0 o error.
Para lo demás prueba esto a ver si es lo que necesita:
String Voltaje;
byte asignado=0;
float m = 0;
float volt =;
void setup() {
Serial.begin(9600);
}
void loop() {
// Creo que esto es lo que pretende hacer con la lectura del voltaje del pin analogico
float m = analogRead (A0);
float volt =m*5/1024;
if (volt>=0.40 && volt<0.52 && asignado !=1){
Voltaje ="1";
asignado=1;
Serial.println ("1");
return Voltaje ;
}
else if (volt>=0.52 && volt<0.62 && asignado !=2){
Voltaje ="2";
asignado = 2;
Serial.println ("2");
return Voltaje ;
}
else if (volt>=0.62 && volt<0.72 && asignado !=3){
Voltaje ="3";
asignado = 3;
Serial.println ("3");
return Voltaje ;
}
}
Básicamente se define una variable global que coge el valor que ya ha sido asignado al leer un rango, de manera que sólo entra en el rango de valores si antes ha leido otro rango de valores.
No se si esto formará despues parte de una función pero los return no parece tener sentido en el loop.
Hola pepepotero, muchas gracias por las correcciones, al igual que a Surbyte, la verdad es que no he realizado muchos proyectos a lo mucho 4, ahora mismo me dispongo a leer bien la documentación de Arduino para no volver a cometer los errores que he cometido.
Respecto al código, al parecer sí es lo que he estado buscando y me ha funcionado muy bien en mi código, ya he eliminado los return debido a lo que me ha comentado. Muchísimas gracias.