Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Como realizar interação entre o Arduino e o Processing

Imprimir
Avaliação do Usuário: / 30
PiorMelhor 

Processing é uma linguagem e um ambiente de desenvolvimento open-source que permite escrever programas para representação gráfica, basicamente. Você pode ter uma ideia melhor do que é o Processing em http://seucurso.com.br/index.php?option=com_content&view=article&id=261:processing-o-que-e-e-para-que-serve&catid=906:diversos&Itemid=70

É possível integrar o Arduino com o Processing, ou seja, para que possamos desenvolver no Processing aplicações, especialmente com saídas gráficas, capazes de controlar o comportamento do Arduino e ler dados por ele gerados através de sensores. Para que tudo isso seja possível é preciso seguir alguns passos na criação do projeto, que são mostrados abaixo.

Antes de qualquer coisa, para que as funcionalidades de comunicação serial funcionem é necessário, mesmo em sistemas operacionais 64-bit, o uso do ambiente do Processing na versão 32-bit. Caso esteja usando a versão 64-bit a comunicação serial não funcionará e você terá sempre o erro “processing serial does not run in 64-bit mode”. Lembre-se ainda de utilizar sempre a última versão estável do Processing e não versões betas.

Mãos-a-obra!

Faça download da biblioteca processing-arduino que pode ser encontrada em http://playground.arduino.cc/uploads/Interfacing/processing-arduino.zip e também uma cópia em http://www.seucurso.com.br/downloads/processing-arduino.zip

Descompacte o arquivo baixado, você terá uma pasta chamada arduino, copie-a (ou mova) para dentro da pasta libraries do Sketchbook do Processing, que normalmente fica dentro da pasta Meus Documentos sob o nome Processing.

Antes de continuar será necessário enviar para o Arduino um firmware que permita a comunicação entre o Processing e o hardware Arduino. Ao firmware que faz essa tarefa é dado o nome Firmata.

Para fazermos nosso primeiro teste abra o ambiente Arduino e abra o exemplo StandardFirmata que está no menu File > Examples > Firmata > StandardFirmata

Faça upload desse Firmata para o Arduino:

Isso fará com que seja carregado no Arduino um Firmata genérico que permitirá que controlemos o Arduino através do Processing. Com um pouco de estudo é possível criar Firmata personalizados para aplicações específicas.

Ok, o Arduino está preparado para lidar com o Processing a partir do Firmata padrão fornecido com o próprio ambiente, agora abra o Processing e vamos tentar o seguinte código:

import processing.serial.*;
import cc.arduino.*;
 
Arduino arduino;
int ledPin = 13;
 
void setup()
{
 println(Arduino.list());
 arduino = new Arduino(this, Arduino.list()[1], 57600);
 arduino.pinMode(ledPin, Arduino.OUTPUT);
}
 
void draw()
{
 arduino.digitalWrite(ledPin, Arduino.HIGH);
 delay(1000);
 arduino.digitalWrite(ledPin, Arduino.LOW);
 delay(1000);
}

Esse programa acenderá o LED do pino 13 por um segundo, em seguida fará com que ele fique desligado por mais um segundo, repetindo isso infinitamente.

O que fizemos:

Com Arduino arduino; criamos um objeto do tipo Arduino chamado arduino. Esse objeto contém todos os métodos de manipulação do hardware Arduino.

Com println(Arduino.list()); fazemos com que o programa mostre as portas seriais disponíveis e qual índice usar no próximo comando.

Com arduino = new Arduino(this, Arduino.list()[1], 57600); inicializamos o objeto arduino com comunicação serial na velocidade de 57.600bps.

Os parâmetros são:

Arduino(parent, name, rate);

Onde, parent é o programa de onde está sendo chamado, normalmente é a palavra this. name é o nome do dispositivo serial a ser utilizado, você pode usar Arduino.list() para mostrar todos, caso haja mais de um. Por fim, rate é a velocidade de comunicação serial.

Com arduino.pinMode(ledPin, Arduino.OUTPUT); setamos o ledPin (13) como output.

Com arduino.digitalWrite(ledPin, Arduino.HIGH); escrevemos HIGH para o ledPin (13).

Executando teremos a janela do Processing abaixo e o LED do pino 13 piscando infinitamente:

 

Com esse exemplo básico é possível ter uma noção da integração do Arduino e o Processing, mas saiba que isso é só a primeira gota nesse oceano, logo postarei mais tutoriais.

 

Comentários  

 
+1 #9 Erro na linha 10Clodoaldo 27-11-2015 10:02
Olá!
Estou iniciando com arduino e processing e estou tendo o seguinte errro na linha:
arduino = new Arduino(this, Arduino.list()[1], 57600);

ArrayIndexOutOf BoundsException : 1

e no error:

" Type String[] of the last argument to method println(Object...) doesn't exactly match the vararg parameter type. Cast to Object[] to confirm the non-varargs invocation, or pass individual arguments of type Object for a varargs invocation. Type String[] of the last argument to method println(Object...) doesn't exactly match the vararg parameter type. Cast to Object[] to confirm the non-varargs invocation, or pass individual arguments of type Object for a varargs invocation. "

