Programación por bloques en el aula: plan de 8 semanas con Arduino
Programación por bloques en el aula con Arduino: 8 semanas de clases de 40 minutos, proyectos gratuitos, materiales para 24, sesión de ejemplo y rúbrica.
La robótica educativa con programación consiste en escribir programas que permiten a una placa percibir su entorno, tomar una decisión y poner algo en marcha: un pulsador o un sensor de luz percibe, el Arduino decide, y un LED, un zumbador o un motor responde. La forma más cómoda de enseñar ese ciclo en clase es empezar con la programación por bloques y pasar al código real del mismo programa cuando el alumnado domina la lógica. Aquí tienes un plan listo para usar de programación por bloques en el aula con Arduino, pensado para docentes, clubes de robótica y familias que organizan un taller en casa: 8 semanas, una clase de 40 minutos por semana y un proyecto gratuito con bloques de BlueGrays en cada una.
Cada semana del plan tiene un objetivo, un proyecto gratuito de BlueGrays, el bloque nuevo que se conoce esa semana y su equivalente en el código real. Después encontrarás una lista de materiales para una clase de 24, una sesión de ejemplo minuto a minuto, una rúbrica de evaluación, ideas de atención a la diversidad para grupos rápidos y lentos, una alternativa sin hardware con simuladores y consejos de seguridad. El plan se basa en Arduino Uno, con una semana opcional de Raspberry Pi Pico y MicroPython.
¿Qué es la programación de robótica y por qué empezar con bloques?
Cuando se habla de robótica educativa, todo el mundo piensa enseguida en un coche robot, pero cualquier robot se basa en las mismas tres tareas: percibir, decidir y actuar. Leer un pulsador es percibir, preguntar "¿está pulsado?" es decidir, y encender un LED o hacer sonar un zumbador es actuar. Cuando un alumno entiende estos tres pasos con un LED y un pulsador, llevar la misma lógica a motores y a un sensor de distancia es, sobre todo, cambiar de componentes. Por eso este plan empieza con LEDs y pulsadores en lugar de motores, y llega a los "ojos" del robot con el sensor de distancia HC-SR04 en la última semana.
¿Por qué empezar con bloques? Entre los 10 y los 14 años, el gran enemigo de las primeras clases son los puntos y coma, las llaves y las mayúsculas; el alumnado acaba pensando en por qué no compila en lugar de en qué hace el programa. Con bloques esos errores no existen y la atención va directa a la lógica. Pero quedarse en los bloques tampoco es el objetivo: en el mundo real Arduino se programa en C++ y la Pico en MicroPython. Los bloques de BlueGrays están pensados justo para ese puente; cada bloque corresponde uno a uno a una línea del código real que se carga en la placa. Primero se leen los bloques, después se mira el código del mismo programa y se empareja cada bloque con su línea. Puedes ver todos los proyectos con bloques y cómo funciona en la página de programación por bloques.
Plan de 8 semanas de programación por bloques en el aula
Cada sesión está pensada para 40 minutos y grupos de 2 o 3. Todos los proyectos de la tabla son totalmente gratuitos en BlueGrays, con bloques y código, así que el alumnado no necesita Premium. El orden es intencionado: primero salida (LED), luego tiempos, variables y repetición, después entrada (pulsador) y condiciones, guardar un estado, un sensor analógico, arrays y bucles, y por último sonido y distancia. Cada semana añade una sola idea nueva sobre la anterior.
| Semana | Objetivo | Proyecto gratuito de BlueGrays | Bloque / concepto nuevo | En el código real |
|---|---|---|---|---|
| 1 | Qué es un programa, salida digital | Parpadeo de LED | configuración (una vez), repetir siempre, configurar pin … como SALIDA, bloque de escribir HIGH / LOW, esperar … ms | setup(), loop(), pinMode(), digitalWrite(), delay() |
| 2 | Orden de las instrucciones y tiempos | Dos LED parpadeando alternadamente, Semáforo | Ordenar los mismos bloques con otros pines, cambiar los tiempos de espera | Orden de las líneas; 2000 ms = 2 s |
| 3 | Variables y repetición contada | Luces de policía LED | variables globales (al principio), declarar entero (int) delayTime = 60, bloque de repetir 3 veces | int delayTime = 60; for (int i = 0; i < 3; i++) |
| 4 | Entrada y condiciones | Encender un LED con pulsador (Push) | configurar pin … como ENTRADA, leer pin …, si … hacer / si no, comparación = | pinMode(13, INPUT), digitalRead(), if / else, == |
| 5 | Recordar un estado (encender/apagar) | Encender y apagar un LED con un botón | establecer … a …, comparación ≠, no, esperar 50 ms | ledState = !ledState; !=; antirrebote (debounce) |
| 6 | Sensor analógico y umbral | Medir la intensidad de luz con LDR, Luz nocturna con LDR | Bloque de lectura analógica (A0), bloques de iniciar e imprimir por serie, comparación < | analogRead(A0) 0–1023, Serial.begin(9600), Serial.println(), if (value < 50) |
| 7 | Arrays y bucles | Luz secuencial LED, Luz secuencial LED con velocidad regulable | Bloque de array (2 3 4 5 6 7), bucle contador con i de 0 a 5, elemento i de ledPins | int ledPins[] = {2, 3, 4, 5, 6, 7}; for (int i = 0; i < 6; i++) |
| 8 | Sonido y distancia: los sentidos del robot | Uso del zumbador, HC-SR04 Medición de distancia (pantalla en serie) | Bloques de tono y parar tono, espera en microsegundos, bloque de duración de pulso, y | tone(), noTone(), delayMicroseconds(10), pulseIn(), && |
| Opcional | Pico y MicroPython | LED externo en la Pico (GP14) | Bloque de pin GP14 como salida, encender / apagar LED, esperar 0,5 segundos | Pin(14, Pin.OUT), led.on(), time.sleep(0.5), while True: |

