Nombrar un rango de valores.

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.

String Voltaje;

float m = analogRead(A0);
   float volt =m*5/1024;

void setup() {
  Serial.begin(9600); 
  }
void loop() {
if (volt>=0.40 && volt<0.52){
  Voltaje ="1";
Seria.println ("1")
  return direccion ;
delay()
  }
 else if (volt>=0.52 && volt<0.62){
 Voltaje ="2";
Seria.println ("2")
 return direccion ;
  }
 else if (volt>=0.62 && volt<0.72){
 Voltaje ="3";
Seria.println ("3")
 return direccion ; 
 }
}

Espero se muy claro, espero me puedan ayudar y muchas gracias de antemano.

Tu código que seguramente no compilaste porque esta plagado de errores, tiene cosas muy elementales que debes corregir.

Empiezo por :

float m = analogRead(A0);
   float volt =m*5/1024;

No pueden definirse como variables gloables. Si puedes hacerlo pero no asignarles funciones como analogRead o la operación siguiente.

  1. no has defindio direccion.

  2. faltan ; en muchas instrucciones

Por lo tanto asumo que ese código nunca fue compilado o te hubiera dado errores por los que estarías preguntando.
Comienza por ahi.

Hola, sí es verdad, no lo había compilado, ahora he corregido los errores.

String Voltaje;

float m = (A0);
   float volt =m*5/1024;

void setup() {
  Serial.begin(9600);
  }
void loop() {
if (volt>=0.40 && volt<0.52){
  Voltaje ="1";
Serial.println ("1");
  return Voltaje ;

  }
 else if (volt>=0.52 && volt<0.62){
 Voltaje ="2";
Serial.println ("2");
 return Voltaje ;
  }
 else if (volt>=0.62 && volt<0.72){
 Voltaje ="3";
Serial.println ("3");
 return Voltaje ;
 }
}

Hola

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.

Espero que le sirva.

Saludos

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.