Potenciômetros e codificadores rotativos parecem quase idênticos à primeira vista, mas funcionam de maneiras diferentes. Descubra como usar ambos com um Arduino.
Entre os componentes eletrônicos de controle do usuário, os botões giratórios se destacam como alguns dos mais satisfatórios de usar. Eles podem complementar telas sensíveis ao toque e outros dispositivos de entrada, além de funcionar bem com botões e interruptores. Mas como você pode adicionar um botão aos seus próprios projetos DIY Arduino?
Você tem duas opções principais: um potenciômetro ou um codificador rotativo. Esses componentes podem parecer semelhantes, mas os métodos para usá-los com um dispositivo como uma placa de microcontrolador Arduino são muito diferentes. Vamos ver como eles se comparam.
Potenciômetros vs. Codificadores Rotativos
A maioria dos potenciômetros e codificadores rotativos que os entusiastas de DIY encontrarão vêm em um fator de forma semelhante. Eles têm uma base cubóide ou cilíndrica com pernas de conexão presas e um eixo redondo que torce e tem recortes para uma tampa se encaixar.
Alguns potenciômetros parecem diferentes, como os que vêm na forma de slides longos, como os encontrados nos decks de mixagem de música. Quando se trata do tipo rotativo, no entanto, à primeira vista, eles parecem quase idênticos aos codificadores rotativos, então você seria perdoado por pensar que eles são iguais.
O que é um potenciômetro?
Um potenciômetro é, em essência, um resistor variável. À medida que o eixo é girado, a resistência dentro do potenciômetro muda, permitindo que o usuário altere as propriedades de um circuito sem precisar reconstruí-lo. Os potenciômetros podem ser analógicos e digitais, mas os potenciômetros digitais imitam os analógicos e isso os torna muito semelhantes ao uso.
Os potenciômetros sempre têm um ponto inicial e final definido onde o eixo não pode mais ser girado. Alguns potenciômetros têm uma sensação irregular quando girados, mas muitos também são suaves, como os encontrados em aparelhos de som antigos.
Apesar de serem analógicos, os potenciômetros funcionam bem com microcontroladores. você pode facilmente configurar um potenciômetro com um Raspberry Pi Pico ou Arduíno.
O que é um codificador rotativo?
Os codificadores rotativos determinam a posição de seu eixo usando um sensor para fornecer um sinal analógico ou digital ao dispositivo ao qual estão conectados. Isso informa ao dispositivo em que posição o codificador está. Juntamente com o eixo rotativo, os codificadores rotativos geralmente também possuem um botão embutido que é acionado empurrando o eixo para baixo.
Ao contrário dos potenciômetros, os encoders rotativos podem girar sem parar e quase sempre têm saliências táteis para cada uma das posições do eixo. Muitos carros modernos usam codificadores rotativos para controlar seus sistemas de entretenimento.
Como usar um potenciômetro com um Arduino
Graças ao seu design simples, usar um potenciômetro com um Arduino é simples. Seu potenciômetro tem três conectores: terra, saída e vref. Os pinos terra e vref se conectam aos conectores GND e 5V do seu Arduino, respectivamente, enquanto o pino de saída do potenciômetro se conecta a uma das entradas analógicas da sua placa.
Código do Potenciômetro do Arduino
Seu código de potenciômetro Arduino começa com o básico configurar() e laço() modelo que você verá quando criar um novo arquivo no Arduino IDE. Primeiro, adicione um const int variável no início do código para registrar a conexão do pino analógico do potenciômetro - neste caso, A0.
constint potenciômetro = A0;
Na sequência disso, o configurar() A função é simples: você só precisa declarar o pino do seu potenciômetro como uma entrada. Você também pode iniciar uma conexão serial se quiser enviar dados para o seu PC para diagnóstico.
vazioconfigurar(){
pinMode (potenciômetro, INPUT);
Serial.começar(9600);
}
Em seguida, é hora de configurar o laço() função. Comece criando um int variável usando o analogRead() função para armazenar a posição do seu potenciômetro. Depois disso, você pode usar o mapa() função para reduzir o tamanho do valor com o qual você está lidando - neste exemplo, para corresponder às especificações PWM, por exemplo, para controlar o brilho de um LED. Adicione um pequeno atraso para garantir a estabilidade.
vaziolaço(){
int potenciometerValue = analogRead (potenciômetro);
mapa (valor do potenciômetro, 0, 1023, 0, 255);
Serial.println(valor do potenciômetro);
atraso (10);
}
Agora que você tem a posição do potenciômetro, pode usá-lo com outras partes do código. Por exemplo, um se A instrução funcionaria bem para acionar o código quando o potenciômetro estiver em uma posição específica.
constint potenciômetro = A0;
vazioconfigurar(){
pinMode (potenciômetro, INPUT);
Serial.começar(9600);
}
vaziolaço(){
int potenciometerValue = analogRead (potenciômetro);
mapa (valor do potenciômetro, 0, 1023, 0, 255);
Serial.println(valor do potenciômetro);
atraso (10);
}
Como usar um codificador rotativo com um Arduino
Os codificadores rotativos exigem um código mais complexo do que os potenciômetros, mas ainda são bastante fáceis de trabalhar. Seu codificador rotativo tem cinco pinos: terra, VCC, um pino de botão (SW), saída A (CLK) e saída B (DT). Os pinos terra e VCC se conectam aos conectores terra e 5V em seu Arduino, respectivamente, enquanto os pinos SW, CLK e BT se conectam a conectores digitais individuais no Arduino.
Código do Codificador Rotativo do Arduino
Para tornar nosso código mais simples e fácil de trabalhar, usaremos a biblioteca SimpleRotary Arduino criada por MPrograms em GitHub. Certifique-se de ter esta biblioteca instalada antes de começar a trabalhar em seu código.
Muito parecido com o código do potenciômetro, você pode iniciar o script do codificador rotativo com o Arduino básico configurar() e laço() modelo de função. Comece declarando a biblioteca SimpleRotary e atribuindo seus pinos codificadores nesta ordem; CLK, DT e SW.
#incluir
SimpleRotary rotativo(1,2,3);
Você não precisa adicionar nada ao seu configurar() função, a menos que você queira usar o monitor serial para diagnosticar seu codificador rotativo.
vazioconfigurar(){
Serial.começar(9600);
}
O laço() função é uma história diferente. A determinação da rotação do eixo do codificador começa com um rotary.rotate() chamada de função atribuída a um int variável. Se o resultado for 1, o encoder está girando no sentido horário. Se o resultado for 2, o encoder está girando no sentido anti-horário. O resultado será sempre 0 se o codificador não tiver girado desde a última verificação.
Você pode usar se instruções para acionar outro código, dependendo da direção da rotação do codificador.
vaziolaço(){
int encoderRotation;
encoderRotation = rotary.rotate();if (encoderRotation == 1) {
Serial.println("sentido horário");
}
if (encoderRotation == 2) {
Serial.println("sentido anti-horário");
}
}
Você também precisa adicionar algum código para o botão do seu codificador ao laço() função. Este processo é muito semelhante, exceto que você usará o rotary.push() função, em vez de rotary.rotate().
vaziolaço(){
int encoderButton;
encoderButton = rotary.push();
if (botão do codificador == 1) {
Serial.println("botão pressionado");
}
}
Este script é bastante simples e você pode fazer muito para torná-lo seu. Vale a pena conferir a documentação do projeto SimpleRotary para garantir que você esteja usando todos os seus principais recursos. Depois de montado, o código do codificador deve ficar assim.
#incluir
SimpleRotary rotativo(1,2,3);vazioconfigurar(){
Serial.começar(9600);
}vaziolaço(){
int encoderRotation;
encoderRotation = rotary.rotate();if (encoderRotation == 1) {
Serial.println("sentido horário");
}if (encoderRotation == 2) {
Serial.println("sentido anti-horário");
}int encoderButton;
encoderButton = rotary.push();
if (botão do codificador == 1) {
Serial.println("botão pressionado");
}
}
Como escolher entre potenciômetros e codificadores rotativos para projetos
Como você pode ver, codificadores rotativos e potenciômetros funcionam de maneira bem diferente. Ambos os componentes oferecem novas maneiras de controlar seus projetos eletrônicos, mas qual você deve escolher?
Os potenciômetros são acessíveis e fáceis de usar, mas permitem apenas uma faixa de entrada limitada. Isso os torna ótimos quando você deseja controlar o brilho de um LED ou aumentar e diminuir a potência de componentes específicos e outras tarefas semelhantes.
Os codificadores rotativos fornecem muito mais escopo do que os potenciômetros. A inclusão de um botão significa que eles são ótimos para sistemas de controle de menu, como visto em muitos carros modernos. Este tipo de componente tornou-se muito popular no espaço de construção de teclados mecânicos. Você também pode construir um pequeno macropad com um codificador embutido.
Aparência semelhante, componentes diferentes
Com todas essas informações sob seu controle, você deve estar pronto para começar um projeto eletrônico com um potenciômetro ou codificador rotativo. Esses componentes podem fornecer muito controle sobre os circuitos que você constrói, mas você precisa ter certeza de escolher a opção correta para o seu projeto.