Na aula de hoje, auashuashuasa, vamos aprender como linkar o onitor serial do arduino com o programa baseado em java processing.
Bom antes que me perguntem, pra que linkar o arduino a um programa se ele ja vem com o monitor serial embutido? A resposta é simples: INTERFACE GRÁFICA
A grande sacada do processing e que voce pode editar a interface deixando ela a seu gostos e modos, e assim, exibir graficos e estatísticas com base no que os sensores linkados ao arduino andam captando. Bem como também enviar comandos com o simples clique em imagens específicas e o arduino interpretar como ações, que é o caso ao qual irei demonstrar no tutorial de hoje.
Antes de mais nada, o que é processing?Bem processing é este bixao aqui:
Ele é um programa desenvolvido especialmente para ser linkado ao arduino e demais softwares voltados para eletronica e pode ser facilmente baixado de graça nesse link aqui
Escolha a sua versão, se é 32 ou 64 e seu sistema operacional, windows,linux, etc,etc.
E a partir dahe é so fazer o download e a descompactação, ele é programa portátil, logo não precisa instalar.
Como nem tudo é flores você precisara baixar plugins para que ele possa ser linkado ao arduino.
e é esse bixao aqui
Depois de descompactado ira aparecer na sua área de trabalho assim:
clicando na pasta, ira achar o seu executável:
Ao baixar essa pasta zipada(não tenha medo que não é virus)descompacte-a e coloque na pasta libraries do processing, que, automaticamente ao voce clicar em executar o processing pela primeira vez, irá criar uma pasta processing em documentos. veja
Feito isso estamos apenas em meio caminho andado, agora falta a outra metade ahuahsuahsua.
Vamos agora se familiarizar com o processing, como verão nas imagens a seguir, ele é bem parecido com o arduino. POssui 2 interfaces de comando, o void setup() e, em vez do arduino que é o void loop(), ele possui o void draw(). Trabalha bastante com eixo de coordenadas x,y. Não possui coordenadas negativas, a origem (0,0) fica no canto superior esquerdo e vai alternando as coordenadas para baixo e para a direita..
Agora vou colocar o código que voce ira usar tanto na IDE do arduino quanto na IDE do processing.
1° compile esse codigo na ide do arduino
----------------------------
_________________________
char valor;
int ledroxo = 12;
int ledlaranja = 13;
int ledcinza = 7;
int ledVerde = 8;
int ledAmarelo = 9;
int ledVermelho = 10;
void setup() {
// Definir LEDs como OUTPUTs
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVermelho, OUTPUT);
pinMode(ledcinza,OUTPUT);
pinMode(ledlaranja,OUTPUT);
pinMode(ledroxo,OUTPUT);
// Iniciar comunicacao serie
Serial.begin(9600);
}
void loop() {
if (Serial.available())
{
// Guardar valor lido e recebido do Processing
valor = Serial.read();
}
// Se o valor recebido for igual a 1, acender o LED verde
if (valor == '1')
{
digitalWrite(ledVerde, HIGH);
}
// Se o valor recebido for igual a 2, desligar o LED verde
else if (valor == '2')
{
digitalWrite(ledVerde, LOW);
}
// Se o valor recebido for igual a 3, acender o LED amarelo
else if (valor == '3')
{
digitalWrite(ledAmarelo, HIGH);
}
// Se o valor recebido for igual a 4, desligar o LED amarelo
else if (valor == '4')
{
digitalWrite(ledAmarelo, LOW);
}
// Se o valor recebido for igual a 5, ligar o LED vermelho
else if (valor == '5')
{
digitalWrite(ledVermelho, HIGH);
}
// Se o valor recebido for igual a 6, desligar o LED vermelho
else if (valor == '6')
{
digitalWrite(ledVermelho, LOW);
}
else if(valor=='7')
{
digitalWrite(ledcinza,HIGH);
}
else if (valor== '8')
{
digitalWrite(ledcinza,LOW);
}
else if (valor == '9')
{
digitalWrite(ledlaranja,HIGH);
}
else if (valor =='a')
{
digitalWrite(ledlaranja,LOW);
}
else if (valor=='b'){
digitalWrite(ledroxo,HIGH);}
else if(valor=='c'){
digitalWrite(ledroxo,LOW);}
}
-----------------------------------------------------
Depois salve esse código no processing:
(salve ele não o compile ainda)
----------------------------------
// Importar biblioteca comunicacao serie
import processing.serial.*;
// Criar objeto do tipo Serial chamado myPort
Serial myPort;
// Definir variaveis que mudam as cores dos botoes
int vermelho = 150;
int verde = 150;
int amarelo1 = 150;
int amarelo2 = 150;
int roxo=150;
int laranja=150;
int cinza=150;
PImage led;
void setup() {
led = loadImage("led.jpg");
// Abrir o porto de comunicação
myPort = new Serial(this,"com7", 9600);
// Criar uma janela com as dimensões 460x230 e preencher a preto
size(600, 600);
background(0);
// Nome da interface a letras brancas no fundo da janela
fill(100,90,140);
rect(70,510,300,30);
textSize(24);
textAlign(CENTER);
fill(255, 255, 255);
text("Eletronica e utilidades", 230, 530);
}
void draw() {
image(led,150,340);
// Criar um retângulo verde com texto a branco
fill(0, verde, 0);
rect(20, 20, 140, 140);
fill(255, 255, 255);
textSize(24);
textAlign(CENTER);
text("led1", 90, 95);
// Criar um retângulo amarelo com texto a preto
fill(amarelo1, amarelo2, 0);
rect(160, 20, 140, 140);
fill(0);
text("led2", 230, 95);
// Criar um retângulo vermelho com texto a branco
fill(vermelho, 0, 0);
rect(300, 20, 140, 140);
fill(255, 255, 255);
text("led3", 370, 95);
fill(180,roxo,160);
rect(20,180,140,140);
fill(255);
text("led4",90,260);
fill(130,10,laranja);
rect(160,180,140,140);
fill(255);
text("led5",230,260);
fill(cinza,90,30);
rect(300,180,140,140);
fill(255);
text("led6",360,260);
// Enviar informacao para o Arduino
// Premir botao verde
if (mousePressed && mouseX > 20 && mouseX < 180 && mouseY >200 && mouseY < 320)
{
// Desligar LED roxo
if (roxo == 255)
{
myPort.write("2");
}
// Ligar cinza verde
else
{
myPort.write("1");
}
}
if (mousePressed && mouseX > 170 && mouseX < 290 && mouseY > 190 && mouseY < 310)
{
// Desligar LED laranja
if (laranja == 255)
{
myPort.write("4");
}
else
{
myPort.write("3");
}
}
if (mousePressed && mouseX > 300 && mouseX < 440 && mouseY > 180 && mouseY < 320)
{
// Desligar LED cinza
if (cinza == 255)
{
myPort.write("6");
}
// Ligar cinza verde
else
{
myPort.write("5");
}
}
if (mousePressed && mouseX > 20 && mouseX < 160 && mouseY > 20 && mouseY < 160)
{
// Desligar LED verde
if (verde == 255)
{
myPort.write("8");
}
// Ligar LED verde
else
{
myPort.write("7");
}
}
// Premir botao amarelo
else if (mousePressed && mouseX > 160 && mouseX <
300 && mouseY > 20 && mouseY < 160)
{
// Desligar LED amarelo
if (amarelo1 == 255 && amarelo2 == 255)
{
myPort.write("a");
}
// Ligar LED amarelo
else
{
myPort.write("9");
}
}
// Premir botao vermelho
else if (mousePressed && mouseX > 300 && mouseX <
440 && mouseY > 20 && mouseY < 160)
{
// Desligar LED vermelho
if (vermelho == 255)
{
myPort.write("b");
}
// Ligar LED vermelho
else
{
myPort.write("c");
}
}
}
void mouseClicked() {
if (mouseX > 300 && mouseX < 440 && mouseY > 180 && mouseY < 320)
{
if (cinza == 150)
{
cinza= 255;
}
else
{
cinza = 150;
}
}
if (mouseX > 170 && mouseX < 290 && mouseY > 180 && mouseY < 320)
{
if (laranja == 150)
{
laranja= 255;
}
else
{
laranja = 150;
}
}
if (mouseX > 20 && mouseX < 160 && mouseY > 180 && mouseY < 320)
{
if (roxo == 150)
{
roxo= 255;
}
else
{
roxo = 150;
}
}
// Botao verde
if (mouseX > 20 && mouseX < 160 && mouseY > 20 && mouseY < 160)
{
if (verde == 150)
{
verde = 255;
}
else
{
verde = 150;
}
}
// Botao amarelo
if (mouseX > 160 && mouseX < 300 && mouseY > 20 && mouseY < 160)
{
if (amarelo1 == 150 && amarelo2 == 150)
{
amarelo1 = 255;
amarelo2 = 255;
}
else
{
amarelo1 = 150;
amarelo2 = 150;
}
}
// Botao vermelho
if (mouseX > 300 && mouseX < 440 && mouseY > 20 && mouseY < 160)
{
if (vermelho == 150)
{
vermelho = 255;
}
else
{
vermelho = 150;
}
}
}
---------------------------------------
É nessa hora que o bixo pega, provavelmente se voce fez tudo arrisca o que eu falei até agora seu código não funcionara, ahusahsuahusa. Mas não se preocupe, ele precisa ser *modelado* para funcionar.
Infelizmente esse tutorial ele não é do tipo control+c + control+v, precisa de um pouco de originalidade que vai de pc para pc. Primeiro voce tem que achar qual porta serial o seu arduino ttá conectado, no meu caso ele ta na com7, mas isso varia de pc para pc. O propio ide do arduino ira falar em qual porta ele tá.
Uma vez ciente disto, voce tera que alterar uma linha no código do processing que eu coloquei: Procure esta linha aqui:
myPort = new Serial(this,"com7", 9600); e altere a "com7" para a porta que voce esta usando,"com1","com2", sei lah
essa linha vai estar um pouco depois do void setup.
Depois voce tera que salvar uma imagem na pasta onde voce salvou o codigo do processing.
Salve essa imagem com o nome de led, led em minusculo, não salve em maiusculo por que senão não ira funcionar. Também não precisa salvar dentro de uma pasta, salve do lado onde esta o arquivo que você salvou aquele código:
Ficando assim oh:
Agora se voce fez tudo certim aparecerá assim na sua tela do processing:
E se voce clicar dentro de cada quadradinho ira mudar de cor bem como ira ativar um pulso no seu arduino, seja para acionar um led ou controlar um rele.
E em breve o video, ate a próxima pessoal.
E como prometido, eis o vídeo
Nenhum comentário:
Postar um comentário