grato pela ajuda!
Citar
 
 
0 #8 Uno Nao Com3 BusyGeraldo Majela 10-05-2015 20:38
parabéns pelo turotiral, muito bom. utilizei e funcionou bem. Desliguei o Uno e guardei , dia seguinte pc nao reconhecia ele pela USB. Esse firmata pode ter feito isso?
Citar
 
 
0 #7 teste realizadoirupe 17-12-2013 20:44
Ola, denovo, entao fiz o teste do potenciometro e funcionou legal, o problema mesmo é qndo tento enviar dados pelo processing mesmo, testei tambem as sketches de exemplo da biblioteca arduino e tambem a unica coisa q acontece é o pino rx piscando.
aah to usando a versao mais recente do processing, nao sei se isso muda alguma coisa, mas no teste do potenciometro tive q alterar uma das linhas de comando. Obrigado mesmo pela atençao!!!
Citar
 
 
+1 #6 ProcessingFernando Bryan Frizzarin 17-12-2013 19:48
Citando irupe:
Olá, bom, antes de tudo, muito bom seu post!! entao tentei fazer a ligaçao do arduino com o processing, mas estou tendo problemas com a comunicação. Quando rodo o programa do processing tudo parece normal mas o programa em si, nao roda no arduino, a unica coisa q ocorre é q ela fica piscando o led rx.
Gostaria de saber prq isso ocorre, minha placa é um arduino severino....desde ja agradeço!!!


Irupe, tente dar uma olhada em http://www.seucurso.com.br/index.php?option=com_content&view=article&id=267:interacao-arduino-potenciometro-processing&catid=901:arduino&Itemid=65 só para termos certeza que esta tudo ok com seu Severino.
Citar
 
 
+1 #5 problemasirupe 17-12-2013 19:40
Olá, bom, antes de tudo, muito bom seu post!! entao tentei fazer a ligaçao do arduino com o processing, mas estou tendo problemas com a comunicação. Quando rodo o programa do processing tudo parece normal mas o programa em si, nao roda no arduino, a unica coisa q ocorre é q ela fica piscando o led rx.
Gostaria de saber prq isso ocorre, minha placa é um arduino severino....desde ja agradeço!!!
Citar
 
 
+2 #4 Processing remotoFernando Bryan Frizzarin 11-12-2013 18:59
Citando Patricia Fonseca:
Fernando, parabéns pelo artigo! Gostei da sua colaboração, realmente muito fácil de entender e executar o tutorial! Muito bom! Agora tenho a seguinte dúvida: após feito uma aplicação com Processing + Arduino, como funciona na implantação? POr exemplo, criei um sistema que captura consumo de energia com um sensor acoplado ao arduino e tenho de enviar pela rede, esse programa do processing fica rodando em um servidor? Não tenho noção de como funciona essa parte, poderia ajudar?


Patricia, obrigado pelo elogio.

O processing pode até ficar em um servidor, ou seja, uma máquina conectada ao Arduino, por exemplo, e recebendo os dados. Mas para exibir esses dados em um com[censored]do r remoto você terá que trabalhar um jeito de fazer com que essa informação seja enviada e processada. Não creio ser muito difícil, aliás já tive umas ideias de como fazer isso da maneira mais simples possível com diretórios compartilhados e acesso à arquivos textos.
Citar
 
 
+3 #3 Implantação da aplicaçãoPatricia Fonseca 11-12-2013 18:35
Fernando, parabéns pelo artigo! Gostei da sua colaboração, realmente muito fácil de entender e executar o tutorial! Muito bom! Agora tenho a seguinte dúvida: após feito uma aplicação com Processing + Arduino, como funciona na implantação? POr exemplo, criei um sistema que captura consumo de energia com um sensor acoplado ao arduino e tenho de enviar pela rede, esse programa do processing fica rodando em um servidor? Não tenho noção de como funciona essa parte, poderia ajudar?
Citar
 
 
+2 #2 Troque por zero!Hugo 07-12-2013 20:44
Citando José Carlos:
Boa noite!

Parabéns pelo tutorial, bastante explicativo e prático! Porém está dando erro nesta linha >> arduino = new Arduino(this, Arduino.list()[1], 57600); dá o erro IllegalAccessEr ror:...

Desde já agradeço!!

Citando José Carlos:
Boa noite!

Parabéns pelo tutorial, bastante explicativo e prático! Porém está dando erro nesta linha >> arduino = new Arduino(this, Arduino.list()[1], 57600); dá o erro IllegalAccessEr ror:...

Desde já agradeço!!


Altere o valor "[1]" para "[0]"....
Citar
 
 
+8 #1 TentandoJosé Carlos 11-07-2013 22:46
Boa noite!

Parabéns pelo tutorial, bastante explicativo e prático! Porém está dando erro nesta linha >> arduino = new Arduino(this, Arduino.list()[1], 57600); dá o erro IllegalAccessEr ror:...

Desde já agradeço!!
Citar
 

Adicionar comentário


Código de segurança
Atualizar

You are here: