3.9. Interruptores e resistências de pull¶
A saída GPIO controla hardware externo. A entrada GPIO é o oposto: a câmara lê a tensão num pino e reporta-a como 0 ou 1. O dispositivo de entrada mais simples é um interruptor – e torná-lo lido de forma fiável requer um elemento eletrónico além do próprio interruptor.
3.9.1. Interruptores e entradas flutuantes¶
Um interruptor é um contacto mecânico: dois pedaços de metal que se tocam quando o interruptor está fechado e se separam quando está aberto. Eletricamente, esse é o dispositivo na íntegra. Não existe fonte de tensão no interior; um interruptor sozinho fornece apenas «ligado» ou «desligado».
Ligar um interruptor diretamente entre um pino GPIO e a massa significa que o pino está:
A 0 V quando o interruptor está fechado (agora ligado à massa).
Flutuante quando o interruptor está aberto (ligado a nada).
Um pino flutuante não tem tensão definida. A entrada lê o que quer que esteja próximo – crosstalk de sinais vizinhos, ruído da alimentação, até estática de um dedo próximo do fio. value() devolve combinações imprevisíveis de 0 e 1 muitas vezes por segundo.
3.9.2. Resistências de pull-up e pull-down¶
A solução é uma resistência de pull: uma resistência de valor elevado (tipicamente 10 kΩ a 100 kΩ) que liga a entrada a um nível conhecido quando o interruptor está aberto.
Configurações de pull-up (esquerda) e pull-down (direita) para uma entrada de interruptor.¶
Pull-up. A resistência liga a entrada ao barramento de alimentação. Quando o interruptor está aberto, apenas uma pequena corrente flui pela resistência e o pino lê alto. Quando o interruptor fecha, coloca o pino em curto-circuito com a massa; o pino lê baixo. A resistência limita a corrente que de outro modo fluiria da alimentação para a massa através do interruptor fechado.
Pull-down. A imagem espelhada: a resistência liga a entrada à massa e o interruptor liga à alimentação. Aberto lê baixo, fechado lê alto.
Pull-up é a convenção mais comum – botões «active low». O próprio MCU fornece pull-ups e pull-downs internos que podem ser ativados com Pin.PULL_UP ou Pin.PULL_DOWN, eliminando a resistência externa por completo.