Pines del Arduino Uno: digitales, PWM, analógicos y alimentación
¿Cuántos pines tiene el Arduino Uno? 14 digitales (6 PWM), 6 analógicos A0–A5, Vin, 5V y 3.3V, más I2C, SPI, interrupciones y el límite de 20 mA por pin.
Los pines del Arduino Uno son los 32 puntos de conexión alineados en los conectores hembra negros de los dos bordes largos de la placa: 14 pines digitales de entrada/salida (0–13), de los cuales 6 pueden dar PWM (~3, 5, 6, 9, 10, 11), 6 entradas analógicas (A0–A5) y los pines de alimentación que alimentan la placa o dan energía a otros componentes (Vin, 5V, 3.3V, GND, IOREF, AREF, RESET). Cada pin tiene una función principal, pero muchos tienen además una segunda: A4 y A5 son también el bus I2C, del 10 al 13 forman el bus SPI, el 2 y el 3 son pines de interrupción, y el 0 y el 1 son la línea serie que habla con tu ordenador.
Elegir el pin correcto marca la diferencia entre un proyecto que funciona a la primera y horas buscando fallos. Con las tablas de este artículo entenderás fácilmente por qué el PWM de los pines 9 y 10 deja de funcionar al conectar un servo, por qué el sketch no se sube mientras hay un módulo Bluetooth conectado o por qué unos cuantos LED pueden sobrecargar la placa. Al final encontrarás también un código de prueba que usa todos los tipos de pin a la vez, un plan de pines de ejemplo y las diferencias de pines entre el Uno R3 y el R4.

