Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

 

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:

 

{code}

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;

}

}

{/code}

 

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.