sexta-feira, 7 de agosto de 2015

Interação Arduino + Potenciômetro + Processing

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:
void setup() {
 Serial.begin(9600);
}
 
void loop() {
 Serial.println(analogRead(A0));
 delay(10);
}
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:


Vamos então ao código do Processing:
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); 
}
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:


← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário