Las constantes; como sabemos, no cambian su valor en tiempo de ejecución. Son útiles para prevenir que nosotros mismos tengamos errores.
En el lenguaje de Arduino, que no es otra cosa que C y C++, podemos declarar constantes usando #define
y también const
. Cada una de ellas tiene su explicación.
Es un macro que se ejecuta antes de la compilación. Para explicarlo de la manera más sencilla, supongamos que definimos lo siguiente:
#define NUMERO 1
void setup(){
pinMode(NUMERO, OUTPUT);
digitalWrite(NUMERO, HIGH);
}
Antes de que el código sea compilado, se hará un buscar y remplazar, en donde las ocurrencias serán (valga la redundancia) remplazadas por el valor verdadero. Por lo que (no podemos verlo, pero así es), el programa de arriba se convertiría en lo siguiente:
void setup(){
pinMode(1, OUTPUT);
digitalWrite(1, HIGH);
}
Es decir, remplazó las constantes por el valor verdadero.
Para declarar una constante, usamos const seguido del tipo de la variable. Por ejemplo:
const int numero = 1;
Al compilar, esto no se remplaza. Queda así como está. Y si el compilador detecta que en algún momento de nuestro código queremos asignarle un nuevo valor nos arrojará un valor.
Obedecen el ámbito de las funciones. Es decir, podemos declarar dos constantes con el mismo nombre en diferentes funciones:
void funcionUno(){
const int edad = 18;
}
void otraFuncion(){
const int edad = 50;
}
Y podemos usarlas dentro de cada función sin que choquen. También tiene la ventaja de que tiene tipo, por lo que el compilador nos informará los errores que puede que estemos cometiendo.
const
también permite declarar arreglos, cosa que #define
no.
Finalmente, cabe mencionar que el uso de const
es recomendado en lugar de #define
según este artículo.
Personalmente utilizo #define
porque no trabajo en proyectos grandes, y las librerías que incluyo no colisionan con el nombre de mis constantes.
Sin embargo, es una buena práctica usar const
en lugar de #define
según el sitio oficial de Arduino. Y si ellos lo dicen, es porque así debería ser. Además, en la mayoría de casos tenemos memoria de sobra para los proyectos que hacemos, por lo que no tenemos que ahorrarla usando #define
.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Muy buena explicacion, gracias
Información clara, concisa i totalmente útil.
Muchas gracias por aportarla!
Gracias por sus comentarios. Saludos!
Excelente información, clara y al punto. Entendí bien la diferencia.
Muchas gracias
Me da gusto ayudar
Te invito a suscribirte a mi blog en la barra lateral derecha. Saludos.