Criação de gráficos para o histórico de dados do Arduino no Excel utilizando VBA

Qual é o objetivo deste artigo?

 

No artigo anterior foi possível apresentar para o leitor uma ideia de como elaborar um histórico de dados cujo objetivo consiste em armazenar os estados de todas as saídas digitais do Arduino UNO em um determinado instante.

 

Neste material, será dada uma espécie de continuação do conteúdo anterior, onde será abordada uma maneira de representar os estados de uma determinada saída ao longo do tempo por meio de um gráfico, que por sua vez, apresentará a variação da mesma entre os níveis alto e baixo.  

 

Após a leitura deste o conteúdo e do anterior, o leitor poderá obter um resultado semelhante ao apresentado na figura 1.

 

Criação de gráficos - Resultado esperado.
Figura 1 - Resultado esperado.

 

 

Manipulando os dados para plotar

 

O primeiro passo para plotar um gráfico consiste em tratar os dados que serão utilizados de modo que seja possível representá-los graficamente, portanto, deve-se realizar algumas alterações nas informações existentes para que o Microsoft Excel entenda o que fazer com as mesmas. 

 

Desta maneira, a alteração citada consiste em converter os estados das saídas que estão representados por HIGH e LOW nos números 1 e 0 respectivamente. Um dos caminhos para realizar este procedimento é criar uma coluna auxiliar e preenche-la de maneira idêntica à realizada no painel de estados (caso o leitor tenha dúvida nesta parte, consulte o nosso primeiro artigo), inclusive no mesmo momento, porém com zeros e uns.

 

Painel de estados e coluna auxiliar.
Figura 2 - Painel de estados e coluna auxiliar.

 

Em seguida, deve-se criar um histórico de dados auxiliar (na planilha Gráficos), da mesma maneira que o histórico apresentado no artigo anterior, no entanto, este será utilizado somente para a criação dos gráficos.

 

Histórico de dados auxiliar.
Figura 3 - Histórico de dados auxiliar.

 

Antes de partir para o objetivo proposto, deve-se compreender como realizar a criação de um gráfico. Imagine que deseja-se plotar um gráfico contendo o comportamento do pino 2 nos dois momentos diferentes apresentados figura 3.

 

Uma das maneiras de realizar este procedimento consiste em selecionar na guia Inserir (Insert), a opção de Gráfico de dispersão (Scatter Chart).

 

Criação de gráfico de dispersão.
Figura 4 - Criação de gráfico de dispersão.

 

Em seguida, deve-se clicar sobre o gráfico e definir um nome para o mesmo conforme a figura 5.

 

Definição do nome para o gráfico.
Figura 5 - Definição do nome para o gráfico.

 

Para selecionar os dados basta clicar com o botão direito sobre o gráfico e em seguida na opção selecionar data (select data). Neste momento será aberta uma janela onde o usuário deve especificar onde estarão os dados para compor o gráfico desejado.

 

A especificação dos mesmos deve ser feita da seguinte forma: Primeiramente seleciona-se a coluna cujo cabeçalho contém o campo Hora, digita-se ";" e em seguida seleciona-se a coluna cujo cabeçalho contém o elemento PINO 2.

 

Seleção dos dados.
Figura 6 - Seleção dos dados.

 

 O resultado desta seleção está apresentado na figura 7

Plotando pontos no gráfico.
Figura 7 - Plotando pontos no gráfico.

 

Note que em um primeiro momento, este gráfico mostra apenas os valores dos estados nos seus respectivos instantes. Observe o que acontece quando os dois pontos são ligados por uma linha (para fazer isto basta clicar com o botão direito sobre os dados e escolher a cor desejada de linha).

 

Inserção de uma linha entre os pontos plotados.
Figura 8 - Inserção de uma linha entre os pontos plotados.

 

Na figura 8 pode-se perceber que esta não é a melhor maneira de representar o estado de uma saída digital, pois entende-se a partir do mesmo, que a saída em questão apresenta valores diferentes de 0 e 1 ao longo do tempo.

 

Observe na figura 6 que em um primeiro momento o estado da saída digital do pino 2 é 0, no entanto, em um segundo momento, a mesma saída apresenta nível lógico alto. Por este motivo, o gráfico é plotado como uma linha inclinada ascendente (neste caso).

 

Para corrigir este impasse deve-se preencher o histórico de dados auxiliar de uma maneira diferente da utilizada para preencher o histórico de dados original. O método utilizado para preencher o histórico de dados auxiliar consiste em preencher duas linhas para uma única atualização, conforme apresentado na figura abaixo

 

Histórico auxiliar com a linha extra
Figura 9 - Histórico auxiliar com a linha extra

 

Por meio deste procedimento considera-se que a saída digital do pino 2 assume os 2 valores possíveis no momento da transição, fazendo com que seja plotada uma linha horizontal entre os pontos que representam o estado da saída no primeiro momento e no momento da transição (ou seja, mantem-se o primeiro estado até o momento exato da ocorrência do segundo), onde então será plotada uma linha vertical para cima, mostrando que o nível lógico alto foi atingido.

 

Gráfico demonstrando exatamente os níveis lógicos
Figura 10 - Gráfico demonstrando exatamente os níveis lógicos

 

Observe que para gerar este gráfico, assim como o anterior, foi necessário selecionar manualmente os dados a serem utilizados (já que uma nova linha foi incluída entre as que continham os dados desejados). Logo, deve-se desenvolver uma maneira para que o Microsoft Excel consiga selecionar os dados corretamente e de maneira automática, isto é, independente do tamanho da tabela existente no histórico auxiliar.

 

Para fazer com que o Microsoft Excel trabalhe da maneira citada anteriormente, deve-se criar intervalos dinâmicos, os quais serão inseridos no gráfico, automatizando o processo de elaboração do conteúdo informativo visual.

 

Seguindo a linha do exemplo que está sendo tratado, primeiramente, elabora-se o intervalo dinâmico para a coluna onde está inserido o campo Hora. Para realizar este procedimento deve-se acessar a aba fórmulas e selecionar a opção definir nome (Define Name).

 

Criação dos intervalos dinâmicos
Figura 11 - Criação dos intervalos dinâmicos

 

Ao clicar no item citado, será aberta uma janela onde o leitor deve inserir um nome para o respectivo intervalo dinâmico e também a fórmula que será utilizada para defini-lo. Na figura abaixo vale a pena ressaltar que os itens demarcados em vermelho consistem no nome da planilha em que está a tabela que contém os dados para a criação dos intervalos dinâmicos. Já os itens demarcados em verde constituem o ponto de partida do intervalo dinâmico (repare que neste caso, este ponto de partida é a primeira informação numérica de tempo, ou seja, é a célula abaixo do campo Hora) e os itens demarcados em azul selecionam a coluna inteira, para que as demais funções encontrem o último elemento escrito desta coluna automaticamente.

 

Definição dos intervalos dinâmicos
Figura 12 - Definição dos intervalos dinâmicos

 

 Para facilitar, aqui está a linha de código para aqueles que quiserem copiar e modificar:

 

 

Em seguida, deve-se realizar o mesmo procedimento para a criação do intervalo dinâmico referente ao estado da saída digital do pino 2.

 

Para finalizar este artigo basta fazer com que o gráfico possa ser criado através do clique de um botão. O primeiro passo para a criação desse mecanismo consiste em gravar uma macro cujo principio de funcionamento corresponde à modificação dos dados utilizados para plotar as informações.

 

Observe atentamente o que acontece quando seleciona-se os dados plotados no gráfico da figura 13. Perceba que a região demarcada contém a série de dados utilizada para elaborar a imagem plotada no gráfico, a ideia é elaborar uma macro para modificar esta série.

 

Série de dados
Figura 13 - Série de dados

 

Para gravar uma Macro basta clicar no ícone localizado na região inferior da tela do Microsoft Excel:

 

Gravar macro
Figura 14 - Gravar macro

 

A macro consiste na gravação de uma sequência de atos efetuados pelo usuário, de forma que, após a finalização da gravação, torna-se possível reproduzir estes mesmos procedimentos, porém, de maneira automática. Após clicar no ícone apresentado na figura anterior, basta preencher as informações (opcionais, exceto o nome) e começar a gravação pressionando o botão OK.

 

Começando a gravação da macro.
Figura 15 - Começando a gravação da macro.

 

Neste momento, tudo que for realizado pelo usuário será gravado pelo Microsoft Excel, portanto, o usuário vai realizar as seguintes ações:

  • Clicar no Gráfico;
  • Clicar nos dados contidos no mesmo;
  • Alterar a série da seguinte maneira:

 

Alterar série de dados
Figura 16 - Alterar série de dados

 

Após a realização destes procedimentos, deve-se clicar no mesmo botão acionado para iniciar a gravação e então finaliza-la.

 

Parando a gravação da macro
Figura 17 - Parando a gravação da macro

 

Por fim, deve-se criar um botão e associar a macro recém-criada ao mesmo (caso o leitor tenha dúvida em como realizar este procedimento, favor consultar o primeiro artigo desta série). A intenção desta associação consiste em fazer com que o gráfico apresente o comportamento da saída digital do pino 2 sempre que o botão em questão for acionado.

 

O código em VBA do botão citado deve ser semelhante a este:

 

 

O resultado obtido é exatamente o demonstrado na figura 18:

 

Gráfico
Figura 18 - Gráfico

 

Para apresentar o comportamento de todos os pinos individualmente, deve-se repetir o procedimento apresentado, criando macros, botões e associando os mesmos de acordo com o número de saídas que o leitor desejar.

 

Painel de escolha do gráfico desejado
Figura 19 - Painel de escolha do gráfico desejado

 

Como dito anteriormente, as informações do histórico são atualizadas sempre houver alteração no estado de uma das saídas, no entanto, percebe-se que, caso estas não sofram nenhum tipo de alteração, o histórico ficará defasado no tempo, bem como os dados dos gráficos. Portanto, uma maneira de resolver este impasse, consiste em criar um botão que adiciona apenas uma linha contendo os estados atuais das saídas tanto no histórico de dados original quando no auxiliar.

 

Para encerrar este conteúdo, note que na figura anterior também existe um botão para limpar os dois históricos (original e auxiliar). Além de cumprir esta função, o botão em questão ainda realiza o registro da primeira linha com os estados atuais para que os históricos possuam um ponto de partida.

 

Este procedimento pode ser realizado criando-se o botão (como já apresentado) e inserindo no mesmo o seguinte código em VBA.

 

 

Este código começa com a declaração da variável tabela1 e em seguida esta é associada a célula AA1 (esta é a célula onde está localizado o campo Data no histórico auxiliar). Posteriormente, na próxima linha de códigos seleciona-se a célula imediatamente abaixo do campo Data e a partir da mesma seleciona-se os demais dados da tabela (deixando somente o cabeçalho fora da seleção) e por fim, a função Selection.ClearContents() é a responsável por apagar toda a região selecionada. Observe que após estes procedimentos, chama-se a função para preenchimento do histórico auxiliar.

 

A mesma coisa deve ser realizada para o histórico de dados original, no entanto, após a exclusão dos dados já inseridos, chama-se a função adequada para a escrita da primeira linha do mesmo.

 

Outros artigos da série

<< Histórico de dados de acionamento do Arduino no Excel utilizando VBAAcionando as saídas do Arduino com PWM utilizando VBA no excel >>
Sou engenheiro eletricista graduado com ênfase em Controle e Automação pela Universidade Federal do Espírito Santo - UFES e Técnico em Eletrotécnica pelo Instituto Federal do Espírito Santo - IFES. Me interesso por todas as vertentes existentes dentro da Engenharia Elétrica, no entanto, as áreas relacionadas à automação e instrumentação industrial possuem um significado especial para mim, assim como a Engenharia de Manutenção que na minha opinião é um setor fascinante.

Deixe um comentário

Seja o Primeiro a Comentar!

Notificar
avatar
 
wpDiscuz