Primeiro, esqueça o resistor de 100 Ω por enquanto. Não é necessário para o funcionamento do botão, apenas existe como proteção, caso você cometa um erro de programação.
- Se o botão for pressionado, P2 será conectado diretamente a +5 V, de modo que será visto como um nível alto, sendo "1".
- Se o botão for solto, o +5 V não conta mais, há apenas 10 kΩ entre a porta e o terra.
O pino de E / S de um microcontrolador tem alta impedância quando usado como entrada, o que significa que apenas flui uma corrente de fuga pequena, geralmente muito menor que 1 µA, que será o máximo de acordo com a folha de dados. OK, digamos que seja 1 µA. Então, de acordo com a Lei de Ohm, isso causará uma queda de tensão de 1 µA 10 kΩ = 10 mV através do resistor. Portanto, a entrada será de 0,01 V. Esse é um nível baixo ou um "0". Um microcontrolador típico de 5 V verá qualquer nível inferior a 1,5 V como baixo. ×
Agora, o resistor de 100.. Se você acidentalmente efetuou a saída do pino e a ajustou baixa, pressionar o botão causará um curto-circuito: o microcontrolador ajusta 0 V no pino e a chave +5 V no mesmo pino. O microcontrolador não gosta disso e o IC pode estar danificado. Nesses casos, o resistor de 100 should deve limitar a corrente a 50 mA. (O que ainda é um pouco demais, um resistor de 1 kΩ seria melhor.)
Como não há corrente de fluxo em um pino de entrada (além do baixo vazamento), dificilmente haverá queda de tensão no resistor.
Os 10 kΩ são um valor típico para um pull-up ou pull-down. Um valor mais baixo fornece uma queda de tensão ainda mais baixa, mas 10 mV ou 1 mV não faz muita diferença. Mas há outra coisa: se o botão for pressionado, haverá 5 V no resistor, para que haja uma corrente de 5 V / 10 kΩ = 500 µA. É baixo o suficiente para não causar problemas, e você não manterá o botão pressionado por muito tempo. Mas você pode substituir o botão por um interruptor, que pode ficar fechado por muito tempo. Então, se você tivesse escolhido um pull-down de 1 kΩ, teria 5 mA através do resistor, desde que a chave esteja fechada, e isso é um desperdício. 10 kΩ é um bom valor.
Observe que você pode virar isso de cabeça para baixo para obter um resistor de pull-up e mudar para o terra quando o botão for pressionado.
Isso inverterá sua lógica: pressionar o botão fornecerá um "0" em vez de um "1", mas o trabalho é o mesmo: pressionar o botão fará a entrada 0 V, se você soltar o botão, o resistor conectará o entrada para o nível de +5 V (com uma queda de tensão desprezível).
É assim que geralmente é feito, e os fabricantes de microcontroladores levam isso em consideração: a maioria dos microcontroladores possui resistores pull-up internos, que você pode ativar ou desativar no software. Se você usar o pull-up interno, você só precisará conectar o botão ao terra, é tudo. (Alguns microcontroladores também têm opções configuráveis, mas são muito menos comuns.)