¿Qué es una constante?
Una constante es un valor que no cambia durante toda la ejecución de un programa. Se utilizan para representar valores conocidos que no van a cambiar.
Las constantes en Arduino son muy útiles, por ejemplo, para definir pines.
Imagina que conectas un LED al pin digital 3. Una vez que has realizado las conexiones y ejecutas el sketch, el LED no va a cambiar de pin, permanecerá conectado el mismo pin durante toda la ejecución.
Siempre que necesites hacer referencia al LED desde el sketch tendrás que hacerlo a través del pin, en este caso el 3. La constante representa el 3 todo el tiempo, además de otorgarle un nombre más amigable (el identificador). En este caso el identificador de la constante es LED.
¿Cómo se declaran las constantes en Arduino?
Este es el primer paso, aprender a declarar constantes dentro del sketch para poder utilizarlas posteriormente.
En realidad es muy fácil. Es muy parecido a declarar una variable, pero colocando la palabra reservada const delante de la declaración:
const int LED = 3;
const float PI = 3.1416;
El simple hecho de colocar const al inicio de la declaración impedirá que se modifique la constante aunque intentes asignarle un nuevo valor.
Si intentas esto se producirá un error:
LED = 4;
Como el valor de la constante no podrá cambiar posteriormente, debes asignarle un valor inicial durante la declaración, que será el que tendrá durante el resto de la ejecución.
Si te fijas en el ejemplo anterior, declaré 2 constantes: LED y PI. No es obligatorio declararlas en mayúscula, pero es bastante común para distinguirlas de las variables.
Como puedes ver en el ejemplo, las dos constantes tienen valor inicial. La primera, LED, representa el pin digital 3 del que hablábamos al inicio, por eso le he asignado ese valor. He elegido el identificador (nombre de la constante) LED puesto que hay un LED conectado a ese pin y será mucho más intuitivo usar LED en vez de usar 3.
Lo mismo ocurre con la segunda constante. En este caso intento representar el número Pi, por eso he elegido ese nombre. Como ya sabrás, el valor del número Pi siempre es 3.1416 y nunca va a cambiar, por eso he asignado ese valor inicial.
Una constante es la mejor elección en estos casos, aunque existen otros en los que también te serán útiles. Ya lo irás descubriendo con la práctica.
Constantes predefinidas en Arduino
Como las constantes son tan útiles y prácticas, Arduino dispone de algunas constantes ya definidas que pueden resultare muy útiles en algunas situaciones.
Vamos a ver cuáles son las constantes predefinidas en Arduino:
- HIGH: Representa un pulso alto en un pin del Arduino. En un pin configurado como entrada, este valor se dispara cuando entra un voltaje superior a 2 o 3V (depende de la placa). Cuando el pin está configurado como salida, enviar este valor establecerá un voltaje en el pin de 3.3 o 5V (depende de la placa).
- LOW: Representa un pulso bajo en un pin del Arduino. Cuando el pin está configurado como entrada, se dispara este valor cuando entra un voltaje inferior a 1.5V o 1V (depende de la placa). En el caso de un pin configurado como salida, enviar esta constante al pin supondrá que se fije un valor de 0V en cualquier caso.
- INPUT: Sirve para especificar que un pin trabaja en modo entrada. Se utiliza con la función pinMode().
- INPUT_PULLUP: Esta constante se utiliza como argumento de la función pinMode() para indicar que se debe activar la resistencia de pullup interna del pin y que se trabajará en modo entrada.
- OUTPUT: Permite indicar que un pin trabaja en modo salida. Se utiliza con la función pinMode().
- LED_BUILTIN: Representa el LED integrado de Arduino que está conectado al pin 13 digital. Puedes utilizar esta constante en vez de declarar una específica para este pin.
Fíjate como Arduino utiliza mayúsculas para las constantes. Puesto que ya están predefinidas en el lenguaje no podrás escribirlas de otra forma.
Fíjate en el siguiente ejemplo:
digitalWrite (LED_BUILTIN, HIGH);
En este caso las constantes LED_BUILTIN y HIGH se están usando de forma correcta. Si las escribes de otra forma se producirá un error:
digitalWrite (led_builtin, high);