Menu
CoddyTech

Pull-up interno

Parte da seção Entradas do Journey de Arduino da Coddy. Lição 3 de 22.

Você usou INPUT_PULLUP desde a aula Ler um botão. Ele liga um resistor dentro da placa, de 20k a 50k ohm, entre o pino e 5V: o pull-down da aula anterior, só que na direção oposta, sem nenhuma peça extra. O botão apenas conecta o pino ao GND.

O problema é que a lógica fica invertida: solto lê HIGH, pressionado lê LOW, e é fácil se confundir com == LOW espalhado pelo sketch. Uma comparação como digitalRead(2) == LOW resulta em true ou false, e um bool é uma variável que armazena true ou false. Armazene o valor com um nome que indique o que ele significa:

bool pressed = digitalRead(2) == LOW;

if (pressed) {
  // o botão está pressionado
}

A partir daí, o código fica fácil de entender. Imprimir um bool mostra 1 para true e 0 para false.

challenge icon

Desafio

Fácil

O botão conecta o pino 2 ao GND, e o LED está no pino 13:

  • configure o pino 2 como INPUT_PULLUP
  • armazene digitalRead(buttonPin) == LOW em um bool chamado pressed
  • imprima pressed, acenda o LED enquanto ele for true e, em seguida, aguarde 100 ms

O Check espera 1 enquanto o botão estiver pressionado e 0 enquanto estiver solto. Pressione Run, mantenha o botão pressionado e, em seguida, Check.

Experimente você mesmo

const int buttonPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  // ative o pull-up do pino do botão
}

void loop() {
  // bool pressed = ...
  // imprima o valor, acenda o LED enquanto ele for true e espere 100 ms
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Entradas

Pratique por conta própria: Playground de Arduino