1. Presentación
En este proyecto aprenderás los fundamentos de Arduino utilizando Wokwi, un simulador electrónico que funciona directamente desde el navegador. Durante la primera parte no necesitarás instalar Arduino IDE ni disponer de una placa física.
Realizarás varios ejercicios guiados y resueltos. Deberás reproducirlos, comprobar su funcionamiento, introducir pequeñas modificaciones y documentar el trabajo realizado.
En la última parte trasladarás uno de los circuitos a un Arduino real.
No basta con copiar el código. Debes montar cada circuito, ejecutarlo, observar qué sucede y explicar con tus palabras cómo funciona.
2. Objetivos
Al terminar el proyecto serás capaz de:
- Crear y guardar proyectos en Wokwi.
- Reconocer las partes principales de una placa Arduino Uno.
- Comprender la función de
setup()yloop(). - Configurar pines digitales como entradas o salidas.
- Encender y apagar LED.
- Utilizar pausas con
delay(). - Enviar información al monitor serie.
- Leer el estado de un pulsador.
- Construir un circuito sencillo en una protoboard.
- Documentar una práctica técnica en formato Markdown.
3. Herramientas necesarias
Parte simulada
- Ordenador con navegador web.
- Cuenta de Wokwi.
- Acceso a https://wokwi.com/.
- Editor de Markdown utilizado en clase.
Parte física final
- Arduino Uno o placa compatible.
- Cable USB.
- Protoboard.
- Un LED rojo, uno amarillo y uno verde.
- Tres resistencias de 220 Ω o 330 Ω.
- Un pulsador.
- Cables de conexión.
- Un equipo preparado por el profesor con Arduino IDE o Arduino Cloud Agent.
4. Normas de trabajo
Para cada ejercicio debes:
- Crear o duplicar un proyecto en Wokwi.
- Montar el circuito indicado.
- Copiar y ejecutar el código proporcionado.
- Abrir el monitor serie cuando se solicite.
- Comprobar el resultado.
- Realizar la modificación propuesta.
- Guardar el enlace del proyecto.
- Añadir a la documentación una captura y una explicación personal.
En la documentación no se aceptarán explicaciones como «funciona bien» o «enciende el LED». Debes indicar qué elementos intervienen, qué instrucciones se ejecutan y cuál es el resultado observado.
Parte I. Ejercicios guiados y resueltos en Wokwi
Ejercicio 1. Hola, Arduino: uso del monitor serie
Objetivo
Aprender a enviar mensajes desde Arduino al ordenador mediante la comunicación serie.

Componentes
- Arduino Uno.
No es necesario añadir componentes externos.
Esquema visual
En este ejercicio no existe cableado externo: la salida se observa en el monitor serie.
flowchart LR
A["Arduino Uno"] -->|"USB / comunicación serie a 9600 baudios"| M["Monitor serie de Wokwi"]
M --> R["Mensajes y resultados"]Preparación en Wokwi
- Entra en https://wokwi.com/.
- Selecciona Start from Scratch.
- Elige Arduino Uno.
- Abre el archivo
sketch.ino. - Sustituye su contenido por el siguiente código.
Código resuelto
void setup() {
Serial.begin(9600);
Serial.println("Arduino iniciado correctamente");
}
void loop() {
Serial.println("El programa sigue funcionando");
delay(1000);
}
Explicación
Serial.begin(9600)inicia la comunicación serie a 9600 bits por segundo.Serial.println()envía un texto y añade un salto de línea.- El mensaje incluido en
setup()aparece una sola vez. - El mensaje incluido en
loop()se repite cada segundo. delay(1000)detiene el programa durante 1000 milisegundos.
Comprobación
Inicia la simulación. La consola o monitor serie debería mostrar:
Arduino iniciado correctamente
El programa sigue funcionando
El programa sigue funcionando
El programa sigue funcionando
Modificación obligatoria
Modifica el programa para que:
- Muestre tu nombre al comenzar.
- Muestre el texto
Han pasado dos segundoscada dos segundos.
Documentación
Incluye una captura del monitor serie y explica por qué el primer mensaje aparece una sola vez y el segundo se repite.
Ejercicio 2. LED integrado intermitente
Objetivo
Controlar una salida digital utilizando el LED integrado de Arduino Uno.

