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:
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:
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:
0 comentários:
Postar um comentário