Blog
Blink con Arduino en tu navegador: LED sin placa
El primer proyecto de Arduino de todo el mundo es el sketch de blink. Es el “¡Hola, mundo!” de los microcontroladores, y hay una razón por la que lleva décadas sobreviviendo: demuestra que tu placa funciona, que tu código se ejecuta y que tu cableado hace lo que crees que hace, todo con un solo LED.
Y aquí va la parte que casi ningún tutorial te dice de entrada: no necesitas comprar nada para aprenderlo. Puedes montar y ejecutar todo en un simulador de navegador, ver cómo el LED parpadea, y pedir una placa solo cuando ya entiendas qué está pasando. Eso es lo que haremos aquí. También te contaré dónde la simulación deja de parecerse a la realidad, porque lo hace.
El circuito es la placa
La mayoría de los tutoriales de “monta un circuito” empiezan con una lista de componentes. Este no, porque el Arduino Uno ya lleva todo el circuito en su PCB: un LED pequeño (marcado con una L) está conectado de fábrica al pin digital 13, con una resistencia limitadora en serie montada en la propia placa. Nada que enchufar, nada que soldar, nada que quemar.

Si más adelante pasas a una placa real y quieres un LED externo en vez del integrado, la receta es: ánodo (la pata larga) → pin 13 a través de una resistencia de 220Ω, cátodo (la pata corta) → GND. Cualquier valor entre 220Ω y 1kΩ funciona; cuanto más bajo, más brillante y más enfadado se pone. Pero por ahora, sin complicaciones.
Poner la placa en el lienzo
Abre el simulador y haz clic en Add (o en el botón Components, según la vista). Se abre un selector de componentes con una caja de búsqueda y una cuadrícula de placas. Escribe “Arduino Uno”, arrástralo al lienzo y listo.

La placa aterriza en el lienzo con las etiquetas de sus pines a la vista. Busca la marca L junto al pin 13: ese es tu LED. No parecerá gran cosa hasta que la simulación esté en marcha.
Las cuatro líneas que importan
Pásate al editor de código. Este es el sketch completo:
// Blink: toggle the onboard LED once a second
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Los sketches de Arduino siempre tienen dos funciones. setup() se ejecuta una vez al encender; loop() corre después para siempre, de arriba abajo, una y otra vez. Dentro de ellas, cuatro líneas hacen todo el trabajo:
pinMode(13, OUTPUT)— le dice al chip que el pin 13 es para sacar voltaje, no para leer señales. Te lo saltas y el pin se queda como entrada; el LED brillará débilmente o no brillará nada, y a todo el mundo le pasa eso la primera vez.digitalWrite(13, HIGH)— sube el pin a 5V. LED encendido.delay(1000)— se queda ahí parado 1000 milisegundos sin hacer nada. Sin él, el LED parpadearía millones de veces por segundo y a tus ojos parecería estar siempre encendido.digitalWrite(13, LOW)— baja el pin a 0V. LED apagado, y el segundodelay(1000)lo mantiene así hasta que el loop se repite.
En serio: eso es el programa entero. ¿Te parece decepcionante? Pues bien, para eso está blink.
Dale a Run
Pulsa el botón Run de la barra del editor. El simulador compila tu sketch y empieza a ejecutarlo en un chip AVR virtual, la misma familia que lleva un Uno real.

Mira el LED L en el lienzo: un segundo encendido, un segundo apagado. La barra del lienzo también te da pausa, stop y reset, además de un monitor serie y un osciloscopio que todavía no necesitas, pero pronto sí.

Lo que el simulador no te contará
Una simulación es un profesor amable, pero se salta algunas lecciones que el hardware real enseña de inmediato:
- Los LEDs no mueren en el simulador. Conecta un LED real directo a un pin sin resistencia y funcionará, brevemente. Luego se quema, o va dañando el GPIO poco a poco. El simulador ejecuta ese circuito feliz para siempre, así que coge el hábito de la resistencia desde ya.
- Los Uno reales parpadean al arrancar. El bootloader enciende el LED L unas cuantas veces cuando la placa se alimenta. Los principiantes confunden esto con que su código falla. Es normal.
- Las clonas varían. En las clonas baratas de Uno, el LED L puede ser de otro color, más tenue o estar en un punto ligeramente distinto. El simulador te muestra una placa idealizada; el cajón de tu escritorio, no.
delay()lo bloquea todo. En este sketch no pasa nada. En un proyecto real con botones o sensores, esos 1000ms congelados se convierten en un bug. Acuérdate de esa sensación de “¿por qué no responde mientras espera?”; volverá a visitarte.
Errores que hacen perder tiempo
He visto fallar muchísimos primeros sketches. Casi siempre es uno de estos:
- Sin
pinMode()ensetup(). El clásico. Todo compila, no se enciende nada. - LED externo enchufado al revés. Pata larga al pin, pata corta a tierra. Al revés se queda apagado: ni daños, ni luz, ni diversión.
- Editar el código y no volver a pulsar Run. La simulación no se reinicia sola.
- Escribir el pin como letra o coger el pin 12 por costumbre. El LED integrado solo escucha al pin 13.
Hacia dónde seguir
En cuanto el parpadeo de un segundo te aburra — cosa que tarda unos dos minutos — empieza a cambiar cosas. Baja los delays a 250ms y míralo parpadear como un estroboscopio. Mueve un LED externo al pin 12 con su propia resistencia y adapta el sketch. Prueba analogWrite() en un pin marcado con ~ (esos son los que soportan PWM) y funde el LED en lugar de alternarlo. O añade un pulsador y haz que el LED te haga caso al dedo.
Abre el simulador gratis y carga el ejemplo de Blink: el circuito y el código de este artículo ya están montados. Sin cuenta, sin instalar nada. Cuando el LED te devuelva el parpadeo, ya eres oficialmente programador embebido. Bueno, más o menos.