Componentes
- Arduino Uno.
- LED integrado de la placa, conectado internamente al pin 13.
Esquema visual
flowchart LR
A["Arduino Uno"] --> P["Pin digital 13"]
P --> L["LED integrado L"]
A -.->|"USB"| M["Monitor serie"]El LED marcado como L ya está montado en la placa. No debes añadir cables ni componentes.
Código resuelto
const int LED = 13;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
Serial.println("Prueba del LED iniciada");
}
void loop() {
digitalWrite(LED, HIGH);
Serial.println("LED encendido");
delay(1000);
digitalWrite(LED, LOW);
Serial.println("LED apagado");
delay(1000);
}
Explicación
const int LED = 13asigna un nombre al número del pin.pinMode(LED, OUTPUT)configura el pin como salida.digitalWrite(LED, HIGH)activa el pin y enciende el LED.digitalWrite(LED, LOW)desactiva el pin y apaga el LED.- Los mensajes permiten relacionar el estado físico del LED con la ejecución del programa.
Modificación obligatoria
Consigue que el LED:
- Permanezca encendido durante dos segundos.
- Permanezca apagado durante medio segundo.
- Muestre los estados correspondientes en el monitor serie.
Preguntas
- ¿Para qué sirve
pinMode()? - ¿Qué diferencia hay entre
HIGHyLOW? - ¿Cuántas veces se ejecuta
setup()? - ¿Cuántas veces se ejecuta
loop()?
Ejercicio 3. Conexión de un LED externo
Objetivo
Aprender a conectar un LED externo y una resistencia a Arduino.

Componentes
- Arduino Uno.
- Un LED rojo.
- Una resistencia de 220 Ω o 330 Ω.
- Cables.
Conexiones
| Elemento | Conexión |
|---|---|
| Pin 8 de Arduino | Resistencia |
| Resistencia | Pata larga del LED, ánodo |
| Pata corta del LED, cátodo | GND |
La resistencia limita la corriente que atraviesa el LED y ayuda a evitar que se dañe.
Esquema visual
flowchart LR
D8["Arduino D8"] --> R["Resistencia 220–330 Ω"]
R --> A["Ánodo + · pata larga"]
A --> L["LED rojo"]
L --> C["Cátodo − · pata corta"]
C --> G["Arduino GND"]
USB["Conexión USB"] -.-> M["Monitor serie"]Recorrido de la corriente: D8 → resistencia → ánodo del LED → cátodo → GND.
Código resuelto
const int LED_ROJO = 8;
int numeroParpadeo = 0;
void setup() {
pinMode(LED_ROJO, OUTPUT);
Serial.begin(9600);
Serial.println("LED externo preparado");
}
void loop() {
numeroParpadeo++;
digitalWrite(LED_ROJO, HIGH);
Serial.print("Parpadeo numero: ");
Serial.println(numeroParpadeo);
delay(500);
digitalWrite(LED_ROJO, LOW);
delay(500);
}
Explicación
Serial.print() escribe sin realizar un salto de línea. A continuación, Serial.println(numeroParpadeo) muestra el valor y termina la línea. De esta manera, texto y número aparecen juntos.
Resultado esperado
LED externo preparado
Parpadeo numero: 1
Parpadeo numero: 2
Parpadeo numero: 3
Modificación obligatoria
Conecta el LED al pin 7, adapta el programa y haz que parpadee cada 250 milisegundos.
Preguntas
- ¿Por qué se utiliza una resistencia?
- ¿Qué ocurriría si cambias el montaje al pin 7 pero no modificas el código?
- ¿Para qué sirve la variable
numeroParpadeo?
Ejercicio 4. Semáforo sencillo
Objetivo
Controlar varias salidas digitales y crear una secuencia.

Componentes
- Arduino Uno.
- Un LED rojo.
- Un LED amarillo.
- Un LED verde.
- Tres resistencias de 220 Ω o 330 Ω.
Conexiones
| LED | Pin de Arduino | Conexión restante |
|---|---|---|
| Rojo | 10 | Resistencia y GND |
| Amarillo | 9 | Resistencia y GND |
| Verde | 8 | Resistencia y GND |
Cada LED debe disponer de su propia resistencia.
Esquema visual
Los tres puntos GND representan la misma conexión de tierra de Arduino. Puedes unir los tres cátodos a la línea negativa de la protoboard y conectar esa línea a un pin GND de la placa.
flowchart LR
D10["D10"] --> RR["Resistencia"] --> LR["LED rojo"] --> G1["GND"]
D9["D9"] --> RA["Resistencia"] --> LA["LED amarillo"] --> G2["GND"]
D8["D8"] --> RV["Resistencia"] --> LV["LED verde"] --> G3["GND"]Código resuelto
const int LED_ROJO = 10;
const int LED_AMARILLO = 9;
const int LED_VERDE = 8;
void setup() {
pinMode(LED_ROJO, OUTPUT);
pinMode(LED_AMARILLO, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
Serial.begin(9600);
Serial.println("Semaforo iniciado");
}
void loop() {
digitalWrite(LED_ROJO, HIGH);
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_VERDE, LOW);
Serial.println("ROJO: detenerse");
delay(3000);
digitalWrite(LED_ROJO, LOW);
digitalWrite(LED_VERDE, HIGH);
Serial.println("VERDE: avanzar");
delay(3000);
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARILLO, HIGH);
Serial.println("AMARILLO: precaucion");
delay(1000);
}
Comprobación
Observa que solamente debe permanecer encendido un LED en cada momento. Comprueba que el monitor serie muestra el mismo estado que representa el circuito.
Modificación obligatoria
Cambia los tiempos para que:
- El rojo dure cuatro segundos.
- El verde dure cinco segundos.
- El amarillo dure dos segundos.
Añade antes de cada cambio el mensaje Cambiando estado del semaforo.
Preguntas
- ¿Por qué se declaran tres constantes diferentes?
- ¿Qué LED se enciende después del rojo?
- ¿Cuánto dura una secuencia completa tras realizar la modificación?
- ¿Por qué conviene mostrar el estado en el monitor serie?
Ejercicio 5. Pulsador y monitor serie
Objetivo
Leer una entrada digital y mostrar su estado en el monitor serie.

