¿ Qué es Boolean? ¿ Para que sirve?

Ya se que hay documentación y ejemplos, pero no consigo entenderlo para poder usarlo en una alarma.
Gracias de antemano!

Boolean es un tipo de variable que sólo tiene dos valores posibles: "true" (verdadero, 1) y "false" (falso, 0).
Por ejemplo puedes crear la variable

boolean EstadoAlarma = false;

con la que controlarás si la alarma está conectada o desconectada. Cuando activas la alarma pasas la variable a true

boolean EstadoAlarma = true;

El tipo de variable boolean es cómoda cuando se quiere indicar estados de ese tipo, como on/off. Sin embargo a mi juicio tiene sus pequeños peros y es que aunque boolean sólo puede tener dos valores, el consumo de memoria es de 1 byte. Para hacer lo mismo también puedes crear una variable tipo byte, también consume 1 byte de memoria pero en este caso podemos almacenar 256 valores (de 0 a 255). De este modo para el control de la alarma puedes crear una variable tipo byte que puede usarse a modo de bandera

byte EstadoAlarma = 0

Ahora tu variable consume la misma memoria pero te es de mayor utilidad ya que puedes definir por ejemplo los siguientes estados:

EstadoAlarma = 0 --> Alarma desconectada
EstadoAlarma = 1 --> Alarma conectada
EstadoAlarma = 2 --> Alarma armándose
EstadoAlarma = 3 --> Salto de alarma

Imagino que es cuestión de gustos, habrá quien prefiera usar boolean para el estado de conexión/desconexión de la alarma y usar otra variable para otros estados. El ahorro de memoria sólo se notaría cuando el programa es muy extenso.

1 Like

Muchas gracias por tu respuesta, de verdad ha sido de muchísima ayuda.
Entonces imaginemos que está conectada y x sensor te detecta, entonces empezaría a pitar y si no la desactivas, pues salta...
Según tenía pensado esto lo haría con un delay,es decir,un zumbador durante 10seg, al ser un delay. La alarma,al desconectarla no se desconectaría ya que el delay detiene el programa,no se si me explico.
Gracias de nuevo Cheyenne.

lo más conveniente para evitar eso es que lo hagas usando millis() y no delay.

algo estilo:

if(currentMillis - previousMillis > intervalOff)

Puedes leerlo de manera más completa en el ejemplo de "BlinkWithoutDelay".

Un saludo

Muchas gracias!
Cuando esté manos a la obra os digo algo..
Una ultima pregunta:
Con esto

Puedo programar un Atmega 328?
Gracias de nuevo.

para que quieres programar el atmega??? si tenes un arduino lo haces directo con el arduino no necesitas programadores externos....

Entiendo tu pregunta jeje:
El tema es que hago muchos proyectos, entonces me es más barato montar yo desde 0 la placa, es más, he aprendido a hacer pcb y me es más económico y fácil poner un micro en vez de arduino.
Otro de los motivos es por estética: normalmente hago proyectos grandes, entonces las placas por debajo se me quedan llenas de cables y eso no me gusta, por lo que la solución es el pcb hecho bien, por lo que un micro es lo suyo.

Puedes comprar los Atmega con el bootloader cargado, pincharlos en una Arduino para grabarles el programa e incorporarlos a tu placa. Si quieres comprarlos sin el bootloader no sé cuánto es el ahorro y si merece la pena, tampoco estoy muy puesto del proceso para grabarles el bootloader, hay gente en este foro que te podrá responder a esto mucho mejor.

a9965:
Entiendo tu pregunta jeje:
El tema es que hago muchos proyectos, entonces me es más barato montar yo desde 0 la placa, es más, he aprendido a hacer pcb y me es más económico y fácil poner un micro en vez de arduino.
Otro de los motivos es por estética: normalmente hago proyectos grandes, entonces las placas por debajo se me quedan llenas de cables y eso no me gusta, por lo que la solución es el pcb hecho bien, por lo que un micro es lo suyo.

entiendo lo que dices yo tabien he pensado eso pero si te comprar un arduino o si ya tenes uno perfectamente podes grabar el bootloader en los atmega que quieras si necesidad de nada mas entiendes???
no te digo que por cada proyecto compres un arduino sino que con un arduino puedes grabar cuantos bootloader quieras sin tener que comprar un programador...

Si tu objetivo es reducir espacio, puedes usar el arduino nano encapsulado con una shield que te reduzca mucho mas el cableado.