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.
Desafio
FácilO 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) == LOWem umboolchamadopressed - imprima
pressed, acenda o LED enquanto ele fortruee, 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
}
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