Componentes
- Arduino Uno.
- Un pulsador.
- Un LED.
- Una resistencia para el LED.
Conexiones
| Elemento | Conexión |
|---|---|
| Una patilla del pulsador | Pin 2 |
| Patilla opuesta del pulsador | GND |
| Pin 8 | Resistencia y ánodo del LED |
| Cátodo del LED | GND |
Se utilizará la resistencia interna de Arduino mediante INPUT_PULLUP. Por ello, el pulsador tendrá lógica invertida:
- Sin pulsar:
HIGH. - Pulsado:
LOW.
Esquema visual
flowchart LR
D2["Arduino D2 · INPUT_PULLUP"] --> B["Pulsador"] --> G1["GND"]
D8["Arduino D8 · OUTPUT"] --> R["Resistencia 220–330 Ω"]
R --> A["Ánodo + del LED"] --> L["LED"] --> C["Cátodo −"] --> G2["GND"]El pulsador se conecta entre D2 y GND. No necesita una resistencia externa porque el programa activa la resistencia interna con INPUT_PULLUP.
Código resuelto
const int PULSADOR = 2;
const int LED = 8;
void setup() {
pinMode(PULSADOR, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);
Serial.println("Sistema preparado");
}
void loop() {
int estadoPulsador = digitalRead(PULSADOR);
if (estadoPulsador == LOW) {
digitalWrite(LED, HIGH);
Serial.println("Pulsador presionado - LED encendido");
} else {
digitalWrite(LED, LOW);
Serial.println("Pulsador libre - LED apagado");
}
delay(200);
}
Explicación
INPUT_PULLUPconfigura el pin como entrada y activa una resistencia interna.digitalRead()lee el estado del pin.- La estructura
ifpermite tomar una decisión. - Cuando se pulsa, el estado leído es
LOWy el LED se enciende.
Modificación obligatoria
Modifica únicamente los textos para que el monitor serie muestre:
ALARMA ACTIVADAal pulsar.Sistema en esperaal soltar.
Después cambia el LED del pin 8 al pin 6, tanto en el circuito como en el programa.
Preguntas
- ¿Qué valor devuelve el pulsador cuando está presionado?
- ¿Por qué en este montaje se considera pulsado cuando devuelve
LOW? - ¿Qué estructura del código permite decidir si el LED se enciende?
Parte II. Implementación final en Arduino real
Reto final: semáforo físico con diagnóstico serie
En esta parte trasladarás el ejercicio 4 a un Arduino real. Es el único ejercicio del proyecto que debe implementarse físicamente.

