Programación de Robots con
Arduino
Estructura de un programa, entradas/salidas y control de actuadores
Tecnología e Ingeniería · 2.º Bachillerato (LOMLOE)
Material didáctico · Documento 3 de 5
Objetivos de aprendizaje
Al finalizar el estudio de este documento, el alumnado será capaz de:
• Conocer la plataforma Arduino y sus elementos principales.
• Comprender la estructura de un sketch (setup y loop).
• Manejar las instrucciones básicas de entrada y salida.
• Usar variables, condicionales y bucles para controlar el robot.
• Controlar actuadores como servos y motores de corriente continua.
1. ¿Qué es Arduino?
Arduino es una plataforma de hardware y software libre formada por una placa con un
microcontrolador y un entorno de programación (Arduino IDE). Su bajo coste, su sencillez y su
gran comunidad la han convertido en el estándar de la robótica educativa y del prototipado
electrónico. El proyecto nació en Italia en 2005 con un objetivo claro: acercar la electrónica y la
programación a personas sin formación técnica avanzada.
La placa más común, el Arduino UNO, dispone de pines digitales (entrada/salida), pines
analógicos de entrada, salidas PWM (para regular potencia) y conexiones de alimentación. El
programa que se carga en la placa se denomina sketch y se escribe en un lenguaje basado en
C/C++.
Elemento de la placa Función
Pines digitales (0–13) Entrada o salida de señales de dos estados (HIGH/LOW).
Pines analógicos (A0–A5) Lectura de valores continuos (0–1023).
Pines PWM (~) Salida de potencia regulable (0–255).
Puerto USB Carga del programa y comunicación con el ordenador.
Conector de alimentación Fuente externa de energía (7–12 V).
2. Estructura de un programa (sketch)
Todo programa de Arduino se organiza en dos funciones obligatorias:
• setup(): se ejecuta una sola vez al encender la placa. Configura los pines y arranca la
comunicación.
• loop(): se ejecuta de forma repetida e infinita mientras la placa esté encendida. Contiene la
lógica principal.
void setup() {
pinMode(13, OUTPUT); // configura el pin 13 como salida
}
void loop() {
digitalWrite(13, HIGH); // enciende
delay(1000); // espera 1 segundo
digitalWrite(13, LOW); // apaga
delay(1000);
}
Ejemplo clásico «Blink»: hace parpadear un LED conectado al pin 13.
3. Instrucciones básicas
Instrucción Función
pinMode(pin, MODO) Configura un pin como entrada (INPUT) o salida (OUTPUT).
digitalWrite(pin, valor) Pone un pin digital en HIGH (5V) o LOW (0V).
digitalRead(pin) Lee el estado de un pin digital (HIGH o LOW).
analogRead(pin) Lee un valor analógico (0 a 1023).
analogWrite(pin, valor) Genera una salida PWM (0 a 255).
delay(ms) Detiene el programa los milisegundos indicados.
[Link](9600) Inicia la comunicación con el ordenador.
[Link](dato) Envía información al monitor serie.
4. Variables y estructuras de control
4.1. Variables
Una variable almacena un dato que puede cambiar durante la ejecución. Los tipos más usados
son int (enteros), float (decimales), boolean (verdadero/falso) y char (caracteres). Elegir bien el
tipo ahorra memoria, un recurso limitado en los microcontroladores.
4.2. Condicionales y bucles
• if / else: ejecuta instrucciones según se cumpla o no una condición.
• for: repite un bloque un número fijo de veces.
• while: repite un bloque mientras se cumpla una condición.
int distancia = leerSensor();
if (distancia < 20) {
pararMotores(); // obstáculo cerca
} else {
avanzar();
}
Ejemplo: el robot se detiene si detecta un obstáculo a menos de 20 cm.
4.3. Operadores más habituales
Tipo Operadores Significado
Comparación == , != , < , > , <= , >= Comparan dos valores.
Lógicos && , || , ! Combinan condiciones (y, o, no).
Aritméticos +,-,*,/,% Operaciones matemáticas.
5. Control de actuadores
5.1. Servomotor
Con la librería Servo.h se controla la posición de un servo indicando el ángulo deseado con la
instrucción [Link](angulo). Antes hay que asociar el servo a un pin con
[Link](pin).
5.2. Motor de corriente continua
Para invertir el giro y regular la velocidad de un motor CC se usa un driver o puente en H (por
ejemplo, el L298N), que protege la placa y permite manejar corrientes más altas. La velocidad se
regula con salidas PWM mediante analogWrite(). Nunca debe conectarse un motor
directamente a un pin de la placa, pues la corriente podría dañarla.
6. Ejemplo completo: robot esquiva-obstáculos
Un proyecto típico combina un sensor ultrasónico HC-SR04 y dos motores. La lógica es:
• El sensor mide continuamente la distancia al obstáculo más cercano.
• Si la distancia es mayor que un umbral, el robot avanza.
• Si la distancia es menor, el robot se detiene, gira y busca un camino libre.
void loop() {
int d = medirDistancia();
if (d > 25) {
avanzar();
} else {
parar();
girarDerecha();
}
}
Esquema simplificado del bucle principal del robot esquiva-obstáculos.
Glosario de términos clave
Término Definición
Sketch Programa que se escribe y carga en la placa Arduino.
setup() Función que se ejecuta una vez al iniciar.
loop() Función que se repite de forma infinita.
PWM Modulación por ancho de pulso para regular potencia.
Librería Conjunto de código reutilizable (p. ej., Servo.h).
Puente en H Circuito que controla el giro y la velocidad de un motor.
Resumen
Arduino es una plataforma libre ideal para iniciarse en la robótica. Todo sketch se organiza en
setup() (configuración inicial) y loop() (ejecución repetida). Con instrucciones como pinMode,
digitalWrite y analogRead se gestionan entradas y salidas, y con variables, condicionales y bucles
se define el comportamiento. Los actuadores como servos y motores CC se controlan con librerías
y drivers, evitando conectarlos directamente a la placa.
Actividades de repaso
1. ¿Qué diferencia hay entre las funciones setup() y loop()?
2. Explica qué hace analogRead() y qué rango de valores devuelve.
3. Escribe un condicional que encienda un LED si un sensor de luz marca menos de 300.
4. ¿Por qué se necesita un puente en H para controlar un motor CC?
5. Diseña en pseudocódigo el comportamiento de un robot sigue-líneas con dos sensores IR.
6. Indica qué tipo de variable usarías para guardar una temperatura con decimales.