🚀

Arduino UNO — Parte 2

Programación, conexiones, comandos esenciales, proyectos y más. ¡Manos a la obra!

¿Cómo Funciona?

Arduino sigue un ciclo programa → ejecución → repite. Todo el código que escribes se organiza en dos bloques principales:

🏗️

setup()

Se ejecuta una sola vez al iniciar. Sirve para configurar pines, iniciar comunicación serial, etc.

🔄

loop()

Se ejecuta una y otra vez en ciclo infinito. Aquí va la lógica principal del programa.

✏️ Tu primer programa: Blink

El "Hola Mundo" de Arduino. Enciende y apaga el LED integrado (pin 13) cada segundo.

// ============================================ // Blink: Enciende y apaga el LED integrado // del pin 13 cada 1 segundo. // ============================================ // setup() se ejecuta UNA SOLA VEZ al iniciar void setup() { pinMode(13, OUTPUT); // Configurar pin 13 como SALIDA } // loop() se repite infinitamente void loop() { digitalWrite(13, HIGH); // Encender LED (5V en pin 13) delay(1000); // Esperar 1000ms = 1 segundo digitalWrite(13, LOW); // Apagar LED (0V en pin 13) delay(1000); // Esperar 1 segundo }
El Blink es el inicio de TODO

Una vez que logras que el LED parpadee, has dominado lo esencial: configurar un pin, escribir HIGH/LOW y controlar tiempos. A partir de aquí, solo crece la complejidad.

Comandos Esenciales

Estos son los comandos más usados en Arduino. Con solo estos ya puedes hacer muchísimos proyectos.

ComandoQué haceEjemplo
pinMode(pin, modo)Configura un pin como entrada/salidapinMode(9, OUTPUT);
digitalWrite(pin, valor)Escribe HIGH (5V) o LOW (0V)digitalWrite(9, HIGH);
digitalRead(pin)Lee valor digital (HIGH/LOW)int e = digitalRead(7);
analogWrite(pin, v)Escribe valor PWM (0-255) en pin ~analogWrite(9, 128);
analogRead(pin)Lee valor analógico (0-1023) de A0-A5int v = analogRead(A0);
delay(ms)Espera x milisegundosdelay(500); → 0.5s
Serial.begin(vel)Inicia comunicación serialSerial.begin(9600);
Serial.println(d)Envía datos al monitor serialSerial.println("Hola!");
¡Cuidado con delay()!

delay() detiene TODO el programa durante los ms que le indiques. Para proyectos avanzados usa millis() como alternativa.

Conexión Eléctrica

La clave está en el circuito completo: energía desde Arduino y retorno a GND. Siempre conecta el GND de la placa con el GND de tu circuito.

💡 LED con Arduino

Conecta un LED al pin 9 con su resistencia de 220Ω. El código lo enciende y apaga cada segundo:

// ============================================ // LED externo: Enciende/apaga un LED en el // pin 9 (con resistencia de 220Ω) // ============================================ // Configurar pin 9 como SALIDA (se ejecuta 1 vez) void setup() { pinMode(9, OUTPUT); } // Bucle principal: parpadeo cada 0.5 segundos void loop() { digitalWrite(9, HIGH); // Encender LED delay(500); // Esperar 500ms digitalWrite(9, LOW); // Apagar LED delay(500); // Esperar 500ms }

Conexión: Pin 9 (Arduino) → Resistencia 220Ω → Ánodo LED (+). Cátodo LED (−) → GND.

🔘 Botón con Arduino

Lee el estado de un pulsador y enciende el LED integrado cuando lo presionas:

// ============================================ // Botón: Lee un pulsador y enciende el LED // integrado (pin 13) al presionarlo. // Usa INPUT_PULLUP = resistencia interna // ============================================ void setup() { pinMode(2, INPUT_PULLUP); // Pin 2 = entrada con resistencia pull-up pinMode(13, OUTPUT); // Pin 13 = salida (LED integrado) } void loop() { int btn = digitalRead(2); // Leer estado del botón (HIGH=no presionado) if (btn == LOW) { // ¿Botón presionado? (LOW por INPUT_PULLUP) digitalWrite(13, HIGH); // Encender LED } else { // Si NO está presionado... digitalWrite(13, LOW); // Apagar LED } }

Conexión: Pin 2 (Arduino) → una pata del botón. Otra pata del botón → GND. El INPUT_PULLUP activa la resistencia interna, no necesitas resistencia externa.

INPUT_PULLUP

Usar INPUT_PULLUP activa una resistencia interna de ~20,000Ω que mantiene el pin en HIGH. Cuando presionas el botón, conectas a GND y el pin lee LOW. ¡Ahorras componentes!

PWM: Brillo Variable

Con PWM (Pulse Width Modulation) puedes simular un voltaje variable. Esto permite controlar el brillo de un LED o la velocidad de un motor.

Los pines con capacidad PWM en Arduino UNO son: 3, 5, 6, 9, 10 y 11 (tienen el símbolo ~ al lado).

🌅 Efecto de brillo gradual

