Flag para saber estado de un led

Hola a todos, quiero hacer una flag para poder consultar el estado de unos relés, decidí crear 2 variables:

int flag1 = 0, flag2 = 0;

hasta fácil je, ahora cada vez q abro/enciendo un relé pongo la bandera en 1 y cuando cierro/apago ponga la bandera en 0, pero al consultar los estados de los relés mediante una función de reporte, no quiero que me diga 1 o 0, sino prendido y apagado...no se como ponerlo en código, porque cuando consulto la variable me va a devolver como estado 1 o 0...
la verdad o es tarde ya o no se, no lo veo...
bueno nada eso, aguardo sus comentarios gracias...

Ejemplo de mensaje por consola

if(flag1 == 1) {
  Serial.print("Encendido");
}
else {
  Serial.print("Apagado");
}

Saludos

Hola gatul como estas, se ve que estoy mareado ya jaja, lo que hice fue crear las variables, que en vez de int son string:

String flag1 = "0", flag2 = "0", Flag1="Apagado", Flag1="Apagado";

y lo que hago es caga vez que enciendo, pongo 1 para flag1/flag2 y encendido para Flag1/Flag2
lo mismo para cuando apago 0 flag1/flag2 y apagado para Flag1/Flag2..
y obviamente cuando quiero enviar el reporte mando las variables Flag1/Flag2..
estaría mal, gasto recursos innecesariamente?
me confunde leer por ahí que los string son perdida de recursos...

Pero eso no es lo que pusiste en el primer post, ahí las defines int.

En el caso de String, bien podrías cargarle "Encendido" o "Apagado" directamente según sea el caso (en lugar de "1" o "0") y luego hacer la comparación contra esas cadenas, pero definitivamente es una pérdida de recursos.

De hecho, si a flagX las haces tipo byte liberas 2 bytes de memoria que bien podrías llegar a usar para otra cosa, incluso con 1 solo byte podrías manejar hasta 8 flags, pero eso es para otro momento.

Saludos

Un flag es una bandera, un bit, Si o No, 1 o 0.
Lo demás que expresas son carteles en formato String.
Un String nunca es un flag, si quieres asociarlo con uno, no hay problema pero no te confundas.

Bueno si es como dicen gracias a los 2, si la idea es no gastar recursos innecesariamente, como puedo hacerlo tipo byte pero después poder decir apagado o encendido?

y abuso con una consulta mas, indexof(); busca literalmente lo que contiene entre comillas o sea completo, o va leyendo y si se cumple antes la condicion la ejecuta aunque lo que estaba entre comillas era mas largo? me explico con un ejemplo

int led1 = variable.indexof("xr1"); 
int led2 = variable.indexof("xr12");

suponiendo que cada indexof() refieren a una función distinta, va a considerar siempre a xr1 o si la variable de donde va a comparar dice xr12 la va a considerar a x12?

Lo haces así de simple

byte flag1 = 0, flag2 = 0;

La comparación no cambia, sigue siendo

if(flag1 == 1) {

porque comparas contra un literal (el 1).

Por lo demás, haz la prueba y sácate la duda tu mismo, nada se va a romper. :wink:

Saludos

Hola gatul gracias por tu respuesta, no no me sirve, necesito que si o si contenga texto..

No, no necesitas que si o si tenga texto, necesitas cambiar la forma de pensar lo que quieres hacer.

Amplio: Una variable flag (bandera) se asocia justamente a eso, una bandera que se levanta ante determinada situación y se baja ante otra (imagina la bandera amarilla en automovilismo, se levanta solamente cuando hay un incidente en la pista y los pilotos actúan en consecuencia. Pero no hay muchas banderas amarillas, una que diga "Choque", otra "Pirulo se quedó", o "Tal pinchó un neumático", hay solo una bandera amarilla lisa y es suficiente).
Desde nuestro punto de vista, es una variable que solo debería almacenar 2 valores, 0/1 o false/true, nada más.
Como te dije antes, ajustando el código (y con más conocimientos, obviamente) puedes usar una variable tipo byte para contener hasta 8 flags, 1 por cada bit del byte.
De hecho el propio procesador hace esto, por ej., con los flags de interrupciones que están todos en un mismo registro interno, un bit para señalizar cada interrupción.

Si tu usas variables string, aunque contengan solamente dos posibles textos y de éstos dependa la acción a realizar, no son flags, son simplemente variables string, ni más ni menos.

Saludos

Creo que lo estas buscando es el procedimiento enum.

enum Estado {Encendido,Apagado};
Estado rele;
if (rele==Encendido){
}

Hola, si lo hice con byte, me costó pero salió, gracias a todos..
hay cosas que salen mas fácil que otras, pero el tema tmb es el conocimiento, yo lo razono en función de lo que se y conozco, a partir de que te dan info nueva, es ahí donde se abren las posibilidades de aprender mas y mejor..

¿Salió?
¡Te felicito!

La forma autodidacta de aprender es así, "a los golpes", leyendo mucho y practicando.
Te puedes llevar muchas desilusiones, es verdad, pero sirven para aprender y cuando lo logras nadie te puede quitar el orgullo de haberlo logrado tu solo.

Saludos

Tal cual, muchas gracias gatul...