Los pines GND, 5V y 3.3V de Arduino tienen un comportamiento muy diferente de un pin Arduino que se usa como salida digital.
Los pines GND y 5V están conectados directamente a la fuente de alimentación. No están conectados al microcontrolador ATmega.
Cuando el Arduino recibe alimentación por USB, el pin de 5 V puede suministrar (fuente) hasta 500 mA. El pin GND y puede "absorber" (hundir) hasta 500mA. Esto es mucho más de lo que todos los pines de salida digital combinados de Arduino pueden manejar (fuente o sumidero).
El ATmega de Arduino también está utilizando algunos de esos 500 mA. El uso actual máximo de ATmega es de aproximadamente 200 mA, aunque suele ser mucho menos.
El pin de 3.3V es suministrado por un regulador de voltaje más pequeño. El especificación Arduino UNO indica que el pin 3.3V puede suministrar (fuente) 50mA.
Los pines 5V y 3.3V nunca deben estar conectados directamente a ningún pin GND. Debe siempre tener suficiente resistencia para limitar la corriente que fluye de 5V a (500mA - ATmega) o menos. El ATmega no usa el suministro de 3.3 V, por lo que la resistencia que limita la corriente que fluye de 3.3 V debe limitar la corriente a 50 mA o menos.
Un pin Arduino, cuando se configura en salida digital, puede manejar (fuente o sumidero) un máximo de 40mA. (Permaneciendo dentro de la especificación de ATmega)
Los pines en un ATmega se agrupan en 'puertos' de 8 pines. Cuando se usan varios pines en el mismo puerto, entonces la corriente máxima de todos los pines en el puerto es de 100 mA. Generalmente uso 12mA como corriente máxima, mientras estoy experimentando. Usualmente hago cumplir ese límite usando una resistencia.
Cuando se usa un pin Arduino como entrada digital, para un voltaje dentro de su rango de operación seguro, no importa limitar la corriente con una resistencia porque un pin de entrada ya tiene una impedancia (resistencia) muy alta.
Cuando un voltaje de entrada puede estar fuera del rango operativo seguro para un pin de entrada, hay muchas opciones.
Cada pin Arduino tiene pequeños diodos que lo conectan a Vcc (por ejemplo, 5V) y tierra, dispuestos de manera que una tensión por debajo de la tierra o por encima de Vcc aplicada al pin se conducirá a uno de esos rieles. Estos diodos solo manejan pequeñas corrientes. Por lo tanto, se puede proteger el pin de cortocircuitos de voltaje moderado (por ejemplo, a menos de 12 V) colocando una resistencia en el pin de entrada.
(He rastreado la hoja de datos de ATmega328 pero no puedo encontrar una especificación para estos diodos de protección, creo que están calificados por debajo de 1mA)
Una solución más predecible es proteger explícitamente los pines de entrada utilizando una resistencia para limitar la corriente y los diodos al Vcc y al riel a tierra.
(Existen soluciones más sólidas y complejas para proteger un pin, pero estas cubren el caso simple.)