1. Estructura Básica de un Sketch de Arduino
Todo sketch de Arduino tiene una estructura fundamental que debes conocer. Esta estructura define el flujo de ejecución del programa.
// Sección de Directivas de Preprocesador (Opcional)
// #include <Libreria.h>
// #define CONSTANTE valor
// Sección de Declaración Global de Variables (Opcional)
// int miVariable = 0;
void setup() {
// Código que se ejecuta UNA SOLA VEZ al inicio
// Configuración de pines, inicialización de comunicación serial, etc.
}
void loop() {
// Código que se ejecuta REPETIDAMENTE después de setup()
// Lógica principal del programa
}
void setup(): Esta función se ejecuta una única vez cuando el Arduino se enciende o se presiona el botón de reset. Es el lugar ideal para inicializar variables, configurar modos de pines (entrada/salida), iniciar comunicación serial, etc.void loop(): Esta función se ejecuta continuamente en un bucle infinito, una vez que terminasetup(). Aquí va la lógica principal de tu programa, lo que quieres que el Arduino haga repetidamente (leer sensores, controlar actuadores, tomar decisiones).
2. Declaración de Variables
Las variables se utilizan para almacenar información que puede cambiar durante la ejecución del programa, como el valor de un sensor, el estado de un botón o un contador.
Tipos de Datos Comunes
| Tipo | Descripción | Rango de Valores | Ejemplo |
|---|---|---|---|
int |
Número entero | -32,768 a 32,767 | int contador = 0; |
long |
Número entero largo | -2,147,483,648 a 2,147,483,647 | long tiempoInicio = 0; |
float |
Número decimal (punto flotante) | ±3.4028235E+38 (6-7 dígitos decimales) | float temperatura = 25.6; |
bool o boolean |
Valor lógico | true o false |
bool estadoLED = false; |
char |
Un solo carácter | -128 a 127 | char letra = 'A'; |
byte (0-255) es más eficiente que
int (-32,768 a 32,767).
3. Configuración de Pines:
pinMode()
Antes de usar un pin, debes configurar si va a actuar como entrada o como salida. Esto se
hace con la
función pinMode().
Sintaxis: pinMode(numero_de_pin, MODO);
numero_de_pin: El número del pin físico del Arduino (por ejemplo, 13, A0).MODO: Puede ser:INPUT: El pin actúa como entrada, para leer un sensor o un botón.OUTPUT: El pin actúa como salida, para controlar un LED o un motor.INPUT_PULLUP: Configura el pin como entrada con una resistencia pull-up interna activada. Útil para botones sin resistencias externas.
Ejemplos:
// Configura el pin 13 como salida (por ejemplo, para un LED)
pinMode(13, OUTPUT);
// Configura el pin 2 como entrada (por ejemplo, para un botón)
pinMode(2, INPUT);
// Configura el pin A0 como entrada con pull-up
pinMode(A0, INPUT_PULLUP);
4. Control Digital:
digitalWrite()
y digitalRead()
Estas funciones son fundamentales para interactuar con el mundo físico a través de los pines digitales.
4.1. Escribiendo en un Pin: digitalWrite()
Envía una señal digital (HIGH o LOW) a un pin configurado como salida.
Sintaxis: digitalWrite(numero_de_pin, VALOR);
numero_de_pin: El número del pin de salida.VALOR: Puede ser:HIGH: Establece el pin a 5V (o 3.3V en placas de 3.3V).LOW: Establece el pin a 0V (GND).
Ejemplo:
// Enciende el LED conectado al pin 13
digitalWrite(13, HIGH);
// Apaga el LED conectado al pin 13
digitalWrite(13, LOW);
4.2. Leyendo de un Pin: digitalRead()
Lee el valor digital (HIGH o LOW) de un pin configurado como entrada. Devuelve
HIGH o
LOW.
Sintaxis: int valor = digitalRead(numero_de_pin);
numero_de_pin: El número del pin de entrada.- El valor devuelto se almacena típicamente en una variable de tipo
int.
Ejemplo:
// Lee el estado del botón conectado al pin 2
int estadoBoton = digitalRead(2);
// Ahora puedes usar 'estadoBoton' en condiciones
if (estadoBoton == HIGH) {
// El botón está presionado
digitalWrite(13, HIGH); // Enciende el LED
} else {
// El botón no está presionado
digitalWrite(13, LOW); // Apaga el LED
}
5. Ejemplo Práctico: Control de LED con un Botón
Vamos a aplicar lo aprendido en un ejemplo práctico. Este sketch leerá el estado de un botón conectado a un pin de entrada y usará ese estado para encender o apagar un LED conectado a un pin de salida.
5.1. Materiales Necesarios
- 1 Arduino UNO (o compatible)
- 1 Protoboard
- 1 Botón pulsador
- 1 LED
- 1 Resistencia de 220Ω (para el LED)
- 1 Resistencia de 10kΩ (para el botón, aunque se puede usar la pull-up interna)
- Cables de conexión (jumper wires)
5.2. Esquema de Conexión (Circuito)
Conexiones:
- LED: El ánodo (pata larga) al pin 13 del Arduino. El cátodo (pata corta) a una resistencia de 220Ω, y el otro extremo de la resistencia a GND.
- Botón: Una pata del botón al pin 2 del Arduino. La pata opuesta del
botón a
GND. El pin 2 se configura con
INPUT_PULLUP, por lo que no se necesita una resistencia externa.
5.3. Código del Sketch
A continuación se presenta el código del sketch. Cada parte está comentada para explicar su función.
##include <Arduino.h>
/*
Control de LED con Botón
Este sketch lee el estado de un botón conectado al pin 2.
Cuando el botón está presionado (conectado a GND), enciende un LED conectado al pin 13.
Cuando el botón no está presionado, el LED está apagado.
Autor: Prof. Eduardo Pimienta
Fecha: Mayo 2024
*/
// --- Sección de Declaración de Variables ---
// Definimos constantes para los números de pin.
// Usar constantes hace el código más legible y fácil de modificar.
const int ledPin = 13; // El número del pin donde está conectado el LED
const int buttonPin = 2; // El número del pin donde está conectado el botón
// Variable para almacenar el estado del botón
int buttonState = 0; // Variable que guardará el valor leído del botón (HIGH o LOW)
// --- Fin de la Sección de Declaración de Variables ---
// --- Función setup() ---
// Se ejecuta una sola vez al inicio
void setup() {
// Inicializamos el pin del LED como una salida.
pinMode(ledPin, OUTPUT);
// Inicializamos el pin del botón como una entrada con resistencia pull-up interna.
// Esto significa que el pin leerá HIGH cuando el botón NO esté presionado,
// y LOW cuando el botón ESTÉ presionado (conectado a GND).
pinMode(buttonPin, INPUT_PULLUP);
}
// --- Fin de la Función setup() ---
// --- Función loop() ---
// Se ejecuta repetidamente después de setup()
void loop() {
// Leemos el estado actual del botón (HIGH o LOW).
buttonState = digitalRead(buttonPin);
// Comprobamos si el botón está presionado.
// Debido a INPUT_PULLUP, el botón está presionado cuando buttonState es LOW.
if (buttonState == LOW) {
// Si el botón está presionado, encendemos (HIGH) el LED.
digitalWrite(ledPin, HIGH);
} else {
// Si el botón NO está presionado, apagamos (LOW) el LED.
digitalWrite(ledPin, LOW);
}
// Un pequeño retardo para estabilizar la lectura (opcional pero recomendado)
// delay(10);
}
// --- Fin de la Función loop() ---
5.4. Explicación del Código
- Declaración de Variables:
const int ledPin = 13;yconst int buttonPin = 2;: Se definen constantes para los números de pin. Esto mejora la legibilidad del código y facilita futuras modificaciones. Usarconstindica que estos valores no cambiarán durante la ejecución.int buttonState = 0;: Se declara una variable entera para almacenar temporalmente el valor leído del pin del botón.
- Función
setup():pinMode(ledPin, OUTPUT);: Configura el pin 13 (donde está el LED) como una salida.pinMode(buttonPin, INPUT_PULLUP);: Configura el pin 2 (donde está el botón) como entrada con la resistencia pull-up interna activada. Esto hace que el pin leaHIGHcuando el botón no está presionado yLOWcuando sí lo está.
- Función
loop():buttonState = digitalRead(buttonPin);: Lee el estado actual del pin 2 y almacena el valor (HIGHoLOW) en la variablebuttonState.if (buttonState == LOW) { ... } else { ... }: Una estructura condicional verifica el valor debuttonState.- Si es
LOW(botón presionado), se ejecutadigitalWrite(ledPin, HIGH);para encender el LED. - Si no es
LOW(botón no presionado, esHIGH), se ejecutadigitalWrite(ledPin, LOW);para apagar el LED.
- Si es
Este ejemplo combina todos los conceptos aprendidos: declaración de variables,
configuración
de pines
con pinMode(), lectura digital con digitalRead() y escritura
digital con
digitalWrite().
6. Galería de Videos Recomendados
Profundiza en el uso del Arduino IDE y ejemplos prácticos.
Introducción al Arduino IDE
Una guía paso a paso sobre cómo instalar, configurar y usar el entorno de desarrollo de Arduino.
Arduino UNO Tutorial
Un tutorial completo que cubre desde lo básico hasta proyectos más avanzados con Arduino UNO.
7. Referencias y Lecturas Recomendadas
- Referencia del Lenguaje Arduino - Documentación oficial de todas las funciones y estructuras del lenguaje Arduino.
- Banzi, M. (2008). Getting Started with Arduino. O'Reilly Media.
- Schwartz, M. (2017). Arduino Cookbook. O'Reilly Media.