Microsoft Excel com Arduino – Primeiros passos

Visual Basic for Applications ou VBA consiste em uma ferramenta sob forma de linguagem de programação que pode ser usada em conjunto com os diversos programas existentes dentro do pacote Microsoft Office e também com alguns outros softwares externos, com o intuito de expandir as funcionalidades dos mesmos. No Microsoft Excel, por exemplo, este recurso é amplamente utilizado na criação de soluções automatizadas para manipulação de planilhas, oferecendo ao usuário maior facilidade na execução de procedimentos, utilização de recursos de análise de dados, entre outras aplicações mais avançadas. Neste tutorial, iremos adentrar o mundo das aplicações avançadas citadas, ensinando os primeiros passos necessários para que você consiga comandar a sua placa Arduino através do Microsoft Excel.

[toc]

kit robotica educacional com Arduino ESP ou Microbit


Mãos à obra – Estabelecendo a comunicação entre o Arduino Micro e o Microsoft Excel

Componentes necessários

Montando o projeto

 

Hardware utilizado com Arduino Micro.
Hardware utilizado.

Criando a interface do Microsoft Excel

Neste momento, iremos apresentar os passos necessários para que você consiga realizar o desenvolvimento básico de uma interface, a qual, irá conter os botões responsáveis pela manipulação da nossa placa Arduino. Apenas como uma observação, estamos utilizando o Microsoft Excel versão 2013, portanto, é possível que pequenas alterações devam ser feitas, caso você esteja utilizando uma outra versão deste software.

– Criando o botão de abertura da porta COM

O primeiro passo no desenvolvimento da interface citada consiste na criação de um botão e na adição de funcionalidade ao mesmo. Este botão será responsável por fazer com que a porta COM seja aberta, possibilitando portanto, a comunicação do Microsoft Excel com o nosso Arduino Micro.

Para realizar este procedimento você deverá selecionar a opção Inserir (insert) na aba de desenvolvimento e em seguida a opção Botão (Button).

Adicionando botões.
Adicionando botões.

 

Após o passo anterior, basta arrastar o cursor e criar um botão do tamanho desejado. Veja o resultado:

Botão de abertura da porta COM.

– Criando o botão de fechamento da porta COM

O procedimento de criação do botão responsável pelo fechamento da porta COM é idêntico ao realizado anteriormente, de modo que, a única diferença existente entre os dois está no código da Macro utilizada. No caso, a Macro em questão é a referente ao funcionamento do botão de fechamento da porta COM.

Botão de fechamento da porta COM.
Botão de fechamento da porta COM.

– Criando o botão de acionamento do Led de teste

Por último, iremos repetir o procedimento de criação para elaborar o botão que será utilizado para acender o led existente em nosso hardware. Neste botão, atribuiremos a Macro referente ao botão de acionamento do Led de teste.

Botão de acionamento do Led.
Botão de acionamento do Led.

 


Programando –  Microsoft Excel

Esse projeto consiste em duas partes distintas de programação: Uma referente à placa Arduino e outra referente ao Microsoft Excel. Começaremos explicando como fazer toda a programação do Microsoft Excel para em seguida mostrar o código utilizado em nosso Arduino.

– Atribuindo uma Macro ao botão de abertura da porta COM

Assim que o botão for criado, é possível adicionar uma Macro ao mesmo. Macros são rotinas que são disparadas de acordo com a ocorrência de algum. Neste tutorial vamos fazer com que uma porta COM seja aberta assim que ocorrer um clique no botão. Para realizarmos este procedimento basta clicar no elemento criado com o botão direito do mouse, escolher a opção Atribuir Macro (Assign Macro) e em seguida em Novo (New).

Atribuindo Macro ao botão de abertura da porta COM.
Atribuindo Macro ao botão de abertura da porta COM.

 

Neste momento aparecerá um ambiente de programação para o leitor. Note que o ambiente citado já traz duas linhas escritas, de modo que, a primeira delas contém a sentença Sub Button1_Click() e a segunda, End Sub. Para aqueles que nunca mexeram com o VBA, estas duas sentenças correspondem ao início e ao final de um bloco de ações que irão acontecer quando o botão for acionado.

Sub Button1_Click()
   .
   .
   .

End Sub

Entre as duas sentenças apresentadas, deve-se incluir o seguinte código:

Sub Button1_Click()
  
  ReturnValue = Shell("mode.com COM6 baud=9600 parity=n data=8 stop=2 to=off xon=off dtr=off rts=off")
  Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)
 
  Open "COM6" For Binary Access Read Write As #1
  
End Sub

– Atribuindo uma Macro ao botão de fechamento da porta COM (Button2)

 No caso deste botão, devemos inserir a Macro referente ao funcionamento do botão de fechamento da porta COM. O código em VBA da Macro em questão é o seguinte:

