Por que usar resistores com botões de pressão e interruptores no Arduino
Este tutorial explica por que usar um resistor com botões de pressão e interruptores conectados a um Arduino é crucial para um funcionamento confiável. Compreender esse conceito é fundamental para qualquer projeto com Arduino que envolva entrada do usuário. Esse conhecimento evita comportamentos inesperados e garante que seus projetos funcionem corretamente. Aqui estão algumas ideias de projetos em que esse conhecimento é essencial:
- Interruptor simples liga/desliga para um LED
- Controlador de jogo interativo
- Controle remoto para eletrodomésticos
- Sistema de segurança com ativação por botão
Vamos explorar as razões por trás do uso de resistores nesses circuitos.

Hardware/Componentes
Os componentes principais necessários para este projeto são mínimos: uma placa Arduino, um botão de pressão e um resistor (maior que 300 ohms). O valor do resistor não é crítico; valores como 1kΩ, 10kΩ ou mesmo 100kΩ geralmente funcionarão bem (no vídeo em 00:41).
Guia de fiação
Existem duas configurações principais de fiação (no vídeo em 00:30):
- Configuração 1:Conecte o botão pulsador entre o pino do Arduino e +5V. O outro lado do botão está ligado ao terra por meio de um resistor. Quando o botão é pressionado, o pino lê HIGH; quando é liberado, lê LOW.
- Configuração 2:Conecte o botão entre o pino do Arduino e o terra. O outro lado do botão está conectado a +5V por meio de um resistor. Quando o botão é pressionado, o pino lê LOW; quando liberado, lê HIGH.

Um diagrama de fiação visual seria útil aqui.
Explicação do código
O código do Arduino utiliza opinMode()função para configurar o pino como entrada. A parte crucial é o uso deINPUT_PULLUP(no vídeo em 04:06, 04:23). Este resistor de pull-up interno elimina a necessidade de um resistor externo em certas configurações, simplificando a fiação. OdigitalRead()função lê o estado do pino, e um simplesif-elseA instrução determina se o botão está pressionado (LOW) ou não (HIGH) (no vídeo em 08:34).
pinMode(2, INPUT_PULLUP); // Configures pin 2 as input with internal pull-up resistor
int pushButton = digitalRead(2); // Reads the state of pin 2
if (pushButton == LOW) {
// Button is pressed
} else {
// Button is not pressed
}
Projeto ao vivo/Demonstração
O vídeo demonstra ambas as configurações de fiação e seus respectivos comportamentos. Ele destaca os problemas que podem surgir quando o resistor é omitido, como leituras erráticas devido a ruído e acoplamento capacitivo (no vídeo em 06:18, 06:39, 07:21). A demonstração mostra claramente a operação estável e confiável alcançada com o resistor no lugar (no vídeo em 08:08).
Capítulos
- [00:00] Introdução
- [00:30] Configurações de fiação
- [04:12] Explicação do código usando INPUT_PULLUP
- [05:36] Remoção do resistor: Demonstração prática
- [08:33] Explicação do Código
Imagens
/*
* This is an Arduino Sketch for a tutorial video
* explaining why a resistor is needed to be used with a push button
* with Arduino.
*
* Written by Ahmad Shamshiri on July 17, 2018 at 23:11 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(3,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(3);
if(pushButton == LOW)
{
Serial.println("Pin 3 LOW");
}else{
Serial.println("Pin 3 HIGH");
}
delay(500);
}
/*
* This is an Arduino Sketch for a Tutorial video
* explaining why a resistor is needed to be used with a push button
* with an Arduino to connect the pin to Ground (GND)
*
* Written by Ahmad Shamshiri on July 18, 2018 at 17:36 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(2);
if(pushButton == LOW)
{
Serial.println("Button is pushed.");
}else{
Serial.println("Button is NOT pushed.");
}
delay(500);
}
Coisas que você pode precisar
-
Amazonas
Recursos e referências
Ainda não há recursos.
Arquivos📁
Nenhum arquivo disponível.
