Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

 

Um dos grandes baratos do Processing é poder interagir com o Arduino e gerar gráficos a partir do que está sendo lido através de sensores ou usar os gráficos para fazer uma interface mais amigável com o equipamento.

 

Eis a proposta aqui: usaremos um potenciômetro de 10K ohm para simular um sensor qualquer e a partir das leituras obtidas com ele em um Arduino iremos criar gráficos com o Processing.

 

Primeiro vamos montar a experiência com o Arduino:

 

Ligue o potenciômetro ao Arduino, os dois pinos laterais são ligados ao 5V e a GND do Arduino. O lado do 5V e do GND mais ou menos tanto faz, apenas o lado do GND será o zero do potenciômetro e o lado onde estiver ligado do 5V será o 1024 (leitura máxima analógica).

 

Ligue o pino central do potenciômetro ao pino analógico 0 (A0) do Arduino.

 

 

 

 

 

Agora vamos escrever e carregar o seguinte código ao Arduino:

 

{code}

void setup() {

Serial.begin(9600);

}

 

void loop() {

Serial.println(analogRead(A0));

delay(10);

}

{/code}

 

Com esse código lemos o pino analógico 0 (A0) do Arduino e escrevemos os valores lidos na porta serial.

 

Verifique o funcionamento via Serial Monitor, movimente o potenciômetro e veja os valores lidos:

 

 

 

 

Antes de continuar recomendo uma olhada em Como realizar interação entre o Arduino e o Processing e em Processing: o que é e para que serve?.

 

 

Vamos então ao código do Processing:

 

{code}

import processing.serial.*;

 

Serial serial;

 

void setup () {

size(800, 600);

serial = new Serial(this, "COM3", 9600);

serial.bufferUntil('\n');

}

 

void draw () {

}

 

void serialEvent (Serial myPort) {

String leitura = serial.readStringUntil('\n');

float valor = float(trim(leitura));

background(color(255));

ellipse (width/2,height/2,valor,valor);

}

{/code}

 

Com esse código lemos a entrada de dados pela porta serial coletando os números enviados pelo Arduino e usamos esses números para determinar o tamanho do círculo a ser desenhado.

 

Com serial = new Serial(this, "COM3", 9600); determinamos que a porta serial a ser utilizada é a COM3 (verifique em qual seu Arduino está conectado) e a taxa de transmissão em 9600bps.

 

Com serial.bufferUntil('\n'); aguardamos que seja recebido um ENTER (caractere \n) para dar continuidade ao programa.

 

Nada é feito na função draw() tudo acontece na função predefinida serialEvent() que é chamada apenas quando há um evento pela interface serial, como parâmetro essa função recebe qual porta serial deve monitorar.

 

Em String leitura = serial.readStringUntil('\n'); concatenamos todos os caracteres recebidos pela porta serial na variável até que o caractere recebido seja um ENTER (próxima linha);

 

Com float valor = float(trim(leitura)); convertemos a string recebida pela porta serial em um número do tipo float.

 

Depois é só desenhar a elipse com o tamanho determinado pelo número enviado pelo Arduino. Usamos as constantes width que retorna o comprimento da janela e width que retorna a altura, com elas determinamos o meio da tela como centro para a elipse.

Execute e mova o potenciômetro ligado ao Arduino:

 

 

 

 

{youtube}h-4vNAJW6LE{/youtube}