Sub Button2_Click()
  
  Close #1
 
End Sub

– Atribuindo uma macro no botão de acionamento do Led de teste (Button3)

Por último, iremos repetir o procedimento de inclusão de uma Macro em um botão. No entanto, desta vez, atribuiremos a Macro no botão de acionamento do Led de teste.

Sub Button3_Click()

Put #1, , "a"

End Sub

Programando – Arduino

char comando;
 
void setup() {
 
    Serial.begin(9600);
    pinMode(2,OUTPUT);
  
  }
 
void loop() {
 
    if (Serial.available()>0)
    {
        comando = Serial.read();
        
        switch (comando) 
        {
            case 'A':
                digitalWrite(2, HIGH);
            break;
  
    
        }
    }
}

Colocando para funcionar

Interface criada.
Interface criada.

Entendendo a fundo

Software – Microsoft Excel

– Código referente ao funcionamento do botão de abertura da porta COM (Button1)

Entre as linhas de código existentes no bloco referente ao funcionamento do botão de abertura da porta COM, inserimos primeiramente, uma linha de código para definir os parâmetros de comunicação da porta que será utilizada (neste caso, a COM6).

ReturnValue = Shell("mode.com COM6 baud=9600 parity=n data=8 stop=2 to=off xon=off dtr=off rts=off")

Posteriormente, utilizamos a função Application.Wait para determinar um tempo de espera de cerca de 2 segundos para que a função Open (que será apresentada a seguir) possa proceder com segurança na abertura da porta COM escolhida.

 Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)

Por fim, utilizamos a função Open para abrir a porta COM que foi configurada previamente. Além de abrir a porta em questão, esta função também nomeia a porta citada, de modo que, no resto do código, esta será referenciada por meio o nome dado neste momento. O nome em questão é #1.

Open "COM6" For Binary Access Read Write As #1

Veja como ficou o código referente à Macro do botão 1, na íntegra.

Sub Button1_Click()
  
  ReturnValue = Shell("mode.com COM6 baud=9600 parity=n data=8 stop=2 to=off xon=off dtr=off rts=off")
  Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)
 
  Open "COM6" For Binary Access Read Write As #1

End Sub

– Código referente ao funcionamento do botão de fechamento da porta COM (Button2)

O código em questão, possui uma única linha, que por sua vez, é responsável pelo fechamento da porta COM que foi aberta, no caso, a porta referenciada por #1.

Sub Button2_Click() 

   Close #1 

End Sub

– Código referente ao funcionamento do botão de acionamento do LED (Button3)

 

A macro que será atribuída a este botão, tem como única linha de código, uma sentença composta pela função Put. Neste trecho de código, determinamos que quando o botão for clicado, o Microsoft Excel deverá enviar o caractere através da porta serial.

Sub Button3_Click()

Put #1, , "A"

End Sub

Software – Arduino

– Declarando a variável que será utilizada

O primeiro passo na criação do código consiste na declaração da variável do tipo char, que por sua vez, será utilizada para armazenar a informação enviada pelo Microsoft Excel. Neste tutorial, chamaremos esta variável de comando_excel.

char comando_excel;

– Definindo as configurações iniciais

Em seguida, dentro da função setup(), utilizamos a sentença Serial.begin() para iniciarmos o modo de comunicação serial, o qual, será responsável por garantir a interação entre a placa Arduino UNO e o Microsoft Excel. Além disso, através da função pinMode(), determinamos o modo de operação do pino digital 2, de modo que, este atue como uma saída digital.

 void setup() {
 
    Serial.begin(9600);
    pinMode(2,OUTPUT);
  
  }

– Acionando o Arduino através do Microsoft Excel

Na função loop(), através da sentença Serial.available()verificamos se existe algum caractere proveniente do Microsoft Excel para ser lido e em caso afirmativo, utilizamos a sentença Serial.read() para ler o mesmo.

Após a leitura do primeiro caractere presente no buffer da porta de entrada serial, recorremos à estrutura switch/casede modo que, esta será responsável por verificar se o caractere recebido é a letra a, maiúscula ou minúscula. Caso o caractere em questão seja a letra A, o Arduino UNO deverá proporcionar nível alto (5V) na porta de saída digital 2.

void loop() {
 
    if (Serial.available()>0)
    {
        comando_excel = Serial.read();
        
        switch (comando) 
        {
            case 'A':
                digitalWrite(2,HIGH);
            break;
         }
   }
}


Considerações finais

Neste tutorial, demonstramos como você fazer para estabelecer uma comunicação entre a sua placa Arduino e o Microsoft Excel, esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.

 

Privacy Preference Center