Primeiros Passos com o BRIICK Encoder


This tutorial is not available in English



Introdução

Neste tutorial veremos como utilizar o módulo BRIICK Encoder com a BlackBoard Edge, para que você possa adicionar mais interação aos seus projetos.

Lista de Materiais

Para este projeto você precisará dos seguintes itens:

Como o Encoder Funciona?

Um encoder é um componente eletromecânico para converter um movimento de rotação em um sinal elétrico. Ele é composto de diversos contatos intercalados que giram junto com o seu eixo e dois pinos estáticos, por onde são lidos os sinais, como mostrado na imagem abaixo. Isso faz com que uma tensão conectada aos contatos do disco (através de um pino comum - C) seja transmitida aos dois pinos estáticos (A e B) em intervalos de ângulo conforme o movimento.

construcao-encoder
Construção de um Encoder
Fonte: Build Electronic Circuits

O resultado nos pinos de saída é duas ondas quadradas e defasadas entre si (muitas vezes de 90°), como mostrado nas imagens abaixo.

exemplo-ondas
formacao-onda
Exemplo de Sinais de Saída do Encoder
Fonte: Wikipedia

A diferença nos sinais destes dois pinos permite que, utilizando um microcontrolador para ler ambos os sinais, saibamos o sentido de rotação do eixo do encoder, para incrementar ou decrementar uma variável, como veremos em breve. Além disso, podemos determinar a velocidade do movimento em função da frequência dos sinais lidos.

Instalação da Biblioteca

Para controlar o BRIICK com facilidade e realizar a leitura dos botões do módulo, desenvolvemos uma biblioteca, que pode ser baixada diretamente pelo "Gerenciador de Bibliotecas" da Arduino. Ao abrir o gerenciador, digite "briick encoder" no campo de pesquisa e então instale a opção retornada.

Biblioteca Instalada
Biblioteca Instalada

Após pressionar o botão para instalar e aguardar alguns instantes, a biblioteca estará instalada e pronta para ser usada.

Circuito

Utilizando módulos BRIICK, a conexão é extremamente simples, basta conectar o módulo à BlackBoard Edge com o cabo incluso ao módulo, como na imagem abaixo.

Descricao Breve da Imagem
Circuito Elétrico

Botão e LED

Código

Neste primeiro projeto veremos como associar o botão do encoder ao LED, para que o LED acenda quando o botão for pressionado. Para isso, carregue o código abaixo na sua BlackBoard Edge. Caso seja a sua primeira vez utilizando a BlackBoard Edge, recomendamos que siga o tutorial de primeiros passos com a Edge.

Explicação do Código

O código se inicia com a inclusão da biblioteca "BRIICK_Encoder" instalada anteriormente e da biblioteca "Wire", também com a criação do objeto encoder como instância da classe BRIICK_Encoder da biblioteca.

Já nas configurações do código (função void setup()), apenas inicializamos a comunicação com o módulo através da função encoder.config(), e associamos o LED do módulo ao botão do encoder através do comando encoder.attachLED(). Neste momento vale mencionar que, caso você queira utilizar outro endereço I2C do módulo, por exemplo, para utilizar mais de um módulo Encoder na mesma BlackBoard Edge, basta digitar o novo endereço I2C como parâmetro da função de configuração. Vale mencionar também que, neste caso, o endereço I2C deve ser alterado no módulo através dos jumpers de solda na face inferior do módulo.

Por fim, na repetição do código (função void loop()) verificamos através da condição if (encoder.readButton() == HIGH) se o botão do encoder foi pressionado, para informar no monitor serial. Juntamente com a mensagem no monitor serial, o LED do módulo irá acender, graças a um controle interno da biblioteca configurado na associação mencionada anteriormente.

O Que Deve Acontecer

Após carregar o código para a placa, pressione o botão pelo eixo do encoder, e veja que o LED irá se acender como no GIF abaixo.

Resultado

Leitura do Encoder

Código

Para realizar a leitura do encoder em si, carregue o código a seguir para a sua BlackBoard Edge.

Explicação do Código

O código se inicia com a inclusão da biblioteca "BRIICK_Encoder" instalada anteriormente, e com a criação do objeto encoder como instância da classe BRIICK_Encoder da biblioteca, como no projeto anterior. Além disso, temos a criação das variáveis DELAY_TIME e timeout, que serão responsáveis por criar uma temporização no código sem interromper a sua execução, ao contrário da função delay().

Já nas configurações do código (função void setup()), apenas inicializamos a comunicação com o módulo através da função encoder.config().

Por fim, na repetição do código (função void loop()), verificamos pela condição if (millis() > timeout) se a contagem de tempo de execução de código atual da placa é maior do que o valor da variável timeout. Em outras palavras, a cada 100 milissegundos, será exibido no monitor serial o valor atualizado da leitura do encoder, retornado graças ao comando encoder.read(). Para finalizar, a variável timeout tem o seu valor atualizado pelo comando timeout = millis() + DELAY_TIME.

O Que Deve Acontecer

Ao executar o código, abra o monitor serial da Arduino IDE e mova o eixo do encoder. Você verá que o valor irá diminuir ao girar o eixo no sentido anti-horário, e aumentar o valor ao girar no sentido horário, como na captura de tela abaixo.

aumento
Aumento
diminuicao
Decremento
Exemplo de Funcionamento

Indo Além

Você pode adicionar o encoder em diversos projetos, por exemplo para navegar entre menus, para controlar a posição de um servomotor, entre outros. No entanto, é importante ter em mente que pausas no programa podem interferir no processo de leitura do encoder e fazer com que alguns movimentos não sejam lidos corretamente, por isso priorize a leitura do módulo (comando encoder.read()).

Conclusão

Neste tutorial vimos como utilizar as funções do módulo BRIICK Encoder, e agora você pode incluir ainda mais funcionalidades ao seu projeto.

Avatar