Simulação do Arduino no Proteus: Servo Motor e Displays LCD com o controlador PCD8544

servo motor arduino
Este post faz parte da série Proteus. Leia também os outros posts da série:

Novamente trazemos para você mais um conteúdo interessante envolvendo simulações do Arduino UNO no Proteus. Desta vez queremos contribuir com o conhecimento básico necessário para realizar simulações de displays LCD que utilizam o controlador PCD8544 (nas simulações utilizamos o display Nokia 5110) e também de aplicações cujo principal elemento é o servo motor. No final deste artigo disponibilizamos para você um material bastante didático e organizado de maneira que qualquer pessoa consiga aprender e desenvolver seus próprios projetos.

Objetivo

Neste item será realizado o acionamento de quatro servo motores por meio de potenciômetros. Também será desenvolvida nesta seção uma tela informativa que será apresentada no display utilizado.

Hardware – Conectando o Display LCD no Arduino

A seguir são apresentados os componentes utilizados no Proteus, assim como o esquema de ligação dos mesmos.

Componentes necessários

Servo Motor e Displays LCD: Componentes utilizados
Figura 1 – Componentes utilizados

Diagrama esquemático das ligações

Servo Motor e Displays LCD: Esquema de ligação dos componentes para simulação de 4 servo motores e controle do Display LCD com Arduino
Figura 2 – Esquema de ligação dos componentes para simulação de 4 servo motores e controle do Display LCD com Arduino

Desenvolvimento do código – Controlando o Display LCD com Arduino

No decorrer desta seção serão explicados todos os passos utilizados para o desenvolvimento do projeto, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido.

Primeiramente deve-se incluir as bibliotecas necessárias para utilizar o display e o servo motor, pois estas são compostas por uma série de códigos que visam auxiliar, tornando mais simples a interação do Arduino UNO com o controlador do display utilizado (PCD8544) e com o servo motor. A biblioteca SPI.h é responsável pela utilização do protocolo SPI para a manipulação dos dados. As bibliotecas Adafruit_PCD8544.h e Adafruit_GFX.h proporcionam a facilidade no acionamento do display e uma variedade de funções relacionadas à produção de elementos gráficos, respectivamente, enquanto que a biblioteca servo.h é necessária para o acionamento do servo motor.

Em seguida utiliza-se a diretiva #define para associarmos os elementos aos seus respectivos pinos. Neste momento os potenciômetros 1, 2, 3 e 4 estão relacionados com os pinos de entrada analógica A0, A1, A2 e A3 respectivamente.

Posteriormente são criados os objetos do tipo Adafruit_PCD8544 cujo nome é lcd e quatro objetos do tipo Servo identificados por servo1/2/3/4, utilizados para a manipulação dos motores. Além disso, são declaradas as variáveis medidaPOT1/POT2/POT3/POT4 responsáveis por armazenar os valores atuais obtidos pelos potenciômetros através da função analogRead(), já as variáveis medidaPOT1ant/POT2ant/ POT3ant/POT4ant guardam os valores anteriores obtidos pelos potenciômetros.

Dentro da função setup() existem apenas duas funções. A função iniciarSERVOS() é responsável por atribuir os servos aos respectivos pinos através da função attach() além de mapear os potenciômetros e posicionar os motores no ângulo inicial de acordo com os mesmos e atualizar o valor das variáveis que registram os valores anteriores já citadas.

A segunda função presente na função setup() é a iniciarLCD(). Em primeiro lugar, é inicializada a interface entre o display e o Arduino UNO através da função begin(), em seguida são desenhados na tela quadro retângulos por meio da função drawRect() para que as informações de cada servo sejam disponibilizadas de forma visualmente organizada (observe que esta função possui cinco parâmetros, onde os dois primeiros são referentes ao ponto do canto superior esquerdo do retângulo, o terceiro e o quarto estão relacionados com o comprimento e altura respectivamente, enquanto o último parâmetro define a cor da linha utilizada na criação dos mesmos).

Posteriormente, os quatro campos criados são identificados com as siglas S1/S2/S3 e S4 e também são escritos os valores correspondentes dos ângulos iniciais de cada servo.

Dentro da função loop() está presente a função atualizarSERVOS(), esta é responsável por realizar a leitura dos potenciômetros, converter para um intervalo entre 0 e 180 graus através da função map() e tomar as providencias necessárias caso a leitura atual seja diferente da anterior (estas providencias são: a atualização do display com o valor atual e a movimentação de um determinado motor para o valor desejado).

Deve-se ressaltar que este display funciona de maneira diferente do apresentado no material anterior, pois não é possível simplesmente escrever um caractere sobre outro de maneira em que o primeiro desapareça, então neste caso, as partes relativas aos valores dos ângulos (que são as que mudam de acordo com o funcionamento do programa) são reescritas na cor “branca” (para “apagar”) e só depois deste passo são escritos os valores atuais na cor “preta”.

Servo Motor e Displays LCD: Displays
Figura 3 – Displays
Servo Motor e Displays LCD: Display 3 mostrando a informação relativa à posição dos 4 servos
Figura 4 – Display 3 mostrando a informação relativa à posição dos 4 servos

Além deste exemplo de aplicação, estão presentes no manual completo os seguintes tópicos: 

  • PRIMEIROS PASSOS COM O DISPLAY NOKIA 5110;
  • ACIONAMENTO BÁSICO DE UM SERVO MOTOR;
  • ACIONAMENTO DE UM SERVO MOTOR COM VELOCIDADE VARIÁVEL.

Conclusão

De acordo com o exemplo dado anteriormente, pode-se perceber como é bem simples a utilização do display LCD NOKIA 5110 e como é possível realizar diferentes tipos de interface dependendo do objetivo do desenvolvedor. Além disso, também é essencial conhecer um pouco sobre acionamento de servos, pois estes podem estar contidos em uma variedade de sistemas, inclusive possuem aplicação certa em projetos que envolvem articulações, entre outros.

Convidamos o leitor a baixar este manual através do link disponibilizado abaixo. Esperamos que este documento possa contribuir com o seu conhecimento e tenha bons estudos! Pedimos encarecidamente que nos envie dúvidas, sugestões, críticas e caso tenha gostado deste compartilhe e divulgue nosso trabalho.

download_proteus_arduino_lcd

Outros artigos da série

<< Simulação do Arduino no Proteus: Display LCD
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Arduino » Simulação do Arduino no Proteus: Servo Motor e Displays LCD com o controlador PCD8544
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Porque o RTOS não faz o que eu quero?

Data: 28/10 às 19:30h - Apoio: Mouser Electronics
 
INSCREVA-SE AGORA »



 
close-link