Introdução
O “Gerador Gráfico em Tempo Real” é um projeto de aplicativo para computador, na qual simula um gráfico que recebe dados em tempo real de um microcontrolador e cria o gráfico a partir dos dados recebidos. Ele foi feito através de linguagem de programação Python, utilizando as bibliotecas “Matplotlib” para gerar o gráfico, “PYQT5(QtDesigner)” para desenvolver a interface do aplicativo e seu funcionamento, e “Datetime” para manter o horário atualizado em tempo real no gráfico. Para auxiliar na criação da interface foi utilizado o QtDesigner, que é um aplicativo integrado ao PYQT5 em que se pode criar a interface nele e importá-la para o Python, simplificando a criação do aplicativo.
Este projeto teve como objetivo aprendizagem mais profunda sobre Python, principalmente em torno da questão da Biblioteca PYQT5, reconhecida como uma das melhores bibliotecas para desenvolver interfaces gráficas, se apresentando como uma ferramenta muito útil por permitir a criação de aplicativos para diferentes funções. Esse artigo pretende mostrar esse projeto, como ele funciona e como foi criar essa interface.
Como funciona o aplicativo:
Ao ativar o código irá aparecer a seguinte interface:

Figura 1: Tela inicial do gráfico
Ao iniciar o aplicativo, haverá no centro dele o gráfico que estará vazio até clicar-se no botão “começar”, após isso novos pontos serão criados a cada 0,5 segundos. O Eixo X é baseado na opção selecionada dentro da “Combo Box” chamada “O Eixo X é”, podendo ser selecionado entre as seguintes opções :
– O números de pontos que tem no gráfico: nessa opção o Eixo X é a quantidade de pontos atualmente no gráfico, sendo o X de cada ponto o número de quando esse ponto foi criado em relação aos outros pontos, sendo assim o segundo ponto criado tendo o x = 2. Então no final o eixo X dessa opção mostra por exemplo se o gráfico vai do ponto 1 ao 10 ou do 10 ao 50.
– Tempo em segundos:nessa opção X é o tempo em que cada ponto foi criado em horas, minutos e segundos. Nessa opção, se um ponto for criado às 14h22min e 30 segundos , o eixo X dele será 14:22:30.
– Tempo em milissegundos: nessa opção X é o tempo em que cada ponto foi criado em minutos, segundos e milissegundos, sendo igual a ultima só que aparece os milissegundos e não aparece a hora que o ponto foi criado.
O Eixo Y tem como função simular os dados recebidos, apresentando o valor entre 0 e 100, esse valor é selecionado baseado no Dial ou no Slider(barra de movimento ao lado do gráfico) assim ao se alterar um deles o próximo ponto gerado aparece com o valor em que ele está, ambos são sincronizados então mudar um muda o outro.

Figura 2: Gráfico em funcionamento
Opções configuráveis:
Por padrão, um novo ponto é criado no gráfico a cada meio segundo, mas esse tempo pode ser alterado pelo usuário, indo abaixo de “atualização por milissegundos”:

Figura 3: Gráfico em funcionamento com pontos interligados
Por exemplo, ao colocar-se o valor de 1000 milissegundos(equivalente a 1 segundo) e clicar em atualizar, o gráfico começará a gerar novos pontos a cada 1 segundo. Outra parte configurável no aplicativo pelo usuário, é a quantidade máxima de pontos no gráfico, que tem como padrão 8 pontos, na seção de “pontos no gráfico” pode se colocar a quantidade de pontos desejada e clicando em “colocar” ele atualizará o gráfico e fará ter o número de pontos escolhidos pelo usuário.
Outras funcionalidades:
Outros botões que existem no aplicativo são o de parar, que pausa o sistema, interrompendo a criação de mais pontos até clicar no botão de “começar” novamente, e o botão de “reiniciar” que reinicia o gráfico assim fazendo-o ficar vazio. Também há a “check box” que está com a mensagem ao lado escrito “pontos aparecendo” ao clicar nela cada ponto fica destacado por um círculo. Abaixo, a imagem mostra essa opção selecionada:
Há também no app, uma função que permite escolher o número do próximo ponto no Y , ela funciona através dos botões em volta do “Valor atual”, dessa forma ao clicar-se na linha abaixo do texto e escrever um valor e clicar no botão “mudar”, fará com que o valor do eixo Y mude para o digitado. Ao clicar nos botões “adicionar 10” ou “adicionar 1” ele adiciona a quantidade indicada ao próximo valor de Y baseado no valor atual. Por exemplo, ao clicar em “adicionar 10” ele vai do 0 para o 10 ou do 71 ao 81. A mesma coisa ocorre nos botões “tirar 1” e “tirar 10” só que subtraindo as respectivas quantidades desses botões. Tais funções facilitam o controle dos próximos valores do gráfico para um mais preciso.

Figura 4: Botões de adicionar e tirar
Opção de salvar:
O app também tem a opção de salvar, clicando nela se abre a tela de salvar, podendo salvar a imagem do gráfico como Png ou Jpeg. Abaixo uma imagem do gráfico feita durante os testes e salva pelo próprio app:

Figura 5: Gráfico salvo
Como o projeto foi feito:
O projeto foi criado em python, usando as seguintes bibliotecas:
- Matplotlib: É a biblioteca mais usada em Python para gerar gráficos. Ela foi a base para criar o gráfico que aparece no programa.
- PyQt5: É a biblioteca que serve para criar interfaces gráficas. Ela foi usada para criar toda a interface do aplicativo.
- Datetime : É a biblioteca que permite salvar como uma variável os dados do relógio interno do computador, podendo ser o mês, o dia a hora e outros. Ela foi usada para conseguir criar a opção de o eixo x de um ponto ser o exato horário que ele foi criado.
Além das bibliotecas foi usado o Qtdesigner, um aplicativo feito pelos desenvolvedores do PyQt5, ele simplifica a criação da interface, pois ao invés de criar tudo programando (programar a posição de cada botão ,a cor , tamanho e outras propriedades manualmente), nele é possível criar a interface só arrastando objetos, como botões, para a posição desejada e alterando parâmetros só digitando no teclado. Simplificando o processo e o tornando mais dinâmico, pois nele se pode visualizar a interface ao mesmo tempo em que se cria ela, além de ser mais rápido do que criar um código.
Experiência de como foi realizar projeto
O projeto foi realizado por um formando em automação industrial, que prefere não se identificar, durante o seu período de estágio na Develoop. A seguir o próprio descreve como foi criar o aplicativo em python:
“Quando iniciei o projeto, conhecia apenas o básico de Python e só tinha experiência com o básico do matplotlib, sem saber sobre as outras bibliotecas. A ideia original do projeto era apenas ser um gráfico que pudesse ser criado e modificado numa interface criada pelo pyqt5, com esse objetivo eu estudei sobre o pyqt5 e fiz a primeira versão. Ela já era controlada por um slider , mas a diferença é que toda vez que o gráfico tinha que atualizar, era salvo no computador a imagem dele e colocada na interface e precisava apertar um botão para o gráfico atualizar. Após essa versão passei a criar a interface no Qt Designer para ficar mais dinâmica de atualizar o app, e depois se veio a ideia do gráfico ser atualizado automaticamente em um tempo específico, que originalmente foi de um segundo. Essa versão o gráfico ainda era salvo como arquivo, e mesmo funcionando, eu achei que era ruim precisar modificar um arquivo do computador toda vez que o gráfico atualizava, assim fui atrás de um método que fizesse isso diretamente sem precisar salvar o arquivo, descobrindo FigureCanvas que é uma extensão do matplotlib que nele se consegue conectar diretamente o gráfico criado a interface do pyqt5. Depois dessa modificação eu tive a ideia de criar os botões que permitem ao usuário alterar a quantidade de pontos e o tempo. Depois criei os botões de parar e reiniciar e começar, e a opção de controlar o valor além do slider. A última mudança que eu fiz foi criar a opção de salvar.”
