Primeiros passos com o ESP8266 NodeMCU – Lendo o estado de um botão

No tutorial anterior nós mostramos como você deve fazer para ler o sinal de tensão proveniente de um potenciômetro com o seu módulo ESP8266 NodeMCU. Hoje você irá aprender algo um pouco parecido entretanto, que por sua vez, também servirá (assim como o potenciômetro) para a realização de acionamentos de dispositivos externos. Neste tutorial, nós vamos dar continuidade aos conteúdos voltados para o ensino dos conceitos básicos necessários para que você consiga começar a utilizar o seu NodeMCU e desenvolver os seus projetos de automação. O tópico deste conteúdo será a leitura do estado de botões utilizando o módulo ESP8266 NodeMCU.

[toc]

kit robotica educacional com Arduino ESP ou Microbit

As grandezas digitais e as portas digitais

Antes de aprendermos a efetuar leitura do estado de um botão, nós devemos entender o que são as grandezas digitais. Bem, as grandezas digitais são aquelas que são aquelas que podem ser definidas por meio de saltos entre valores bem estabelecidos dentro de um determinado intervalo. Como um exemplo de elementos que trabalham com estas grandezas nós podemos citar os relógios digitais, os quais, apesar do tempo em si variar continuamente, o visor dos mesmos mostra o tempo em saltos de um em um segundo (observe que os visores destes relógios nunca mostrarão algo tipo 25,8 segundos, pois, para eles, só existem 25 e 26 segundos, ou seja, qualquer valor intermediário não está definido).

O nosso módulo ESP8266 NodeMCU possui  vários pinos destinados a lidar com este tipo de grandeza, ou seja, pinos cujas funções são trabalhar com basicamente dois níveis de tensão bem definidos: 0V e 3,3V. Os pinos digitais estão identificados em nosso NodeMCU através da letra D e podem atuar de duas maneiras, ou seja, podem funcionar como entradas digitais ou como saídas digitais, de modo que, na primeira opção, os pinos em questão deverão detectar os dois níveis de tensão citados e na segunda eles proporcionarão estes níveis para que nós possamos utilizá-los no acionamento de dispositivos externos. Neste tutorial, nós iremos utilizar o pino D1 como um pino de entrada digital e em seguida efetuaremos a leitura do estado de um botão (isto é, se o botão estão pressionado ou não) conectado nele.

 


Mãos à obra – Efetuando a leitura de um potenciômetro

Componentes necessários

Montando o projeto

Circuito com o NodeMCU e push-button
Hardware utilizado

Programando

Este é o código que utilizaremos no desenvolvimento deste tutorial

float leitura;

 void setup() 
{ 
  pinMode(D1,INPUT);
  Serial.begin(115200);
  Serial.println("Estado do botão");
}

void loop() 
{
  if(digitalRead(D1) == 0)
  {
     Serial.println("Botão não pressionado");
  }
  else
  {
     Serial.println("Botão pressionado");
  } 
  delay(1500);  
}

Colocando para funcionar

Após compilarmos o código apresentado, nós teremos este resultado:

Apresentação dos estados do botão
Resultado final do projeto

Entendendo a fundo

Software

– Definindo as configurações iniciais

Dentro da função setup() nós vamos primeiramente definir o modo de operação do pino que nós vamos utilizar, de modo que, como nós queremos ler o estado de um botão, devemos fazer com que o pino em questão seja uma entrada digital, desta forma, nós vamos recorrer à função pinMode() para fazermos com que o pino D1 seja a entrada digital desejada. Posteriormente, nós iniciaremos a conexão com o Serial Monitor através da função Serial.begin() (passando como parâmetro o valor da taxa de transmissão de dados (como sugestão, utilize este valor)). Além disso, nós vamos utilizar a sentença Serial.println() para escrevermos na tela um título para a nossa aplicação, de modo que, este será “Estado do botão”.

void setup() 
{ 
  pinMode(D1,INPUT); 
  Serial.begin(115200); 
  Serial.println("Estado do botão"); 
}  

– Lendo o estado do botão

O que nós vamos fazer aqui é algo muito simples e envolve alguns conceitos bem legais para você aprender. Primeiramente, nós vamos utilizar uma estrutura condicional chamada if(), de modo que, através deste função nós podemos conferir se uma determinada hipótese é verdadeira. O que nós vamos verificar neste tutorial é se o botão não está pressionado, ou seja, se existe um nível de tensão de 0V na porta de entrada digital D1. Este procedimento será feito por meio da comparação do resultado da função digitalRead() (que ao ser usada retorna 0 ou 1, caso o nível de tensão na porta de entrada digital em questão seja 0 ou 3,3V respectivamente) com o valor 0.

  if(digitalRead(D1) == 0)
  {
     Serial.println("Botão não pressionado");
  }

Caso esta hipótese seja verdadeira, o nosso módulo ESP8266 NodeMCU deverá escrever a frase “Botão não pressionado” no Serial Monitor.

Em contrapartida, caso o resultado da leitura do estado do botão seja 1, a frase que deverá ser escrita será “Botão pressionado”. Este procedimento é realizado por meio do uso da estrutura condicional complementar else.

 else
  {
     Serial.println("Botão pressionado");
  } 

Por fim, utilizamos a função delay() para determinar o intervalo entre cada uma das aquisições.

delay(1500);

Veja como ficou a nossa função loop()

void loop() 
{
  if(digitalRead(D1) == 0)
  {
     Serial.println("Botão não pressionado");
  }
  else
  {
     Serial.println("Botão pressionado");
  } 
  delay(1500);  
}

 


Considerações finais

Neste tutorial, nós demonstramos como você pode fazer para realizar a leitura do estado de um botão através de um módulo ESP8266 NodeMCU. Esperamos que continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Lembre-se de deixar suas dúvidas nos comentários abaixo.

Privacy Preference Center