gbm
Grafico con Processing
Tutorials -
Martedì 18 Maggio 2010 14:21
Scritto da gbm

Al workshop di domenica 16 maggio 2010 vari appassionati chiedevano come fare a rendere graficamente un dato acquisito da arduino, e poterlo rappresentare in un cartesiano. In questo tutorial vi mostrero' l' "Hello World" alla possibilità di interfaccia tra Processing e Arduino. In questo caso viene utilizzato per visualizzare il dato output di un Accelerometro Adx (solo uno dei 3 assi).

 

Come funziona


Nel nostro codice di Arduino chiederemo a ogni loop di printare una linea con il dato acquisito dall'accelerometro. In Processing inizizializiamo la seriale e cerchiamo tutto cio' che arriva dalla seriale, suddiviso da "/n", cioè da "a capo". Con questa semplice operazione è possibile far comunicare i due programmi. Chiaramente poi ci sono un paio di funzioni fondamentali che servono per ignorare gli eventuali buchi nella comunicazione (puo' capitare un po' di lag).

Ogni linea letta viene trasformata nel valore y di un punto. Grazie a questo sistema è possibile disegnare una curva, come potete vedere nel video, che rappresenta il movimento a cui è stato sottoposto l'accelerometro (o qualsiasi altro input chiaramente).

 

Il codice

import processing.serial.*;
 
 Serial myPort;        // La mia porta seriale
 int xPos = 0;         // Posizione orizzontale grafico
 
 void setup () {
 size(1000, 200);        
 println(Serial.list());
 myPort = new Serial(this, Serial.list()[0], 9600);
 myPort.bufferUntil('\n'); // buffer quando va a capo
 background(0);
 }
 
 
 void draw () {
 }
 
 void serialEvent (Serial myPort) {
 String inString = myPort.readStringUntil('\n');
 if (inString != null) {
 inString = trim(inString);
 float inByte = float(inString); 
 inByte = map(inByte, 0, 1023, 0, height);
  
 
 stroke(50,200,20);
 line(0, 100 , 1000, 100); // linea di 0
 point(xPos, 100 - inByte);//punto
 if (xPos >= width) { //se xPos >= larghezza 
   xPos = 0; 
   background(0); 
 } else {
      // incrementa posizione orizzonale
      xPos++;
    }
 
 }
 }
 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi