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.
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.
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.
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).
Em seguida, deve-se clicar sobre o gráfico e definir um nome para o mesmo conforme a figura 5.
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.
O resultado desta seleção está apresentado na figura 7
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).
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
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.
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).
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.
Para facilitar, aqui está a linha de código para aqueles que quiserem copiar e modificar:
=OFFSET(Gráficos!$AB$2;0;0;COUNTA(Gráficos!$AB:$AB)-1;1)
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.
Para gravar uma Macro basta clicar no ícone localizado na região inferior da tela do Microsoft Excel:
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.
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:
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.
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:
Sub botão_pino2()
ActiveSheet.ChartObjects("GrafEmbarcados").Activate
ActiveChart.FullSeriesCollection(1).Select
Selection.Formula = "=SERIES(Gráficos!R1C29,emb.xlsm!Hora,emb.xlsm!PINO2,1)"
End Sub
O resultado obtido é exatamente o demonstrado na figura 18:
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.
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.
Sub botao_apagar()
Dim tabela1 As Range
Set tabela1 = Range("AA1").CurrentRegion
tabela1.Offset(1, 0).Resize(tabela1.Rows.Count - 1, tabela1.Columns.Count).Select
Selection.ClearContents
PreencherHistAux
Set tabela1 = Range("l1").CurrentRegion
tabela1.Offset(1, 0).Resize(tabela1.Rows.Count - 1, tabela1.Columns.Count).Select
Selection.ClearContents
PreencherHistOrig
End Sub
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.














Olá, gostaria de imprimir numa planilha do excel os dados coletados por arduino.
O software PLX-DAQ, que oferece essa função, não funciona no windows 10.
Quero que os dados do monitor serial apareça na planilha excel. Como posso criar esse macro?