Controlando um servo com um potenciômetro e um LCD1602 usando Arduino
Neste tutorial, aprenderemos como controlar um servo motor usando um potenciômetro e exibir o valor do potenciômetro, bem como o ângulo do servo, em um display LCD1602. Este projeto é uma ótima maneira de combinar vários componentes e entender como eles podem trabalhar juntos para criar um sistema interativo. Ao final deste tutorial, você terá uma configuração funcional que permite ajustar o ângulo do servo com um manípulo enquanto exibe simultaneamente os valores no LCD.

Antes de entrarmos na fiação e no código, é útil entender os componentes que vamos usar. O potenciômetro atua como um resistor variável que pode ajustar a tensão de saída com base na sua posição, o que usaremos para determinar o ângulo do servo. O LCD1602 exibirá o valor atual do potenciômetro e o ângulo correspondente do servo. Você pode consultar o vídeo (no vídeo em 00:00) para um guia visual de todo o processo.
Hardware explicado
Os principais componentes que usaremos neste projeto são:
- Placa Arduino:Isso servirá como o controlador de todo o sistema, processando as entradas do potenciômetro e controlando a posição do servo com base nessas entradas.
- Potenciômetro:Um potenciômetro de 10 kΩ será usado para fornecer uma entrada analógica ao Arduino. Ele tem três terminais: um ligado a 5V, outro ao terra (GND) e o terminal do meio ligado a um pino analógico (A0) do Arduino.
- Servomotor:Este servo será controlado enviando-lhe um ângulo com base na posição do potenciômetro. O fio de sinal conecta-se a um pino digital do Arduino (pino 9).
- Display LCD1602:Este display mostrará o valor do potenciômetro e o ângulo do servo. Ele se conecta a vários pinos digitais do Arduino para controle.
O potenciômetro funciona variando a resistência e, assim, a tensão em seu terminal do meio, que o Arduino lê como uma entrada analógica. O motor servo é controlado enviando-lhe um sinal específico de modulação por largura de pulso (PWM) correspondente ao ângulo desejado. O LCD1602 utiliza uma biblioteca que nos permite controlar facilmente seu display e exibir informações referentes ao potenciômetro e ao servo.
Detalhes da ficha técnica
| Fabricante | vários |
|---|---|
| Número da peça | LM016L |
| Tensão lógica/IO | 5 V |
| Tensão de alimentação | 4,5 - 5,5 V |
| Corrente de saída (por canal) | até 2 mA |
| Corrente de pico (por canal) | 20 mA |
| Orientação sobre a frequência PWM | 50 Hz |
| Limiares da lógica de entrada | 0.3 x Vcc(baixo), 0.7 x Vcc(alto) |
| Queda de tensão / RDS (ligado)/ saturação | 0,2 V máx. |
| Limites térmicos | 85 °C |
| Pacote | DIP de 16 pinos |
| Notas / variantes | display de 16x2 caracteres |
- Conecte o pino central do potenciômetro ao pino analógico A0.
- Certifique-se de que o servo esteja alimentado por uma fonte de 5V e conectado ao pino digital 9.
- Use a biblioteca apropriada para o LCD e certifique-se de que ela esteja incluída no seu Arduino IDE.
- Tenha cuidado com a fiação para evitar curtos-circuitos, especialmente com as conexões do servo.
- Verifique se o LCD está inicializado corretamente no código para evitar problemas de exibição.

Instruções de fiação
Para ligar os componentes, comece conectando o potenciômetro. Conecte um dos pinos externos do potenciômetro ao pino 5V do Arduino e o outro pino externo ao terra. O pino do meio vai para o pino analógicoA0.
Em seguida, para o servo motor, conecte o fio marrom ou preto ao terra, o fio vermelho ao pino de 5V e o fio amarelo ou laranja ao pino digital9no Arduino. Para o LCD1602, conecte oVDDpino para 5V,RWaterrar, eV0ao pino do meio do potenciômetro para ajuste de contraste. ConecteRSfixar12,ENprender11,D4fixar5,D5prender4,D6fixar3, eD7fixar2.
Também é recomendado incluir um resistor de 220 ohms em série com o LED, se estiver a usar um, ligando-o à alimentação de 5 V. Além disso, um capacitor de 470 µF pode ser ligado entre a alimentação e o terra do servo para filtrar quaisquer ruídos durante a operação.
Exemplos de Código e Passo a Passo
O código começa incluindo as bibliotecas necessárias e inicializando os pinos do LCD e do servo. O trecho a seguir mostra a configuração do LCD e do servo:
void setup() {
lcd.begin(16, 2);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}Este trecho inicializa o LCD para 16 colunas e 2 linhas, conecta o servo ao pino 9 e exibe uma mensagem de boas-vindas no LCD. Olcd.clear()A função garante que quaisquer mensagens anteriores sejam removidas.
Em seguida, o loop lê continuamente o valor do potenciômetro e atualiza a posição do servo e o display LCD:
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer
angle = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
myservo.write(angle); // sets the servo position according to the scaled value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pot. Value:");
lcd.setCursor(11, 0);
lcd.print(val);
lcd.setCursor(0, 1);
lcd.print("Angle :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
}Este loop lê o valor do potenciômetro, mapeia-o para um ângulo correspondente para o servo e atualiza o display LCD com o valor do potenciômetro e o ângulo do servo. Odelay(500)no final do loop evita que a exibição seja atualizada muito rapidamente.
Demonstração / O que esperar
Ao ligar o sistema, o LCD exibirá Robojax Servo Knob por 2 segundos, seguido pelo valor do potenciômetro e pelo ângulo do servo. À medida que você gira o potenciômetro, o ângulo do servo mudará de acordo e o novo valor do potenciômetro será refletido no LCD. Se você perceber qualquer comportamento inesperado, como o servo se mover na direção errada, verifique a fiação do potenciômetro e as conexões do servo (no vídeo em 10:00).
Recursos e referências
-
ExternoBiblioteca LCD1602 (do GitHub)github.com
-
ExternoUsando o display LCD1602 para Arduinoyoutube.com
Arquivos📁
Nenhum arquivo disponível.