Al aplicar el plan, convierte en norma que al final de cada sesión el alumnado cambie un solo valor. En la semana 1, ver que el LED va más lento cuando la espera de 100 ms de Parpadeo de LED pasa a 1000 ms da desde el primer día la sensación de "yo controlo el programa". En la semana 3, subir la variable delayTime de Luces de policía LED de 60 a 200 les muestra que un solo número afecta a seis bloques a la vez; es la forma más corta de explicar para qué sirven las variables. En la semana 6, ajustar el umbral de 50 de Luz nocturna con LDR a la luz del aula enseña que los valores de un sensor dependen del entorno. En la semana 7, da a cada grupo un potenciómetro de 10 kΩ para Luz secuencial LED con velocidad regulable; cambiar a mano la velocidad de los LEDs suele ser el momento favorito de la semana.
Lista de materiales para una clase de 24
Si divides a 24 alumnos en grupos de 3 tienes 8 grupos; basta con preparar 9 kits, uno de ellos de reserva. Si prefieres parejas, calcula las cantidades para 12 grupos. No hace falta soldar nada: todas las piezas se conectan en la protoboard. En lugar de comprar pieza a pieza, compara esta lista con el contenido de un kit de inicio; en la guía del kit de inicio de Arduino explicamos qué trae cada tipo de kit.
| Material | Por grupo | Para la clase (8 grupos + 1 de reserva) | Semana |
|---|---|---|---|
| Arduino Uno o placa compatible | 1 | 9 | Todas |
| Cable USB (USB A-B para el Uno) | 1 | 9 | Todas |
| Protoboard (400 u 830 puntos) | 1 | 9 | Todas |
| Cables jumper macho-macho | 20 | unos 200 | Todas |
| LEDs de 5 mm (rojo, amarillo, verde y azul variados) | 8 | unos 80 | 1–7 |
| Resistencias de 220 Ω | 8 | unas 80 | 1–7 |
| Resistencias de 10 kΩ | 2 | unas 25 | 4–6 |
| Pulsadores (4 patas) | 2 | unos 20 | 4–5 |
| LDR (fotorresistencia) | 1 | 10 | 6 |
| Zumbador (pasivo, para poder cambiar el tono) | 1 | 10 | 8 |
| Sensor ultrasónico de distancia HC-SR04 | 1 | 10 | 8 |
| Potenciómetro de 10 kΩ (opcional) | 1 | 10 | 7 |
| Raspberry Pi Pico + cable micro USB (opcional) | 1 | algunas | Semana Pico |
Sesión de ejemplo: semana 5, encender y apagar un LED con un pulsador
El desarrollo siguiente es para una sesión de 40 minutos, y puedes repetir el mismo esquema cada semana: calentamiento, leer los bloques juntos, predicción, circuito, código real, cambiar un valor y pregunta de salida. Como ejemplo usamos el proyecto de la semana 5, Encender y apagar un LED con un botón, porque la idea de que "un programa puede recordar algo" es uno de los puntos de inflexión de la robótica.
| Tiempo | Fase | Qué se hace |
|---|---|---|
| 0–5 min | Calentamiento | Pregunta: pulsas el interruptor una vez y la luz se enciende, otra vez y se apaga. ¿Cómo lo recuerda el interruptor? Anota algunas respuestas en la pizarra. |
| 5–12 min | Leer los bloques juntos | Abre el proyecto en el proyector con Ver en bloques activado. Se leen los bloques en voz alta de arriba abajo y se comenta qué guardan las variables ledState y lastButton. |
| 12–15 min | Predicción | Cada grupo escribe: ¿qué hace el LED si mantengo pulsado el botón? ¿Qué cambiaría sin el bloque esperar 50 ms? |
| 15–25 min | Montar el circuito | Pulsador a D13 y con 10 kΩ a GND (pull-down), LED con 220 Ω a D7. Roles: montador, revisor, lector. |
| 25–32 min | Cargar el código real | Se desactiva el interruptor, se copia el código en el IDE de Arduino y se carga en la placa. Se prueban las predicciones. |
| 32–37 min | Cambiar un valor | delay(50) pasa primero a 0 y luego a 300; se observa cómo responde el LED a pulsaciones rápidas. Quien quiera cambia el pin del LED en el código y en el circuito. |
| 37–40 min | Pregunta de salida | Una sola pregunta, en papel: ¿qué hace la línea ledState = !ledState y qué bloque le corresponde? |