Esquema de referencia para el montaje físico
flowchart LR
D10["D10"] --> R1["220–330 Ω"] --> RO["LED rojo"] --> G["Línea GND de la protoboard"]
D9["D9"] --> R2["220–330 Ω"] --> AM["LED amarillo"] --> G
D8["D8"] --> R3["220–330 Ω"] --> VE["LED verde"] --> G
G --> AG["Arduino GND"]
AU["Arduino Uno"] -.->|"USB"| PC["Arduino IDE y monitor serie"]Antes de conectar el USB, comprueba que la pata larga de cada LED queda orientada hacia su resistencia y la pata corta hacia GND.
Trabajo que debes realizar
- Recupera tu proyecto del semáforo en Wokwi.
- Comprueba que la simulación funciona correctamente.
- Reúne los componentes necesarios.
- Desconecta la placa del USB mientras realizas el montaje.
- Conecta los tres LED, cada uno con su propia resistencia.
- Revisa la polaridad de los LED.
- Solicita al profesor la revisión del circuito antes de alimentarlo.
- Conecta Arduino al ordenador.
- Abre el código con la herramienta indicada por el profesor.
- Selecciona la placa y el puerto correspondientes.
- Carga el programa.
- Abre el monitor serie a 9600 baudios.
- Comprueba que los LED y los mensajes siguen la misma secuencia.
Requisitos mínimos
- Los tres LED deben funcionar.
- Nunca deben encenderse los tres a la vez.
- Cada LED debe utilizar una resistencia.
- El monitor serie debe indicar el estado actual.
- El montaje físico debe corresponder con los pines declarados en el código.
Pequeña adaptación obligatoria
En el Arduino real, cambia la secuencia para que:
- Rojo: 5 segundos.
- Verde: 4 segundos.
- Amarillo: 2 segundos.
El monitor serie deberá mostrar también la duración de cada estado, por ejemplo:
ROJO: detenerse durante 5 segundos
VERDE: avanzar durante 4 segundos
AMARILLO: precaucion durante 2 segundos
Evidencias necesarias
- Fotografía general del montaje real.
- Fotografía donde puedan reconocerse los pines utilizados.
- Captura del monitor serie.
- Código final.
- Explicación de las diferencias encontradas entre Wokwi y el montaje físico.
- Breve descripción de cualquier error y de cómo se solucionó.
Seguridad y buenas prácticas
- No cambies conexiones con la placa alimentada.
- No conectes un LED directamente sin resistencia.
- Comprueba la polaridad antes de encender.
- No fuerces los conectores.
- Si el circuito se calienta o se comporta de forma extraña, desconecta el USB y avisa al profesor.
Parte III. Documentación y entrega
Formato de entrega
La documentación se entregará en un archivo llamado:
README.md
Se redactará en Markdown con el editor utilizado en clase. Además del archivo, se entregará una carpeta img que contenga las capturas y fotografías.
La estructura recomendada es:
proyecto-arduino/
├── README.md
└── img/
├── ejercicio1-monitor-serie.png
├── ejercicio2-led-integrado.png
├── ejercicio3-led-externo.png
├── ejercicio4-semaforo.png
├── ejercicio5-pulsador.png
└── semaforo-real.jpg
Estructura obligatoria del README
# Proyecto de iniciación a Arduino
## Datos del alumno
- Nombre:
- Grupo:
- Fecha:
## Introducción
Explicación breve del objetivo del proyecto.
## Ejercicio 1. Monitor serie
### Montaje y funcionamiento
Explicación personal.
### Código
```cpp
// Código utilizado
```
### Resultado

### Modificación realizada
Explicación y resultado.
### Respuestas
Respuestas a las preguntas del ejercicio.
## Ejercicio 2. LED integrado
Repetir la misma organización.
## Ejercicio 3. LED externo
Repetir la misma organización.
## Ejercicio 4. Semáforo
Repetir la misma organización.
## Ejercicio 5. Pulsador
Repetir la misma organización.
## Implementación en Arduino real
Descripción, código, fotografías y problemas encontrados.
## Conclusiones
Qué has aprendido y qué parte te ha resultado más difícil.
## Enlaces a los proyectos de Wokwi
- Ejercicio 1:
- Ejercicio 2:
- Ejercicio 3:
- Ejercicio 4:
- Ejercicio 5:
Para evitar problemas al incluir bloques de código dentro del README, utiliza tres acentos graves antes y después del código y escribe
cppjunto a los tres primeros.
Requisitos de la documentación
El README.md debe contener:
- Portada o título.
- Datos del alumno.
- Índice.
- Explicación de cada ejercicio con palabras propias.
- Código correctamente presentado en bloques
cpp. - Una captura de cada simulación.
- Capturas del monitor serie.
- Enlaces a los proyectos de Wokwi.
- Respuestas a todas las preguntas.
- Evidencias del montaje real.
- Problemas encontrados y soluciones aplicadas.
- Conclusión personal.
Penalizaciones
- No entregar enlaces funcionales de Wokwi.
- No incluir las capturas solicitadas.
- Presentar código sin explicar su funcionamiento.
- Copiar explicaciones de otras personas o generadas automáticamente sin revisarlas.
- Conectar físicamente LED sin resistencia.
- Entregar un documento distinto de
README.mdsin autorización.
6. Lista de comprobación antes de entregar
- He completado los cinco ejercicios de Wokwi.
- He realizado todas las modificaciones obligatorias.
- He probado el monitor serie.
- He respondido las preguntas con mis palabras.
- Los enlaces de Wokwi se pueden abrir.
- He construido y probado el semáforo real.
- He incluido el código en bloques Markdown.
- Las imágenes se encuentran dentro de la carpeta
img. - Todas las imágenes aparecen correctamente en el
README.md. - He escrito una conclusión personal.
- El archivo principal se llama exactamente
README.md.
7. Ampliación voluntaria
Si terminas antes, modifica el semáforo de Wokwi para que el LED amarillo parpadee tres veces antes de encenderse el rojo. El monitor serie deberá informar de cada parpadeo.
Documenta la ampliación indicando qué instrucciones has añadido y por qué.