Diagrama de pines del Arduino Uno: ¿dónde está cada pin?
Coloca la placa delante de ti con el conector USB y el jack de alimentación a la izquierda. Los dos conectores del borde superior llevan los pines digitales; los números aumentan de derecha a izquierda, así que el pin de más a la derecha es el 0 (RX) y el pin digital de más a la izquierda es el 13. En el borde inferior, el conector de la izquierda lleva los pines de alimentación y el de la derecha las entradas analógicas. La ~ (virgulilla) junto a un número indica que ese pin puede dar PWM. El grupo de 2×3 pines macho del borde derecho es el conector ICSP.
| Conector | Pines (de izquierda a derecha) | Función |
|---|---|---|
| Arriba a la izquierda (10 pines) | SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8 | Copia de I2C, referencia analógica, SPI y pines digitales |
| Arriba a la derecha (8 pines) | 7, ~6, ~5, 4, ~3, 2, TX→1, RX←0 | Pines digitales, pines de interrupción y línea serie |
| Abajo a la izquierda (8 pines) | Libre (NC), IOREF, RESET, 3.3V, 5V, GND, GND, Vin | Pines de alimentación |
| Abajo a la derecha (6 pines) | A0, A1, A2, A3, A4, A5 | Entradas analógicas (A4/A5 también son I2C) |
| Borde derecho (2×3) | 1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GND | Conector de programación ICSP |
| Característica | Arduino Uno R3 |
|---|---|
| Microcontrolador | ATmega328P, 16 MHz |
| Tensión de funcionamiento (lógica) | 5 V |
| Tensión de entrada (jack / Vin) | Recomendada 7–12 V, límite 6–20 V |
| Entradas/salidas digitales | 14 pines (D0–D13) |
| Salidas PWM | 6 pines: 3, 5, 6, 9, 10, 11 |
| Entradas analógicas | 6 pines (A0–A5), 10 bits (0–1023) |
| Corriente por pin | 20 mA recomendados, 40 mA máximo absoluto |
| Corriente total (VCC/GND) | 200 mA |
| Corriente del pin 3.3V | Máximo 50 mA |
| Memoria | 32 KB de flash (0,5 KB de bootloader), 2 KB de SRAM, 1 KB de EEPROM |
La gran tabla de pines: D0–D13 y A0–A5
| Pin | Puerto | Función principal | Función extra | Nota |
|---|---|---|---|---|
| D0 (RX) | PD0 | E/S digital | UART RX (Serial) | Conectado al chip USB-serie, déjalo libre |
| D1 (TX) | PD1 | E/S digital | UART TX (Serial) | Conectado al chip USB-serie, déjalo libre |
| D2 | PD2 | E/S digital | Interrupción externa INT0 | Pulsadores, encoders, conteo de RPM |
| D3 ~ | PD3 | E/S digital, PWM 490 Hz | Interrupción externa INT1, Timer2 | El PWM falla mientras suena tone() |
| D4 | PD4 | E/S digital | - | Sin función extra, libre para usar |
| D5 ~ | PD5 | E/S digital, PWM 980 Hz | Timer0 | Mismo temporizador que millis() |
| D6 ~ | PD6 | E/S digital, PWM 980 Hz | Timer0 | Mismo temporizador que millis() |
| D7 | PD7 | E/S digital | - | Sin función extra, libre para usar |
| D8 | PB0 | E/S digital | - | Sin función extra, libre para usar |
| D9 ~ | PB1 | E/S digital, PWM 490 Hz | Timer1 | La librería Servo desactiva su PWM |
| D10 ~ | PB2 | E/S digital, PWM 490 Hz | SPI SS, Timer1 | Debe seguir como salida al usar SPI |
| D11 ~ | PB3 | E/S digital, PWM 490 Hz | SPI MOSI, Timer2 | También en el conector ICSP |
| D12 | PB4 | E/S digital | SPI MISO | También en el conector ICSP |
| D13 | PB5 | E/S digital | SPI SCK | Aquí está el LED L de la placa |
| A0 | PC0 | Entrada analógica | Digital 14 | - |
| A1 | PC1 | Entrada analógica | Digital 15 | - |
| A2 | PC2 | Entrada analógica | Digital 16 | - |
| A3 | PC3 | Entrada analógica | Digital 17 | - |
| A4 | PC4 | Entrada analógica | I2C SDA, digital 18 | Sin lectura analógica mientras se usa I2C |
| A5 | PC5 | Entrada analógica | I2C SCL, digital 19 | Sin lectura analógica mientras se usa I2C |
¿Cómo funcionan los pines digitales (0–13)?
Cada pin digital se configura como entrada o salida con pinMode(). Como salida, digitalWrite(pin, HIGH) lleva el pin a unos 5 V y LOW a 0 V. Como entrada, digitalRead() compara la tensión con un umbral: con el ATmega328P funcionando a 5 V, todo lo que supera 3,0 V es un HIGH seguro, lo que está por debajo de 1,5 V es un LOW seguro y lo de en medio es una zona indefinida. Por eso la salida de un sensor de 3,3 V suele leerse como HIGH en el Uno; pero la salida de 5 V del Uno no debe ir directamente a la entrada de un módulo de 3,3 V, entre ambos hace falta un convertidor de nivel lógico.
Un pin de entrada que no está conectado a nada queda flotante y lee HIGH y LOW al azar, incluso al acercar la mano. La solución es llevar el pin a un nivel fijo con una resistencia: pinMode(pin, INPUT_PULLUP) activa la resistencia de 20–50 kΩ que hay dentro del chip, y el pulsador se conecta entre el pin y GND. Tienes los detalles en Cómo conectar un pulsador a Arduino. El pin 13 está conectado al LED L de la placa; en el R3 original ese LED se controla a través de un amplificador operacional que hace de búfer, así que usar el pin como entrada no da problemas, pero en algunos clones el LED y su resistencia van directos al pin y pueden estropear la lectura de un pulsador con el pull-up interno.
Pines PWM (~3, 5, 6, 9, 10, 11) y temporizadores
El Uno no puede generar una salida analógica real; en su lugar, estos seis pines dan PWM, una onda cuadrada que se enciende y se apaga muy rápido. Con analogWrite(pin, valor) ajustas entre 0 y 255 cuánto tiempo permanece encendida la onda: 0 es totalmente apagado, 127 más o menos la mitad y 255 totalmente encendido. Así se controlan el brillo de un LED, la velocidad de un motor y la de un ventilador. Los seis pines PWM están unidos de dos en dos a tres temporizadores (timers) de hardware, y esa es la causa de los conflictos con algunas librerías. La idea del PWM y el cálculo del ciclo de trabajo se explican en ¿Qué es PWM?.
| Temporizador | Pines PWM | Frecuencia | ¿Quién usa este temporizador? |
|---|---|---|---|
| Timer0 (8 bits) | 5, 6 | Unos 980 Hz | millis(), delay() y micros() |
| Timer1 (16 bits) | 9, 10 | Unos 490 Hz | Librería Servo |
| Timer2 (8 bits) | 3, 11 | Unos 490 Hz | tone() y librerías como IRremote |
Pines analógicos (A0–A5) y AREF
Los pines analógicos miden una tensión entre 0 y 5 V con una resolución de 10 bits, y analogRead() devuelve un número de 0 a 1023. Cada paso equivale a unos 4,9 mV; para pasar el número a voltios usa tensión = valor × 5,0 / 1023, de modo que una lectura de 512 significa unos 2,5 V. Los seis pines comparten por turnos un único ADC, y cada lectura tarda unos 100 µs, lo que permite unas 10.000 lecturas por segundo. Para medir bien, la impedancia de salida del sensor no debería superar los 10 kΩ; si es mayor, al leer dos pines seguidos los valores pueden mezclarse, y descartar la primera lectura y usar la segunda lo soluciona. Para medir tensiones de más de 5 V, elige las resistencias adecuadas con la calculadora de divisor de tensión.
El pin AREF sirve para cambiar el límite superior de la medida analógica. analogReference(DEFAULT) usa 5 V, analogReference(INTERNAL) la referencia interna de 1,1 V del chip y analogReference(EXTERNAL) la tensión que aplicas al pin AREF (0–5 V) como tope. Con un sensor que da 0–1 V, la referencia de 1,1 V reduce cada paso a unos 1,1 mV y hace la medida unas 4,5 veces más fina. Componentes como potenciómetros, LDR y sensores de humedad del suelo se conectan a estos pines; los detalles de la conversión analógico-digital están en el artículo sobre el ADC y un ejemplo práctico en el artículo del potenciómetro.
Pines de alimentación: Vin, 5V, 3.3V, GND, IOREF y RESET
| Pin | ¿Qué hace? | Límites y precauciones |
|---|---|---|
| Vin | Da la tensión que llega del jack o alimenta la placa con 7–12 V | Se salta el diodo de protección contra inversión, cuidado con la polaridad |
| 5V | Salida de 5 V del regulador o del USB | Fusible de 500 mA en USB; desde fuera, solo 5 V regulados |
| 3.3V | Salida de 3,3 V del regulador de la placa | Máximo 50 mA; para módulos pequeños como el RC522 |
| GND | Tierra común (2 abajo, 1 arriba) | El GND de todas las fuentes externas debe unirse aquí |
| IOREF | Indica a los shields la tensión lógica de la placa | En el Uno va unido a 5V, no sirve para alimentar |
| RESET | Reinicia la placa al ponerlo en LOW | Lo usan los botones de reset de los shields |
| AREF | Entrada de referencia externa para medidas analógicas | 0–5 V; antes, analogReference(EXTERNAL) |
| NC (pin sin nombre) | Reservado para uso futuro en el R3 | No está conectado a nada |
El Uno se puede alimentar de tres formas. Por USB, la placa toma 5 V directamente del ordenador y un fusible rearmable de 500 mA protege el puerto. Si das 7–12 V por el jack DC o por Vin, el regulador de la placa los baja a 5 V; si están conectados ambos, la placa pasa sola a la alimentación externa cuando Vin supera unos 6,6 V. Como el regulador convierte en calor la tensión sobrante, con 12 V de entrada se calienta rápido si sacas unos cientos de mA del pin 5V. Lo más sano es alimentar cargas como servos, motores y tiras LED desde una fuente aparte y unir solo los GND. Para elegir batería y calcular la autonomía usa la calculadora de duración de batería, y lee todas las formas de alimentación en Cómo alimentar un Arduino.
¿Por qué hay que dejar libres los pines 0 y 1?
Los pines 0 (RX) y 1 (TX) son el único puerto serie por hardware del ATmega328P y en la placa están conectados mediante resistencias de 1 kΩ al chip convertidor USB-serie (ATmega16U2). Tu ordenador usa estos dos pines al subir el código y al enviar texto al Monitor Serie. Si el TX de un módulo Bluetooth u otra señal está conectado al pin 0, las dos fuentes se pelean por la misma línea y la carga se detiene con avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00. Además, el pin 1 cambia rápidamente cada vez que se ejecuta Serial.print(), así que un LED o un relé conectado ahí se activa al azar.
Por eso, deja libres el 0 y el 1 mientras te queden otros pines. Si vas a conectar un módulo serie como un HC-05, un GPS o un reproductor MP3, la librería SoftwareSerial crea un segundo puerto serie en otros dos pines. El siguiente código conecta el módulo a los pines 8 (RX) y 7 (TX): envía al módulo lo que escribes en el Monitor Serie y al ordenador lo que llega del módulo. Con módulos de lógica de 3,3 V como el HC-05, conecta la salida TX del Uno (pin 7) al pin RX del módulo a través de un divisor de tensión. Todas las soluciones a los problemas de carga están en Arduino no sube el código y la lógica de la comunicación serie en Comunicación serie UART.
1#include <SoftwareSerial.h>
2
3SoftwareSerial moduleSerial(8, 7); // RX = 8, TX = 7; 0 ve 1 boş kalır / 0 and 1 stay free
4
5void setup() {
6 Serial.begin(9600); // USB üzerinden bilgisayar / computer over USB
7 moduleSerial.begin(9600); // HC-05 veri modu hızı / HC-05 data mode baud rate
8 Serial.println(F("Seri kopru hazir / Serial bridge ready"));
9}
10
11void loop() {
12 if (moduleSerial.available()) {
13 Serial.write(moduleSerial.read()); // modülden bilgisayara / module to computer
14 }
15 if (Serial.available()) {
16 moduleSerial.write(Serial.read()); // bilgisayardan modüle / computer to module
17 }
18}Pines de comunicación: I2C (A4/A5), SPI (10–13) y pines de interrupción (2, 3)
I2C te permite conectar decenas de dispositivos al mismo bus con solo dos cables (SDA y SCL); pantallas LCD, OLED, módulos de reloj RTC y sensores como el BME280 lo usan. En el Uno, SDA = A4 y SCL = A5. En las placas R3, los pines SDA y SCL que están junto a AREF no son un bus aparte, están conectados por dentro a A4 y A5, así que mientras usas I2C no puedes usar A4 y A5 para lecturas analógicas. La librería Wire funciona a 100 kHz por defecto y llega a 400 kHz con Wire.setClock(400000). Las direcciones, las resistencias pull-up y un escáner I2C están en ¿Qué es I2C?, y un ejemplo práctico en Pantalla LCD I2C.
SPI es más rápido pero necesita más cables: MOSI = 11, MISO = 12, SCK = 13 y SS (CS) = 10. Los módulos de tarjeta SD, los lectores RFID y las pantallas TFT usan SPI. Varios dispositivos pueden compartir el bus: MOSI, MISO y SCK son comunes y cada dispositivo recibe su propio pin CS. Un detalle importante: en modo maestro (master), el pin 10 debe quedarse como salida; si lo pones como entrada y se va a LOW, el ATmega328P se pasa a modo esclavo (slave) y el SPI se detiene. MISO, MOSI y SCK también están en el conector ICSP, y algunos shields toman el SPI de ahí. Para más detalles, consulta ¿Qué es SPI? y RFID RC522.
Una interrupción te permite captar al instante un cambio en un pin, haga lo que haga loop() en ese momento. En el Uno, las interrupciones externas solo están en los pines 2 (INT0) y 3 (INT1): escribes attachInterrupt(digitalPinToInterrupt(2), funcion, FALLING), y el modo de disparo puede ser LOW, CHANGE, RISING o FALLING. Los encoders, sensores de RPM, caudalímetros y pulsadores que no se pueden perder van en estos pines. Los demás pines también tienen "interrupciones por cambio de pin" (PCINT), pero los pines de un mismo puerto comparten una sola función de interrupción y tu código tiene que averiguar qué pin cambió. Las reglas y los ejemplos están en Interrupciones en Arduino.
| Función | Arduino Uno | ESP32 (DevKit) | Raspberry Pi Pico |
|---|---|---|---|
| I2C SDA / SCL | A4 / A5 | GPIO 21 / 22 | GP4 / GP5 |
| SPI MOSI / MISO / SCK / CS | 11 / 12 / 13 / 10 | GPIO 23 / 19 / 18 / 5 | GP19 / GP16 / GP18 / GP17 |
| UART TX / RX | 1 / 0 | GPIO 1 / 3 (conectados al USB) | GP0 / GP1 |
| Interrupción externa | Solo 2 y 3 | Todos los GPIO | Todos los GPIO |
| PWM | 6 pines | Casi todos los pines con salida | Todos los GPIO |
| Entrada analógica | 6 pines, 10 bits | ADC1: GPIO 32–39, 12 bits | GP26, GP27, GP28; 12 bits |
| Nivel lógico | 5 V | 3,3 V (no tolera 5 V) | 3,3 V (no tolera 5 V) |
| Corriente por pin | 20 mA (máx. 40 mA) | Unos 20 mA recomendados | 4 mA por defecto, máx. 12 mA |
Al pasar al ESP32 o a la Pico, la mayor diferencia es la tensión: las dos placas funcionan a 3,3 V y sus pines no toleran 5 V, así que los módulos de 5 V que conectas directamente al Uno pueden necesitar un convertidor de nivel. A cambio, estas placas tienen interrupciones y PWM en casi todos los pines, y los buses I2C y SPI se pueden mover a otros pines. Para comparar las placas, lee ¿Arduino Uno o ESP32?, y para ver los mapas de pines usa la herramienta de pinout; las placas en sí se explican en ¿Qué es el ESP32? y ¿Qué es la Raspberry Pi Pico?.
¿Para qué sirve el conector ICSP?
ICSP (In-Circuit Serial Programming) es un conector de 2×3 que sirve para programar el microcontrolador directamente por las líneas SPI, sin USB ni bootloader. El ICSP del borde derecho pertenece al ATmega328P, y el pequeño ICSP1 junto al conector USB pertenece al chip USB-serie (ATmega16U2). En el día a día no lo tocarás, pero el ICSP entra en juego cuando el bootloader se corrompe, cuando grabas un bootloader en un ATmega328P nuevo o cuando subes código con un programador como el USBasp. Si conviertes un segundo Uno en programador con el ejemplo ArduinoISP, sus pines 10, 11, 12 y 13 van a RESET, MOSI, MISO y SCK de la placa de destino, y un condensador de 10 µF entre RESET y GND en el Uno programador evita su reinicio automático. Para saber si tu placa ha sufrido daños, echa un vistazo a ¿Se ha quemado mi Arduino?.
| Pin ICSP | Señal | Equivalente en el Uno |
|---|---|---|
| 1 | MISO | D12 |
| 2 | VCC (+5 V) | 5V |
| 3 | SCK | D13 |
| 4 | MOSI | D11 |
| 5 | RESET | RESET |
| 6 | GND | GND |
20 mA por pin, 200 mA en total: límites de corriente
Un pin del Uno trabaja con seguridad hasta 20 mA. Los 40 mA de la hoja de datos del ATmega328P son el máximo absoluto, es decir, el valor por encima del cual el chip puede dañarse de forma permanente, no un valor de trabajo. La corriente total que pasa por los pines VCC y GND del chip no debe superar los 200 mA. La hoja de datos también divide los pines en grupos: al dar corriente (HIGH), D0–D4 junto con A0–A5, y D5–D13 entre sí, deben quedarse cada uno por debajo de 150 mA; al absorber corriente (LOW), los grupos D0–D4, D5–D13 y A0–A5 deben quedarse cada uno por debajo de 100 mA. Si alimentas un LED rojo desde 5 V con una resistencia de 220 Ω, la corriente es (5 − 2) / 220 ≈ 13,6 mA. Diez LED encendidos a la vez suman 136 mA; está por debajo de 200 mA, pero si todos están en el mismo grupo se acercan mucho al límite de 150 mA del grupo. Si los LED se encienden con el pin en LOW (resistencia desde 5V al pin) y la mayoría están en el mismo grupo, se supera el límite de 100 mA. Reparte los LED entre los grupos o sube la resistencia a 330–470 Ω. Encuentra la resistencia adecuada con la calculadora de resistencia para LED o la calculadora de la ley de Ohm.
- Motores: Incluso un motor DC pequeño consume cientos de mA y genera picos de tensión; usa un driver de motor como el L298N o un transistor.
- Bobina de un relé: La bobina de un relé de 5 V consume unos 70–90 mA; usa un módulo de relé con transistor y diodo.
- Servomotores: El cable de señal puede ir a un pin, pero la alimentación del servo debe venir de una fuente aparte, no del pin 5V; los detalles están en el artículo del servomotor.
- Tiras LED y LED de potencia: Las tiras de 12 V y los LED de 1 W necesitan un MOSFET de nivel lógico.
- Cortocircuitos: Conectar directamente a GND una salida en HIGH saca del pin mucho más de 40 mA y lo estropea para siempre.
Código de prueba: usa pines digitales, PWM, analógicos y de interrupción a la vez
- Conecta un LED al pin 9 con una resistencia de 220 Ω: la pata larga a la resistencia y la corta a GND.
- Conecta las dos patas exteriores de un potenciómetro a 5V y GND y la del centro a A0.
- Conecta un pulsador entre el pin 2 y GND; no hace falta resistencia aparte porque se usa el pull-up interno.
- Sube el código, abre el Monitor Serie y ponlo a 9600 baudios.
- Gira el potenciómetro: cambia el brillo del LED del pin 9, el LED L de la placa (pin 13) se enciende cuando la tensión pasa de 2,5 V y el contador sube uno con cada pulsación.
1const byte BUTTON_PIN = 2; // kesme pini INT0 / interrupt pin INT0
2const byte PWM_LED = 9; // ~9: PWM çıkışı / PWM output
3const byte STATUS_LED = 13; // kart üzerindeki L LED'i / onboard L LED
4const byte POT_PIN = A0; // analog giriş / analog input
5
6volatile unsigned int pressCount = 0; // ISR içinde değişir / changed inside the ISR
7
8void onButton() {
9 static unsigned long lastPressMs = 0;
10 unsigned long now = millis();
11 if (now - lastPressMs > 50) { // 50 ms sıçrama filtresi / 50 ms debounce
12 pressCount++;
13 lastPressMs = now;
14 }
15}
16
17void setup() {
18 Serial.begin(9600); // 0 ve 1 numaralı pinleri kullanır / uses pins 0 and 1
19 pinMode(STATUS_LED, OUTPUT);
20 pinMode(PWM_LED, OUTPUT);
21 pinMode(BUTTON_PIN, INPUT_PULLUP); // dahili pull-up direnci / internal pull-up resistor
22 attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), onButton, FALLING);
23}
24
25void loop() {
26 int raw = analogRead(POT_PIN); // 0-1023 arası ham değer / raw value 0-1023
27 float volts = raw * 5.0 / 1023.0; // volta çevir / convert to volts
28 analogWrite(PWM_LED, raw / 4); // 0-255 arası PWM / PWM from 0 to 255
29 digitalWrite(STATUS_LED, volts > 2.5 ? HIGH : LOW); // 2,5 V eşiği / 2.5 V threshold
30
31 noInterrupts(); // sayacı güvenle kopyala / copy the counter safely
32 unsigned int presses = pressCount;
33 interrupts();
34
35 Serial.print(F("A0: "));
36 Serial.print(raw);
37 Serial.print(F(" V: "));
38 Serial.print(volts, 2);
39 Serial.print(F(" Buton / Button: "));
40 Serial.println(presses);
41 delay(200);
42}El código usa a la vez cuatro tipos de pin del Uno. analogRead(A0) lee un valor de 0 a 1023 y raw / 4 lo reduce al rango 0–255 que espera analogWrite(). Para no contar los rebotes del pulsador, la función de interrupción ignora las señales que llegan menos de 50 ms después de la última pulsación. El contador que cambia dentro de la interrupción se declara volatile, y loop() lo copia pausando las interrupciones un instante, porque el Uno, de 8 bits, lee un número de 16 bits en dos pasos y una interrupción en medio podría dar un valor erróneo. Los pines 0 y 1 solo se usan para Serial, así que no se conecta nada más a ellos.
Plan de pines de ejemplo: ¿qué componente va en cada pin?
Repartir los pines al azar en un proyecto con muchos componentes provoca conflictos. Primero coloca en sus pines los componentes con funciones especiales (I2C, SPI, interrupciones, PWM) y después reparte las tareas digitales sencillas entre los pines libres. Abajo tienes un plan de ejemplo para una cerradura con tarjeta RFID: lector RC522, LCD I2C, servo, zumbador, pulsador y dos LED. Como el servo y tone() se usan juntos, el PWM de los pines 3, 9, 10 y 11 ya queda descartado, y el plan lo tiene en cuenta.
| Componente | Pin del Uno | ¿Por qué este pin? |
|---|---|---|
| RC522 SDA (SS) | 10 | Pin SS del SPI; debe quedarse como salida |
| RC522 SCK / MOSI / MISO | 13 / 11 / 12 | Los pines SPI por hardware no se pueden cambiar |
| RC522 RST | 9 | Vale cualquier pin digital; el PWM del 9 ya no se puede usar por el servo |
| RC522 VCC | 3.3V | El módulo funciona a 3,3 V y su consumo está por debajo del límite de 50 mA |
| LCD I2C SDA / SCL | A4 / A5 | El único bus I2C del Uno |
| Señal del servo | 6 | La librería Servo funciona en cualquier pin; alimentación con 5 V externos |
| Zumbador | 8 | tone() funciona en cualquier pin, no se gasta un pin PWM |
| Pulsador | 2 | Pin de interrupción; con INPUT_PULLUP no hace falta resistencia |
| LED verde / rojo | 4 / 7 | Pines digitales sencillos sin función extra |
| Libres | 0, 1, 3, 5, A0–A3 | Línea serie libre; 3 para una segunda interrupción, 5 para PWM, A0–A3 para sensores |
Diferencias de pines entre el Arduino Uno R3 y el R4
| Característica | Uno R3 | Uno R4 (Minima / WiFi) |
|---|---|---|
| Microcontrolador | ATmega328P, 8 bits, 16 MHz | Renesas RA4M1, 32 bits, 48 MHz |
| Distribución de pines | Uno estándar | Igual; los shields encajan |
| Corriente por pin | 20 mA | 8 mA |
| Resolución analógica | 10 bits | 10 bits por defecto, hasta 14 bits |
| Salida analógica real (DAC) | No tiene | DAC de 12 bits en A0 |
| Pines 0 y 1 | Compartidos con el USB (Serial) | Separados del USB (Serial1) |
| Rango de Vin | 7–12 V recomendado | 6–24 V |
| USB | USB-B, a través del ATmega16U2 | USB-C; directo al procesador en el Minima, a través de un puente ESP32-S3 en el WiFi |
En resumen, en el R4 los números y las funciones de los pines no cambian (PWM ~3, 5, 6, 9, 10, 11; I2C A4/A5; SPI 10–13; interrupciones 2, 3), pero la corriente por pin baja a 8 mA. Un LED que en el R3 alimentabas directamente desde un pin necesita en el R4 una resistencia mayor (por ejemplo, 1 kΩ para unos 3 mA) o un transistor. La comparación detallada está en Arduino Uno R4. Si buscas una placa más pequeña, te servirán Pines del Arduino Nano y ¿Qué Arduino comprar?.
Errores frecuentes y cómo solucionarlos
| Síntoma | Causa | Solución |
|---|---|---|
| El código no se sube, error "not in sync" | Hay un módulo conectado al pin 0 o 1 | Desconecta el módulo al subir o pásalo a otros pines con SoftwareSerial |
| El brillo del LED deja de cambiar al añadir un servo | La librería Servo desactivó el PWM de 9 y 10 | Pasa el LED al 3, 5, 6 u 11 |
| La velocidad del motor falla mientras suena el zumbador | tone() usa el Timer2, que afecta a 3 y 11 | Pasa el PWM al 5, 6, 9 o 10 |
| El valor analógico cambia solo | Pin flotante o impedancia de la fuente demasiado alta | Conecta bien el sensor y, si hace falta, lee dos veces |
| El pulsador parece pulsarse solo | El pin de entrada está flotante | Usa INPUT_PULLUP o añade una resistencia de 10 kΩ |
| A4/A5 leen mal con una pantalla I2C conectada | A4/A5 se comparten con el bus I2C | Conecta el sensor analógico a A0–A3 |
| El módulo SPI no responde | El pin 10 está como entrada o el CS es incorrecto | Deja el pin 10 como salida y da a cada dispositivo su propio CS |
| La placa se calienta o se reinicia sola | Se saca demasiada corriente de los pines o del pin 5V | Alimenta las cargas desde otra fuente y une los GND |
Cuando conoces los pines del Arduino Uno, no necesitas memorizar dónde va cada componente: miras lo que necesita y eliges tú mismo el pin correcto. Si quieres repasar lo básico, empieza por ¿Qué es Arduino?. En la app BlueGrays encontrarás proyectos como encender un LED, leer un pulsador, medir la luz con un LDR, un LED RGB con PWM, una LCD I2C, RFID y dos Arduino comunicándose por una línea serie, todos paso a paso con esquemas que muestran por qué se eligió cada pin y con el código listo.
Preguntas frecuentes
¿Cuántos pines tiene el Arduino Uno?
El Arduino Uno R3 tiene 14 pines digitales de entrada/salida (0–13) y 6 entradas analógicas (A0–A5); como los pines analógicos también pueden usarse como digitales, suman 20 pines de señal. Seis de los pines digitales dan PWM. Además hay pines de alimentación y control como Vin, 5V, 3.3V, GND, IOREF, AREF y RESET, y el conector ICSP de 6 pines.
¿Cuáles son los pines PWM del Arduino Uno?
Los pines PWM son el 3, 5, 6, 9, 10 y 11; en la placa llevan una ~ junto al número. El 5 y el 6 funcionan a unos 980 Hz y los demás a unos 490 Hz. Al usar la librería Servo se ve afectado el PWM de 9 y 10, y al usar tone() el de 3 y 11.
¿Se pueden usar los pines analógicos de Arduino como digitales?
Sí. En el Uno, los pines A0–A5 funcionan como pines digitales normales con pinMode, digitalWrite y digitalRead y corresponden a los números 14–19. Puedes conectar un LED a A0 o un pulsador a A3. La única excepción es que, mientras usas I2C, A4 y A5 quedan reservados para el bus.
¿Cuánta corriente da un pin del Arduino Uno?
De un pin se pueden sacar 20 mA con seguridad; 40 mA es el máximo absoluto, y superarlo puede dañar el pin de forma permanente. La suma de todos los pines no debe superar los 200 mA. Por eso los LED se conectan con resistencia, y cargas como motores y relés se controlan con un transistor, un MOSFET o un módulo driver.
¿Se pueden usar los pines 0 y 1 del Arduino Uno?
Se pueden, pero no se recomienda. Estos pines están conectados al chip USB-serie y el ordenador usa esa línea al subir código y con el Monitor Serie. Con un módulo conectado al pin 0, la carga puede fallar con el error "not in sync", así que úsalos en último lugar o pasa a otros pines con SoftwareSerial.
¿Cuáles son los pines SDA y SCL del Arduino Uno?
En el Uno, SDA del bus I2C es el pin A4 y SCL es el pin A5. Las placas R3 tienen además dos pines marcados SDA y SCL junto a AREF, pero están conectados por dentro a A4 y A5 y no forman un bus aparte. En el ESP32 los pines I2C por defecto son GPIO 21 y 22; en la Raspberry Pi Pico el I2C puede ir en muchos pines, y lo más habitual es usar GP4 (SDA) y GP5 (SCL).
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

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

Medir la intensidad de luz con LDR
¿Quieres ver en números cuánta luz hay en tu habitación? El LDR, una pequeña pieza sensible a la luz, mide la luz ambiente y el Arduino escribe el valor en la pantalla del ordenador cada medio segundo

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

Transición de color suave con Led RGB
Un solo LED RGB pasa lentamente del rojo al verde, del verde al azul y vuelve al rojo, en un bucle de arcoíris que nunca se detiene. Cada transición dura unos dos segundos y medio, y los amarillos, tu

Uso de la pantalla LCD con I2C
Dale a tu Arduino su propia pantalla y haz que escriba su primer mensaje. La pantalla LCD de dos líneas se conecta con solo unos pocos cables; primero aparece un saludo en la línea de arriba, luego un

Lectura de valores RFID
El llavero del portal o la tarjeta de acceso guardan un número de identificación secreto, y este proyecto lo lee. Acerca la tarjeta al lector RFID y el Arduino escribe su número en la pantalla del ord

Comunicación unidireccional entre 2 Arduino
Haces que dos Arduino hablen por un solo cable: pulsas el botón de uno y se enciende el LED del otro, vuelves a pulsar y se apaga. La placa que envía avisa del botón con un mensaje corto, y la que rec
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