1int ledState = 0; // LED durumu: 0 = kapalı, 1 = açık / LED state: 0 = off, 1 = on
2int lastButton = 0; // Önceki buton okuması / Previous button reading
3
4void setup() {
5 pinMode(13, INPUT); // Buton girişi (harici pull-down) / Button input (external pull-down)
6 pinMode(7, OUTPUT); // LED çıkışı / LED output
7}
8
9void loop() {
10 int button = digitalRead(13); // Butonu oku / Read the button
11 if (button != lastButton) { // Buton durumu değişti / Button state changed
12 if (button == 1) { // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13 ledState = !ledState; // Durumu tersine çevir / Flip the state
14 digitalWrite(7, ledState);
15 }
16 delay(50); // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17 lastButton = button; // Bu okumayı sakla / Store this reading
18 }
19}
20Si pones bloques y código uno al lado del otro, la correspondencia es muy clara: los dos bloques "declarar entero (int)" dentro de "variables globales (al principio)" son las dos primeras líneas del código, "configuración (una vez)" es setup() y "repetir siempre" es loop(). El bloque "establecer button a leer pin 13" es la línea int button = digitalRead(13), la comparación "≠" es != y "no ledState" es !ledState. En la fase de predicción casi todos los grupos dicen "si mantengo el botón pulsado, el LED parpadeará"; al probarlo ven que el LED cambia solo una vez, porque el "si" exterior solo se ejecuta cuando cambia el estado del pulsador. Ese momento en que se corrige una predicción equivocada es el minuto más valioso de la sesión. Cuando delay(50) pasa a 0, notan que algunas pulsaciones cambian el LED dos veces y parece que no ha pasado nada; es la entrada perfecta para explicar el rebote del pulsador. A los grupos que pregunten por qué el pulsador va a GND con 10 kΩ, enséñales la guía de cómo conectar un pulsador.
Cómo usar BlueGrays en clase
- Abrir el proyecto: El alumnado abre el proyecto de la semana en su móvil o en una tableta. La insignia de bloques de la lista marca los proyectos con bloques, y el filtro permite ver solo esos. Cada proyecto incluye lista de componentes y esquema del circuito.
- Ver en bloques: Al activar este interruptor en la sección de código, el código se sustituye por los bloques del mismo programa. Si tocas la imagen se abre a pantalla completa, ideal para leerla juntos en el proyector. Los bloques aparecen en el idioma de la app.
- Entiende los bloques: Esta pestaña explica el programa paso a paso; en cada paso solo se ven los bloques de ese paso y lo que hacen. Para los grupos que van más despacio es como un ayudante del docente.
- Pasar al código real: Al desactivar el interruptor aparece el código del mismo programa. Se copia en el IDE de Arduino (en Thonny para la Pico) y se carga en la placa.
- Guía de código: Aquí están los ejemplos de instrucciones como digitalWrite, if/else y for, y cada ejemplo también en bloques. El alumnado se acostumbra a mirar aquí antes de preguntarte cuando olvida una instrucción.
- Preguntas del día: Cinco preguntas al día por niveles de A1 a C2, con clasificación semanal e insignias. Puedes recomendarlas para repasar unos minutos al día entre sesiones.
¿Sin hardware? Clase con un simulador
Si los kits aún no han llegado o das clase a distancia, los simuladores en el navegador como Tinkercad Circuits y Wokwi son una buena alternativa. Los dos tienen Arduino Uno, protoboard, LEDs, resistencias y pulsadores, además de muchos sensores; montas el circuito en pantalla y lo ejecutas pegando el código real del proyecto. El desarrollo es el mismo: se leen los bloques en BlueGrays, se pega el código en el simulador, se cambia un valor y se observa el resultado. Tinkercad tiene además su propio editor de bloques, por eso algunos docentes pasan allí las primeras semanas. Aun así, ver un LED de verdad encenderse y conectar cables en la protoboard motiva muchísimo, así que funciona mejor usar el simulador antes del hardware que en su lugar. Para la instalación y el primer circuito, consulta las guías de simulación de Arduino en Tinkercad y de simulación con Wokwi.
Evaluación: una rúbrica para las clases de robótica
En las clases de robótica el proceso importa tanto como el resultado: el grupo que enciende el LED y el que descubre por qué no se enciende pueden haber aprendido lo mismo. Es más fácil usar la rúbrica de abajo si te centras en un criterio por sesión; al final de las 8 semanas basta con haber observado a cada alumno al menos una vez en los seis criterios. Las preguntas de salida también alimentan la tabla.
| Criterio | 1 – Inicial | 2 – En desarrollo | 3 – Logrado |
|---|---|---|---|
| Montaje del circuito | Monta con ayuda, errores de conexión frecuentes | Monta mirando el esquema, encuentra solo uno o dos errores | Apenas usa el esquema, señala errores de otros |
| Lectura de bloques | Lee los nombres de los bloques, no explica el orden | Explica en general qué hace el programa | Explica cada bloque y por qué importa el orden |
| Predicción y prueba | No predice o no prueba | Predice y anota el resultado | Encuentra la causa cuando falla la predicción |
| Emparejar bloques y código | No relaciona un bloque con su línea | Encuentra en el código los bloques de pin, escribir y esperar | Relaciona también if, for y variables |
| Cambio de valores | Cambia un valor, no explica el efecto | Lo cambia y explica el efecto | Planifica el cambio, localiza errores con el mensaje del compilador |
| Trabajo en equipo | Abandona a menudo su rol | Cumple su rol | Rota roles, ayuda a otros grupos |
Atención a la diversidad: grupos rápidos y lentos
- Grupos rápidos, tarea extra: añadir una cuarta fase al código de Semáforo (por ejemplo rojo y amarillo a la vez) o recalcular sus tiempos para un cruce real. Cambian el código ellos mismos en el IDE de Arduino y usan los bloques como referencia.
- Grupos rápidos, combinar: en la semana 8, unir HC-SR04 Medición de distancia (pantalla en serie) y Uso del zumbador en un solo programa que haga sonar el zumbador cuando la distancia baje de 20 cm, un sensor de aparcamiento sencillo. Es el primer paso real de leer bloques a escribir su propio código.
- Grupos rápidos, cambiar de plataforma: los grupos con una Pico abren el proyecto LED externo con la Pico y comparan la versión en MicroPython con el código C++ de la semana 1.
- Grupos lentos, circuito montado: entrega el circuito ya montado o pon el esquema impreso en grande sobre la mesa. Estos grupos dedican el tiempo a leer los bloques y a predecir.
- Grupos lentos, paso a paso: que recorran el programa con la pestaña Entiende los bloques y digan en una frase qué pasa al final de cada paso. Cambiar un solo valor es un objetivo más que suficiente para ese día.
- Parejas mixtas: que cada grupo tenga al menos un "lector"; juntar a quien monta rápido pero lee despacio con quien hace lo contrario hace avanzar a los dos.
Pasar de bloques a texto: cuándo y cómo
No hay una semana fija para el cambio; el momento adecuado es cuando un alumno mira los bloques y puede decir qué hará el programa antes de ejecutarlo. En este plan la mayoría de las clases llega ahí en la semana 4 o 5. Aun así, el contacto con el código empieza el primer día: como en cada sesión se carga el código real en la placa, el alumnado ve las líneas setup(), loop() y digitalWrite() desde la semana 1. El cambio se desplaza poco a poco de "miro los bloques y cargo el código" a "leo el código y miro los bloques si hace falta". Este orden facilita la transición:
- Poner bloques y código uno al lado del otro y buscar juntos la línea de cada bloque (semanas 1–3).
- Ocultar los bloques, leer solo el código y predecir qué hará el programa; después comprobarlo con Ver en bloques (semanas 4–5).
- Cambiar valores solo en el código: tiempo de espera, número de pin, umbral. Si aparece un error de compilación, leer la primera línea (semanas 5–6).
- Escribir una línea nueva: por ejemplo añadir otro LED al array de Luz secuencial LED y subir el límite del bucle de 6 a 7 (semana 7).
- Unir dos proyectos en un pequeño programa propio; si se atascan, mirar los ejemplos y bloques de la Guía de código (semana 8 en adelante).
Consejos de seguridad
Resumen de la serie De los bloques al código
- Parte 1: Qué es la programación por bloques y cómo un programa de bloques se convierte en código real.
- Parte 2: Encender un LED con programación por bloques: el primer programa, bloques y C++ lado a lado.
- Parte 3: El bloque si y un pulsador: las condiciones y su equivalente if/else.
- Parte 4: Bucles y variables: repetir siempre y loop(), contar y for, arrays, contadores.
- Parte 5: Leer sensores con bloques y MicroPython: puerto serie, LDR, HC-SR04 y la Pico.
- Parte 6: Este artículo, que convierte todo lo aprendido en un plan de 8 semanas para el aula.
Con esto cerramos la serie; si quieres repasar la lógica una vez más antes de empezar en clase, vuelve al principio con qué es la programación por bloques. Todos los proyectos del plan están en la app BlueGrays con su esquema, lista de componentes y código; con Ver en bloques pasas a la versión en bloques del mismo programa y con Entiende los bloques a la explicación paso a paso, para dar la clase cómodamente desde el proyector.
Preguntas frecuentes
¿Qué es la programación de robótica?
Es escribir programas que permiten a una placa percibir su entorno con sensores, tomar decisiones y responder con componentes como LEDs, zumbadores o motores. En los centros educativos se suele empezar con placas como Arduino y programación por bloques, y después se pasa a lenguajes de texto como C++ o MicroPython.
¿A qué edad se puede empezar con la robótica educativa?
Los niños de 9 o 10 años en adelante que leen con soltura pueden empezar acompañados de un adulto. A esa edad, la programación por bloques y los circuitos en protoboard sin soldadura son el mejor punto de partida. Hacia los 12 años, la mayoría está preparada para leer código real.
¿Cómo se prepara una programación didáctica de bloques?
Dedica cada sesión a una sola idea nueva y ordénalas como salida, tiempos, variables, entrada, condiciones, sensores y bucles. Mantén el mismo esquema en cada clase: calentamiento, leer los bloques juntos, predicción, circuito, código real, cambiar un valor y pregunta de salida. El plan de 8 semanas de este artículo sigue esa estructura.
¿Qué materiales necesito para una clase de Arduino?
Por grupo bastan un Arduino Uno o placa compatible, cable USB, protoboard, cables jumper, LEDs, resistencias de 220 Ω y 10 kΩ, un pulsador, una LDR, un zumbador y un sensor HC-SR04. Para una clase de 24 en grupos de 3, prepara 8 kits y uno de reserva.
¿Se puede enseñar robótica sin Arduino?
Sí, con simuladores en el navegador como Tinkercad Circuits y Wokwi montas el circuito en pantalla y ejecutas el código. Aun así, encender un LED de verdad motiva muchísimo, por lo que el simulador funciona mejor como preparación para el hardware.
¿Cuándo pasar de la programación por bloques al código de Arduino?
Cuando un alumno mira los bloques y sabe decir qué hará el programa, ha llegado el momento; en este plan la mayoría de las clases llega en la semana 4 o 5. Primero se leen bloques y código lado a lado, luego se cambian valores solo en el código y, por último, se escriben líneas nuevas.
Proyectos para hacer después de leer esto
Ver todos los proyectos
Parpadeo de LED
El primer hola de la electrónica: encender y apagar un solo LED. El Arduino enciende y apaga el LED a intervalos cortos, así que la luz parpadea rápido. Ves de la forma más sencilla cómo la placa cont

