Módulo 2 – Aula 9: Programando o Encoder Rotacional

Na aula 9 do módulo 2 você vai aprender como utilizar o encoder rotacional com o Arduino.

Exercício:

#include <RotaryEncoder.h>

#define CLK 2 // Define que o pino CLK do encoder está conectado ao pino 2 do Arduino
#define DT  3 // Define que o pino DT do encoder está conectado ao pino 3 do Arduino
#define SW  4 // Define que o pino SW do encoder está conectado ao pino 4 do Arduino

int botao = 0; // Variável para verificar se o encoder foi pressionado
int nova_posicao = 0; // Variável para verificar se o encoder foi rotacionado

RotaryEncoder encoder(DT, CLK); // Cria um objeto chamado encoder

void setup()
{
  pinMode(SW, INPUT_PULLUP); // Define que o pino SW é uma entrada. Pullup puxa o nível de entrada para cima
  Serial.begin(9600); // Inicia a comunicação serial
  Serial.println("Gire o encoder...."); // Imprime no mintor serial a frase "Gire o encoder..."
}
void loop()
{
  //Verifica se o botao do encoder foi pressionado
  botao = digitalRead(SW);
  if (botao != 1)
  {
    Serial.println("Botao pressionado");
    while (digitalRead(SW) == 0)
      delay(100);
  }
  
  //Verifica se o enconder foi rotacionado
  static int posicao = 0; // Cria uma variável para verificar a posição atual do encoder
  encoder.tick(); // Checa a posição do encoder
  nova_posicao = encoder.getPosition(); // A variável nova_posicao recebe o novo valor da posição
  //Se a posicao foi alterada, mostra o valor no Serial Monitor
  if (posicao != nova_posicao) {
    Serial.println(nova_posicao);
    posicao = nova_posicao;
  }
}