Tabla de contenido
Arduino soporta varios tipos de datos para almacenar y manipular información
Los tipos de datos más comunes en Arduino son:
| Texto | // | /* | */ | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Puntuación | ; | : |
| | | | | | | | | | Compilación y declaración |
|
| && | || | |= | &= | != | ?! | | Operadores Comparativas | > | < | >= | <= | | | | | | | | | Operadores de Desplazamiento |
| << | <<= |
| | | | | | | | | Paréntesis, corchetes | [ ] | {} | () | | | | | | | | | | Apuntadores | -> | & | * | . | | | | | | | |
Para definir variables, constantes arreglos y otras estructuras en C es necesario definir el tipo de dato que se va a utilizar para reservar su espacio en memoria
<aside> ℹ️ El tamaño del dato depende directamente del compilador.
Dato entero (integer) “int” | |
---|---|
Computadoras | Microcontroladores |
32 bits | 16 bits |
</aside> |
En la presente tabla se muestran los tipos de datos utilizados en lenguaje C para microcontroladores y Arduino:
Tipo de dato | Arduino | AVR-GCC | Tamaño en bits | Tamaño en bytes | Rango (con signo) | Rango (sin signo) |
---|---|---|---|---|---|---|
Short | N/A | short | 1 bit | N/A | N/A | 0 a 1 |
integer 1 | N/A | uint1_t | 1 bit | N/A | N/A | 0 a 1 |
boolean | bool |
N/A | 1 bit | N/A | Verdadero (1) o Falso (0) | |
integer 8 | N/A | int8_t | 8 bits | 1 | -128 a 127 | N/A |
unsigned integer 8 | N/A | uint8_t | 8 bits | 1 | N/A | 0 a 255 |
N/A | byte (Arduino-specific) |
N/A | 8 | 1 | N/A | 0 a 255 |
signed character | char | 8 | 1 | -128 a 127 | N/A | |
unsigned character | unsigned char |
N/A | 8 | 1 | N/A | 0 a 255 |
integer | int |
int16_t | 16 | 2 | -32,768 a 32,767 | N/A |
unsigned integer | unsigned int |
uint16_t | 16 | 2 | N/A | 0 a 65,535 |
word | word (Arduino-specific) |
N/A | 16 | 2 | N/A | 0 a 65,535 |
signed long | long |
long | 32 | 4 | -2,147,483,648 a 2,147,483,647 | N/A |
unsigned long | unsigned long |
UL | 32 | 4 | N/A | 0 a 4,294,967,295 |
float | float |
float | 32 | 4 | ±1.18e-38 a ±3.4e38 (con 6-7 dígitos decimales de precisión) | N/A |
double | double |
double | 32 | 4 | Igual que float en Arduino Uno |
N/A |
Una constante es un número, un carácter o una cadena de caracteres que se puede utilizar como valor en un programa, se utilizan para para representar valores flotantes, enteros, de enumeración o de caracteres que no pueden modificarse, también es posible definir nombres de donde están conectados los pines
En el lenguaje de programación de Arduino, hay dos enfoques comunes para declarar constantes: el uso de la palabra clave #define
y el uso de la palabra clave const
Ambos enfoques tienen sus propias ventajas y desventajas, especialmente en el contexto de microcontroladores
**#define**:
La directiva #define
se utiliza en la etapa de preprocesamiento y es una forma de definir constantes simbólicas. Cuando el preprocesador encuentra una directiva 1. #define
, reemplaza todas las ocurrencias del símbolo en el código fuente por su valor correspondiente antes de la compilación.
Ventajas:
Desventajas:
/*---Utilizando #define---*/
// no lleva ";" para finalizar la línea
/*--pothole_case_naming--*/
#define PI 3.1416 //No lleva ";"
#define DELAY_1MS 1000
/*--camelCase or CamelCase--*/
//Para definir constantes
#define PI 3.1416 //No lleva ";"
#define Delay1ms 1000
<aside> ℹ️ Es recomendable escribirlas en MAYÚSCULAS
</aside>
const
:
La palabra clave const
se utiliza para declarar una variable como constante. Una vez declarada y asignada, el valor de la variable constante no puede modificarse en tiempo de ejecución.
Ventajas:
Desventajas:
<aside> 💡 Entre más legible es el código mayor es su nivel
</aside>
Es una buena práctica colocar nombres a cada uno de los sensores y actuadores conectados a las entradas y salidas del microcontrolador, con el motivo de mejorar la legibilidad del código esto se puede realizar utilizando constantes por medio de #define
<aside> ℹ️ Es recomendable escribirlas en MAYÚSCULAS
</aside>
/*--pothole_case_naming--*/
#define LED0_PIN 13
#define LED1_PIN 12
#define LED2_PIN 11
#define LED3_PIN 10
const uint8_t lED0_PIN = 13;
const uint8_t SWITCH_0 = 11;
/*--camelCase or CamelCase--*/
#define led0Pin 13
#define led1Pin 12
#define led2Pin 11
#define led3Pin 10
const uint8_t led0Pin = 13;
const uint8_t Switch0 = 12;
Una variable es un lugar donde se puede almacenar temporalmente un dato, en C las variables tienen un nombre que las identifica “identifier”, y sirve para hacer referencia a ellas. También tienen un tipo, que es el tipo de datos que puede almacenar y un “qualifier” que menciona si el tipo de dato es con sigo o sin signo
<aside> 💡 El tipo de variable preferida para un microcontrolador de 8 bits es la variable entera de 8 bits
</aside>
🔢 Reglas para el nombre de una variable
<aside> ℹ️ Es recomendable escribirlas en minúsculas
</aside>
//pothole_case_naming
byte ****temp_celsius = 0; //0 - 255(8 bits)
**int** variable_1;// 32 bits
//camelCase or CamelCase
float ****tempCelsius;
bool ****variable1;
Proyecto práctico: semáforo simple