Jan 15
De arduino para processing
Posted by anniec in tech on 01 15th, 2009| icon312 Comments »

Bem, esse é o meu primeiro post! Depois de longa espera, eu vim! :)

Bem, vou começar sem contextualizações, pra não perder tempo…

… O arduino era uma boa saída para um projeto que vinha desenvolvendo no laboratório de minha atual pesquisa (a gente fala sobre isso depois). Estava bem animada em aprender a usar o arduino – teríamos que bolar uma interação entre ele, um rfid reader e um celular. Enfim, estava tudo certo para implementarmos, até que dei de cara com um fato: eu estou trabalhando em um laboratório de design e, lá, o mais importante é a conceituação do produto – a implementação só chega se der tempo. E não há tempo!… Mas que tapa na cara! Nada de implementação…. :-(
Eu estava louca pra meter minha mão nesses trambolhos tecnológicos e não vou poder (não em tempo de trabalho nem com bolso alheio). Para o projeto, faremos protótipos de madeira, cenários com bonecos e mockup da aplicação em actionscript… Nada de implementação real. Nada feio, tudo bonito!Varias idéias muito legais pro mockup e apresentação do produto estão surgindo, though. A diversão continua! Pura dirversão :)
Mas voltando… Como não vai rolar no trabalho, decidi mexer em casa. Como não tenho um arduino ainda, comecei baixando o livro “Getting started with arduino” e dando uma explorada no site. O primeiro comentário é que eu NÃO SEI NADA de eletrônica, mas estou com boas vibrações a respeito da minha interação com a protoboard.

Foi ai que comecei a desvendar um mundo que não conhecia (só tinha ouvido dos meus colegas comparsas). A linguagem utilizada pelo Arduino é baseada em Wiring, uma versão bem simplificada de C. Pesquisando sobre Wiring, descobri que ela foi fruto da linguagem Processing, que, vinda primeiro, criou a IDE Processing (linguagem e IDE chamam-se Processing) e emprestou para Wiring. O IDE também é utilizado para desenvolver na linguagem do arduino.

Então foi assim que me foquei: decidi direcionar meus estudos para Processing, já que é a raiz disso tudo ai.
O ambiente é simples e intuitivo – é só baixar que já sabe usar. A linguagem, baseada em Java, é extremamente intuitiva. Eu comecei codando sem nem olhar na API – não sei se é porque é tão parecida com Java que eu já sabia que funçoes e atributos chamar, mas eu consegui descobrir a maioria.

(Alaninha, minha amiga, se a gente conhecesse Processing há 1 ano, nosso trabalho com moldes [essa é uma historia comprida que vou contar, com a ajuda dela, aqui mesmo] teria  sua complexidade e nível de estresse agregado diminuído em frações!)

Processing, como aponta o link, é uma linguagem voltada para o desenvolvimento gráfico, é extremamente visual, compacta, própria para quem quer desenvolver, contruir interações. O melhor, ela tem o grande desafio de tornar os próprios artistas e designers capazes de programar o visual e o interativo (assim como a linguagem Wiring também tem esse desafio).

Bem, pra encurtar o papo, deixando mais pra próxima (já foi demais pra primeiro post de apresentação, huh?), ai vai o applet (que, por sinal, exportei com 1 click – mas não consegui inserir aqui) da aplicação que fiz em 30 min, depois de conhecer o Processing por apenas também 30 minutos. Só pra não ter o que mostrar. :)

ps: como nao consegui colocar o applet aqui, ao clicar na imagem você ganha o .jar.

testando processing

código:

int oldMouseX = 0;
int oldMouseY = 0;

void drawPaintBuckets() {
PImage blue = loadImage(”paintbucket Blue copy.png”);
PImage green = loadImage(”paintbucket Green copy.png”);
PImage red = loadImage(”paintbucket Red copy.png”);

image(blue, 0, 0, 60, 110);
image(green, 0, 112, 60, 110);
image(red, 0, 224, 60, 110);
}

void setup() {
size(400, 400);
drawPaintBuckets();
}

void draw() {
if(!mousePressed) {
oldMouseX = mouseX;
oldMouseY = mouseY;
}
}

void mouseDragged() {
if(!(mouseX < 60 && mouseY < 334)) {
line(oldMouseX, oldMouseY, mouseX, mouseY);
oldMouseX = mouseX;
oldMouseY = mouseY;
}
}

void mousePressed(){
if(mouseY <= 110 && mouseX <= 60) stroke(0, 0, 255);
else if(mouseY <= 222 && mouseX <= 60) stroke(0, 255, 0);
else if(mouseY <= 334 && mouseX <= 60) stroke(255, 0, 0);
}

void mouseMoved(){
if(mouseX < 60 && mouseY < 334) {
cursor(HAND);
} else {
cursor(CROSS);
}
}