Manipulando as portas de saída digital do Arduino com Excel

Em nosso tutorial anterior, apresentamos os procedimentos necessários para que você pudesse estabelecer uma conexão entre a sua placa Arduino e o Microsoft Excel. Neste tutorial, vamos prosseguir com este assunto, ensinando a você como devemos proceder para acionar as saídas digitais do seu Arduino (utilizando VBA), no entanto, com mais detalhes.

[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

 

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.

Antes de prosseguirmos, devemos clicar com o botão direito do mouse sobre o elemento criado e em seguida renomeá-lo para Abrir porta COM.

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 que será utilizada. Neste 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.

– Criando o botão de acionamento do Led

Em seguida, 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.

Botão de acionamento do Led.

– Criando o botão de desligamento do Led

Por fim, criaremos o botão para desligar o led citado anteriormente. Neste botão, atribuiremos a Macro referente ao botão de desligamento do Led.

Botão de desligamento do Led.

 


Programando – Código do 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
  Range("a1") = 1 
  
End Sub

– Código referente ao funcionamento do 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
  Range("a1") = 0
 
End Sub

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

Em seguida, 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.

Sub Button3_Click()

If Range("a1") = 0 Then
 
MsgBox "Abra a porta COM"

ElseIf range("a1) = 1 Then

Put #1, , "A"

End If

End Sub

– Código referente ao funcionamento do botão de desligamento do LED (Button4)

Por último, atribuiremos a Macro adequada para o funcionamento do botão de desligamento do led.

Sub Button4_Click()

If Range("a1") = 0 Then
 
MsgBox "Abra a porta COM"

ElseIf range("a1") = 1 Then

Put #1, , "a"

End If

End Sub

Programando – Código do Arduino Micro

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;
  
            case 'a':
                digitalWrite(2,LOW);
            break;
         }
   }
}

Colocando para funcionar

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

Após a abertura da porta, utilizamos uma sentença para colocar o número 1 na célula A1. Este elemento servirá para criarmos um controle responsável por permitir a manipulação da porta de saída digital somente se a porta COM tiver sido aberta.

Range("a1") = 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
  Range("a1") = 1 

End Sub

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

O código em questão, irá possuir duas linhas, onde, a primeira delas é responsável pelo fechamento da porta COM que foi aberta, no caso, a porta referenciada por #1. A segunda linha do código em questão possui uma a função de inserir o número 0 (zero) na célula A1.

Sub Button2_Click() 

   Close #1 
   Range("a1") = 0

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 possui duas estruturas condicionais, em que, a primeira delas, verifica se o conteúdo da célula A1 é o número 0 (zero), ou seja, verifica se a porta COM está fechada, de modo que, caso esta verificação proceda, o Microsoft Excel deverá exibir uma janela de alerta para que o usuário abra a porta COM antes de manipular a porta de saída digital D2.

Em seguida, caso a condição anterior não seja satisfeita, verificamos se a célula A1 possui o número 1 como conteúdo (sinalizando que a porta COM foi aberta). Em caso positivo, enviamos a letra A maiúscula através da porta serial.

Sub Button3_Click()

If Range("a1") = 0 Then
 
  MsgBox "Abra a porta COM"

ElseIf range("a1") = 1 Then

  Put #1, , "A"

End If

End Sub

– Código referente ao funcionamento do botão de desligamento do led (Button3)

 

Assim como a macro que foi atribuída ao botão de acionamento, a macro presente neste item também possui duas estruturas condicionais, em que, a primeira delas, verifica se o conteúdo da célula A1 é o número 0 (zero), ou seja, verifica se a porta COM está fechada e a segunda, se a mesma está aberta. A diferença entre este caso e o anterior é que caso a porta COM esteja aberta, o Microsoft Excel irá enviar o caractere a (minúsculo) através da porta Serial.

Sub Button4_Click()

If Range("a1") = 0 Then
 
  MsgBox "Abra a porta COM"

ElseIf range("a1") = 1 Then

  Put #1, , "a"

End If

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. Em contrapartida, caso o caractere em questão seja a letra a, a nossa placa Arduino deverá colocar nível baixo no terminal da porta D2.

 

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


Considerações finais

Neste tutorial, demonstramos como você fazer para conseguir manipular as portas de saída digital da sua placa Arduino através do 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