fbpx

Como usar pull-up interno no Arduino

No mundo da eletrônica, muitas vezes é necessário utilizar resistores externos para controlar o fluxo de carga, evitar interferências indesejadas e impedir a queima de equipamento. O que poucas pessoas sabem é que o Arduino já possui resistores internos de pull-up em suas portas digitais que podem ser utilizados ativados por meio do comando “INPUT_PULLUP”.

Os resistores pull-up são usados em circuitos eletrônicos para garantir o nível lógico alto quando nenhum outro componente estiver conduzindo. Contudo, o valor do resistor pull-up é intencionalmente alto para que, se qualquer componente puxe a tensão para 0V, o nível lógico irá para o nível baixo.

A principal vantagem da utilização dos resistores internos de pull-up do Arduino é que não será necessário o uso de resistores externos no circuito. Assim, o projeto ficará mais simplificado e barato.

Nesse tutorial, vamos aprender a utilizar o recurso pull-up em um circuito simples com botão.

MATERIAIS NECESSÁRIOS

ESQUEMÁTICO DE LIGAÇÃO

Inicialmente, certifique-se de que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da Figura 1 utilizando o botão e os jumpers.

Figura ilustrativa do esquemático de ligação para utilização de resistor pull-up do Arduino.
Figura 1: Esquemático de ligação para utilização de resistor pull-up do Arduino.

Ao realizar a montagem do circuito, observe os seguintes pontos:

  • Conecte um dos terminais do botão ao GND do Arduino;
  • Conecte o outro terminal (lado oposto) do botão ao pino digital 9 do Arduino.

ELABORANDO O CÓDIGO

Após a montagem do circuito, vamos a programação do Sketch. O objetivo deste projeto é utilizar o resistor pull-up interno do Arduino em um circuito simples com botão.

Acompanhe os passos a seguir para melhor compreensão da lógica de programação:

1. Declarar as variáveis:

O primeiro passo na construção do Sketch será a declaração de variáveis. Desta forma, definimos a porta digital 9, em que o botão está conectado, a variável botão e criamos a variável EstadoBotao, do tipo inteiro, para armazenar o estado (HIGH ou LOW) do botão.

2. Iniciar a comunicação serial e realizar configurações iniciais

Na função void setup() inicializamos a comunicação serial por meio da instrução Serial.begin(9600);

Em seguida, inicializamos a variável botao (pino digital 9) como entrada com resistor pull-up interno habilitado através da instrução pinMode(botao, INPUT_PULLUP);

3. Realizar a leitura do botão

Iniciamos o loop() realizando a leitura da porta digital 9 (botao), para isso utilizaremos a função digitalRead(botao), e armazenaremos este valor na variável EstadoBotao.

4. Realizar verificação se o botão foi pressionado ou não

Neste projeto utilizaremos a estrutura de repetição if…else realizando múltiplos testes agrupados.

Se a leitura do botão for igual a 0 significa que o botão está sendo pressionado. Senão, o botão não está sendo pressionado. O resultado da verificação será impresso no monitor serial.

Desta forma, o Sketch deste projeto ficará da seguinte maneira:

/*
  --    UTILIZAR RESISTOR PULL-UP DO ARDUINO     --
  =================================================
  === BLOG DA ROBOTICA - www.blogdarobotica.com ===
  =================================================
  Autor: Jonas Souza
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  =================================================
  === CASA DA ROBOTICA - www.casadarobotica.com ===
  =================================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  ==================================================
*/

int botao = 9; //Define botao no pino digital 9
int EstadoBotao; //Variável responsável por armazenar os dados de leitura do botao

void setup() {
  Serial.begin(9600);// Inicia a comunicação serial
  pinMode(botao, INPUT_PULLUP); // define que o pino conectado ao botao é um pino de entrada de sinal
}

void loop() {
  EstadoBotao = digitalRead(botao);//Lê o valor de botao e armazena em EstadoBotao
  Serial.println(EstadoBotao); //Imprime o valor armazenado em EstadoBotao no monitor serial
  delay(100); //Intervalo de 0.1 segundo até a proxima leitura

  if (EstadoBotao == 0) { //Se EstadoBotao tiver um valor igual a 0 na leitura, será mostrado que o botão está sendo pressionado no monitor serial
    Serial.println("botao pressionado"); //Imprime mensagem no monitor serial
  }

  else { //Se EstadoBotao tiver um valor igual a 1 na leitura, será mostrado que o botão não esta sendo pressionado no monitor serial
    Serial.println("botao nao pressionado"); //Imprime mensagem no monitor serial
  }
}

O funcionamento deste projeto pode ser observado no Vídeo 1.

Vídeo 1: Resistor pull-up do Arduino.

Espero ter ajudado,

Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Jonas Souza

Dúvidas? Deixe seu comentário

Jonas Souza

Graduando em Engenharia Elétrica. Atua no setor desenvolvimento de tutoriais para o Blog da Robótica.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.