Microsoft Excel com Arduino – Primeiros passos
O 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]
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).
Após o passo anterior, basta arrastar o cursor e criar um botão do tamanho desejado. Veja o resultado:
– 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.
– 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.
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).
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
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 a 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/case, de 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.
7 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
BOM TRABALHO, me diga posso fazer a mesma coisa em vez de rs232 , chamar a rede interna ou Bluetooth ?
Como eu faço para mandar mensagem de um leitor RFID para um excel que está em um pc a alguns metros de distância. E como faço para gravar informações nas tegs?
bonjour de FRANCE
meme que je ne comprends pas l’espagnol, cela fonctionne
simple mais efficace
à la prochaine
Como posso colocar os comandos dos LED no IF do VBA?
Se possível, destinado a uso com Windows 10 64bits. Grato
Nunca vi uma explicação mais simples e ao mesmo tempo detalhada. Parabéns. Vc tem um exemplo para ler em uma célula do Excel o que vem do Arduino (Serial.print) ?
Muito boa a explicação.