Semáforo
Una copia en miniatura del semáforo que ves cada día en la calle. El rojo se queda dos segundos, el amarillo brilla un instante, el verde se queda dos segundos y luego vuelve al rojo pasando otra vez

Luces de policía LED
Como las luces de un coche de policía: el LED rojo destella tres veces muy rápido, después el azul destella otras tres, y la secuencia se repite sin parar. Solo necesitas dos LED y dos resistencias co

Encender un LED con pulsador (Push)
Como un timbre: la luz se enciende mientras pulsas y se apaga cuando sueltas. El Arduino escucha el botón todo el rato; mientras está pulsado enciende el LED, y en cuanto levantas el dedo lo apaga. Co

Encender y apagar un LED con un botón
Pulsas el botón una vez y la luz se enciende, lo pulsas otra vez y se apaga, igual que el interruptor de tu habitación. El Arduino nota cada pulsación y cambia el LED al estado contrario, esperando un

Luz nocturna con LDR
Una pequeña lamparita que se enciende sola cuando oscurece y se apaga cuando llega la mañana. Un sensor de luz mide la claridad de la habitación, y el Arduino enciende el LED cuando está lo bastante o

Luz secuencial LED
Luces que se encienden una tras otra, como si corrieran. El Arduino enciende seis LED de uno en uno; cada uno brilla un instante y se apaga, así que la luz recorre la fila de principio a fin y vuelve

HC-SR04 Medición de distancia (pantalla en serie)
El sensor HC-SR04 funciona igual que un murciélago que se orienta en la oscuridad: emite un sonido que no puedes oír, escucha el eco y mide a qué distancia está el objeto que tiene delante. El Arduino
Más artículos
App BlueGrays
Monta este circuito paso a paso en tu teléfono
Esquema, código y lista de piezas en una sola pantalla. Más de 200 proyectos de Arduino, ESP32 y Pico listos para montar.
Escanea con tu teléfono
Apunta la cámara al código y se abrirá la tienda de apps de tu teléfono.
o ábrela en la tienda