// ============================================ // PWM: Brillo variable usando analogWrite() // Valores de 0 (apagado) a 255 (máximo brillo) // ============================================ void setup() { pinMode(9, OUTPUT); // Configurar pin 9 como salida PWM } void loop() { // FASE 1: Subir brillo gradualmente for (int i = 0; i <= 255; i++) { // i va de 0 a 255 analogWrite(9, i); // Escribir valor PWM en pin 9 delay(10); // Pequeña pausa para ver el cambio } // FASE 2: Bajar brillo gradualmente for (int i = 255; i >= 0; i--) { // i va de 255 a 0 analogWrite(9, i); // Escribir valor PWM delay(10); // Pequeña pausa } }
Valor PWMBrilloVoltaje efectivo
0Apagado0V
64Bajo (25%)~1.25V
128Medio (50%)~2.5V
191Alto (75%)~3.75V
255Máximo (100%)5V

Monitor Serial

El Monitor Serial es una herramienta que te permite ver datos que envía Arduino a tu computadora. Es tu ventana al mundo interior de la placa.

¿Dónde está?

En el IDE de Arduino: Herramientas → Monitor Serial (o Ctrl+Shift+M). Asegúrate de que el baud rate coincida con el que pusiste en Serial.begin().

📊 Leer un sensor analógico

Conecta un potenciómetro a A0 y lee su valor en tiempo real:

// ============================================ // Monitor Serial: Lee un potenciómetro y // muestra su valor en el Monitor Serial // ============================================ void setup() { Serial.begin(9600); // Iniciar comunicación serial a 9600 baudios } void loop() { int valor = analogRead(A0); // Leer voltaje en pin A0 (0-1023) Serial.print("Valor del potenciómetro: "); // Enviar texto sin salto de línea Serial.println(valor); // Enviar valor numérico CON salto delay(100); // Esperar 100ms antes de la siguiente lectura }

Conexión: Pata central del potenciómetro → A0. Pata izquierda → 5V. Pata derecha → GND.

Arduino en Robótica

Arduino UNO es el cerebro de miles de proyectos robóticos. Estos son algunos ejemplos que construirás durante el curso:

🚗
Carro robot
2 motores + control
📏
Sensor distancia
HC-SR04 + LED
💡
Semáforo
3 LEDs + tiempos
🌡️
Termómetro
LCD + sensor temp
🔦
Luz nocturna
LDR + LED PWM
🛡️
Alarma
PIR + buzzer

Riesgos y Precauciones

No sobrepases los 5V en pines digitales

Los pines digitales trabajan a 5V. Conectar más voltaje (ej: 9V directo) puede quemar el microcontrolador de forma permanente.

Corriente máxima por pin: 40mA

Cada pin digital puede dar máximo 40 mA. No conectes motores grandes ni LEDs de alta potencia directo. Para eso necesitas un transistor o un driver.

No cortocircuites VCC y GND

Conectar 5V directamente a GND sin resistencia causa un cortocircuito que puede dañar la placa o el puerto USB de tu computadora.

Buena práctica

Siempre desconecta la alimentación (USB o DC) antes de conectar o desconectar componentes. Revisa dos veces las conexiones antes de encender.

Documentación Técnica

ParámetroValorNotas
MicrocontroladorATmega328P8-bit, 16 MHz
Voltaje operación5VRegulado internamente
Voltaje entrada (recomendado)7V - 12VVía jack DC o VIN
Voltaje entrada (límite)6V - 20VFuera de rango puede dañar
Pines digitales I/O146 con PWM
Pines analógicos6A0 - A5, 10 bits
Corriente máxima por pin40 mANo exceder
Corriente máxima 3.3V150 mAPin 3.3V
Memoria Flash32 KB0.5 KB usados por bootloader
SRAM2 KBDatos en ejecución
EEPROM1 KBDatos permanentes
Frecuencia reloj16 MHz16 millones de ciclos/segundo

Pon a prueba tu Conocimiento

Pregunta 1

¿Cuántos pines digitales tiene Arduino UNO?

6
8
14
20

Pregunta 2

¿Qué función se ejecuta UNA sola vez al iniciar Arduino?

loop()
setup()
init()
begin()

Pregunta 3

Para dar brillo variable a un LED usamos...

digitalWrite()
digitalRead()
analogWrite()
analogRead()

Pregunta 4

¿Qué voltaje entrega un pin digital cuando escribes HIGH?

5V
3.3V
9V
0V

Pregunta 5

¿Cuál es la corriente máxima que puede entregar un pin digital?

500 mA
100 mA
40 mA
1 A

Pregunta 6

¿Cuál es el rango de valores de analogWrite() para PWM?

0 - 1023
0 - 255
0 - 500
0 - 100

Pregunta 7

¿Qué pin NO tiene capacidad PWM en Arduino UNO?

9
6
2
11

Pregunta 8

¿Qué valor tiene HIGH en un pin digital de Arduino UNO?

3.3V
5V
9V
12V

Pregunta 9

¿Qué función inicia la comunicación serial en Arduino?

Serial.print()
Serial.begin()
Serial.write()
Serial.read()

Pregunta 10

¿Cuántos pines analógicos (entrada) tiene Arduino UNO?

2
4
5
6
Volver a Menú Principal
Siguiente tema Elige otro