Por acaso você já montou um circuito básico pra acender um led, utilizando um botao, e ele não funcionou direito ? Tipo… acendeu quando não deveria e não acendeu quando deveria ? Pois é, isso pode ser culpa do resistor de elevação (ou resistor pull-up).

Opa ! O que é isso ?

Bom, resistor de elevação é um componente (resistor) que você coloca em determinado circuito, para que o circuito não fique “perdido” quando nada está acontecendo. Parece complicado ? Nem tanto, vamos a um exemplo prático. Você faz um circuito simples, como este abaixo :

resistor pull up arduino

usando o  seguinte programa :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Projeto : Circuito teste resistor de elevacao
// Autor : Arduino & Cia

void setup()
{
  pinMode(10,OUTPUT); // Pino led
  pinMode(6,INPUT);   // Pino botão
}

void loop()
{ 
  int leitura=digitalRead(6);
  if (leitura == 0)
  { 
     digitalWrite(10,1);
  }
  else
  {
     digitalWrite(10,0);
  }
}

Quando vc está apertando o botão, tudo bem, o Arduino sabe que ali está passando corrente, etc e tal, e acende o led, mas e quando o botão não está apertado ? Qual o estado ? Positivo, negativo, ou indefinido ? É justamente nesse estado “indefinido” que as coisas começam a complicar, gerando resultados diversos, e o Arduino se perde para saber o que está acontecendo no circuito. O resultado é um led que fica meio aceso, meio apagado, piscando às vezes, ou seja, perdido.

Utilizando o circuito anterior e uma pequena resistência (destacada no círculo vermelho), o problema desaparece. Mas qual a mágica ? Não há mágica. Utilizando um resistor de elevação, como este componente é chamado, você define um estado (HIGH) para o botão, quando o mesmo não é pressionado. Veja o circuito abaixo :

Circuito com resistor de elevação / pull-up

Felizmente o Arduíno tem uma função que permite que você acione um resistor de elevação interno, sem precisar adicionar componentes à placa. Para ativa-lo, basta adicionar a linha abaixo no programa :

digitalWrite(6,HIGH);

Seu programa fica assim :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
void setup()

{
  pinMode(10,OUTPUT); // Pino led
  pinMode(6,INPUT);   // Pino botão
  digitalWrite(6,HIGH); // Ativa o resistor de elevação
}

void loop()
{
  //Codigo aqui
}

Desta maneira, você pode usar normalmente o circuito da figura 1, sem se preocupar em colocar mais componentes no circuito.

Obviamente existe uma resposta “eletrônica” para essa questão do resistor de elevação, mas achei que a explicação ficaria melhor em termos gerais, sem muitos detalhes técnicos.

Ah ! da mesma forma que o “pull-up“, existe o resistor “pull-down“, que ligado ao circuito, mantém o sinal em estado LOW (baixo). 😉

Comentários para enriquecer o post serão bem vindos. Até a próxima !

5/5 - (2 votes)