Seu Curso

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

Interface gráfica para o Arduino com Processing

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

Para ter uma noção desde o início do que é Processing acesse o tutorial Processing: o que é e para que serve? e Como realizar interação entre o Arduino e o Processing.

Bom , vamos lá! A ideia é criar uma interface gráfica simples usando Processing para manipular o Arduino, no caso o LED do pino 13.

Com o Processing baixado e funcionando, 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.*;
 
color selecionado = color(0);
color n_selecionado = color(255);
int ledPin = 13;
boolean ledOn = false;
 
Arduino arduino;
 
void setup() {
 size(300,100);
 println(Arduino.list());
 arduino = new Arduino(this, Arduino.list()[1], 57600);
 arduino.pinMode(ledPin, Arduino.OUTPUT);
 textSize(26);
}
 
void draw() {
 if(mouseX >= 10 && mouseX <= 100 &&
 mouseY >= 10 && mouseY <= 50) {
 fill(selecionado);
 rect(10,10,100,50);
 fill(n_selecionado);
 text("ON",10,10,100,50);
 } else {
 fill(n_selecionado);
 rect(10,10,100,50);
 fill(selecionado);
 text("ON",10,10,100,50);
 }
 
 if(mouseX >= 160 && mouseX <= 260 &&
 mouseY >= 10 && mouseY <= 50) {
 fill(selecionado);
 rect(160,10,100,50);
 fill(n_selecionado);
 text("OFF",160,10,260,50);
 } else {
 fill(n_selecionado);
 rect(160,10,100,50);
 fill(selecionado);
 text("OFF",160,10,260,50);
 }
 
 if(ledOn) arduino.digitalWrite(ledPin,Arduino.HIGH);
 else arduino.digitalWrite(ledPin,Arduino.LOW);
}
 
void mousePressed() {
 if (mouseX >= 10 && mouseX <= 100 &&
 mouseY >= 10 && mouseY <= 50) {
 ledOn = true;
 }
 if (mouseX >= 160 && mouseX <= 260 &&
 mouseY >= 10 && mouseY <= 50) {
 ledOn = false;
 }
}

Executando, com o Arduino conectado, temos a seguinte tela inciado:

Quando passar o mouse sobre o botão ON:

Quando passar o mouse sobre o botão OFF:

Se você clicar sobre o botão ON o LED do pino 13 do Arduino acenderá, quando clicar sobre o botão OFF ele apagará.

O que fizemos:

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

Com arduino.pinMode(ledPin, Arduino.OUTPUT); ajustamos que o pino ledPin (13) será utilizado para saída (OUTPUT).

Com fill(selecionado); e rect(10,10,100,50); criamos um retângulo nas coordenadas X,Y 10,10 com comprimento de 100 pixeis e a altura de 50 pixeis. O retângulo será preenchido com a cor determinada na função fill, onde a variável selecionado carrega a cor branca (255).

Com fill(n_selecionado); e  text("ON",10,10,100,50); escrevemos o texto ON na cor da variável n_selecionado (preto – 0) fixando que a área máxima a ser ocupada pelo texto é a mesma do retângulo que forma o botão.

As constantes mouseX e mouseY são predeterminadas e retorna a posição X e Y do mouse. Dessa forma fazemos condições IF que expressam: se o ponteiro do mouse estiver dentro do retângulo pinte-o de preto, caso contrário, pinte-o de branco.

A função void mousePressed() também é predeterminada pela linguagem e é executada apenas quando há um clique do mouse. Dessa forma fazemos condições IF que expressam: se ao clicar o mouse dentro da área dos retângulos deve-se setar a variável que determinará se o LED do Arduino deve estar ligado ou não.

 

Comentários  

 
+1 #6 ErroCayque 15-03-2014 01:48
Agora sim, troquei o 1 pelo 0 e usei essa outra biblioteca que cita nos comentários. Parabéns pelo projeto.
Citar
 
 
0 #5 ErroCayque 15-03-2014 01:42
Citando Fernando Bryan Frizzarin:
Cayque tente trocar o 1 por 0.

Não adiantou
Citar
 
 
0 #4 ErroFernando Bryan Frizzarin 15-03-2014 01:32
Cayque tente trocar o 1 por 0.
Citar
 
 
0 #3 ErroCayque 15-03-2014 01:25
Na hora compilar da o seguinte erro: ArrayIndexOutOf BoundsException : 1, na linha arduino = new Arduino(this, Arduino.list()[1], 57600);
Citar
 
 
+1 #2 AtualizaçãoMarcus Romano 14-02-2014 19:50
Esta biblioteca processing-arduino.zip do link só funcionará com a versão 1.5 do Processing. Quem utilizar uma versão mais recente do software, poderá baixar a versão certa da biblioteca no link abaixo.

http://playground.arduino.cc//Interfacing/Processing

No mais, parabéns pelo tutorial! Ajudou bastante!

Abraços!
Citar
 
 
0 #1 oiherminiojunior 26-12-2013 21:44
naumconsigo rodar
Citar
 

Adicionar comentário


Código de segurança
Atualizar

You are here: