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.

Two circuit diagrams side by side. Left: a pull-up circuit with a resistor from the input pin up to the supply and a switch from the input pin down to GND. Right: a pull-down circuit with a resistor from the input pin down to GND and a switch from the input pin up to the supply.

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.