El blogpost no dice qué es el IC, pero si se trata de un CMOS IC (un IC lógico o un microcontrolador), el pin necesita una resistencia pull-up. 100k \ $ \ Omega \ $ es un buen valor. Si no coloca el resistor, la entrada no estará definida cuando el interruptor esté abierto. La resistencia hará que la entrada sea alta.
Primero el transistor. Un transistor PNP tiene dos flujos de corriente: una pequeña corriente desde el emisor a la base y una corriente (posible) mayor desde el emisor hasta el colector. La corriente del colector del emisor normalmente será un múltiplo de la corriente de la base del emisor, pero puede estar limitada por componentes externos. La relación actual está definida por el \ $ H_ {FE} \ $ del transistor, que a menudo es más de 100 para los transistores de señal pequeños. Por lo tanto, 1 mA desde el emisor hasta la base permitirá 100 mA desde el emisor hasta el colector.
La unión de la base del emisor es en realidad un diodo, y tiene la misma caída de voltaje que un diodo común a corrientes bajas, aproximadamente 0.7V. Así que la base estará a 2.3V (3V - 0.7V). Si conectara el Arduino sin la resistencia y redujera su salida, tiene un problema. Conectaría directamente un punto a 2.3V con otro punto a 0V, lo que significa un cortocircuito, y la corriente alta puede dañar su Arduino y el transistor. Al colocar una resistencia limitas la corriente. Una resistencia de 2200 \ $ \ Omega \ $ la limitará a aproximadamente 1mA (2.3V / 2200 \ $ \ Omega \ $ = 1mA). Por lo tanto, una salida baja en el Arduino permitirá que fluyan al colector un mínimo de 100 mA. Sin embargo, la impedancia de entrada del IC será muy alta y la corriente real se limitará a unos pocos \ $ \ mu \ $ A. Sin embargo, eso es suficiente para hacer que el voltaje del colector se acerque al emisor, tan cerca de 3V, y la entrada del IC será alta. Nota: al igual que el otro esquema necesita una resistencia de pull-up, esta necesita una resistencia de pull-down para tener un nivel definido cuando el interruptor está abierto.
Si la base del transistor es alta, no habrá ninguna corriente de base, por lo tanto, no habrá corriente de colector, y la resistencia desplegable hará que la entrada del IC sea baja. Nota: entiendo que el Arduino funciona a + 5V, luego hacer que la salida sea alta hará que la base sea 2V más alta que el emisor. Normalmente no quiere hacer eso, porque la unión de la base del emisor solo puede sobrevivir a una pequeña tensión inversa. Sin embargo, 2V todavía será aceptable.
Luego el diodo. Si la salida del Arduino es alta, no hay una caída de voltaje en el diodo, por lo que no conducirá ninguna corriente, y el pull-up hará que la entrada sea alta. Si la salida del Arduino es baja, la corriente fluirá desde + 3V a través de la resistencia de pull-up y el diodo a tierra. El ánodo del diodo estará alrededor de 0.7V por encima del cátodo, por lo tanto a 0.7V. La mayoría de los circuitos integrados lógicos verán esto como un nivel bajo.
La razón por la que necesita el diodo: si conectara directamente el IC al Arduino con la salida alta del Arduino, cerrar el interruptor cortocircuitaría la salida a tierra.