non ho trovandolo in rete, la parte processing te la ho preparata...molto scarna e se vuoi migliorabile.
per la parte arduino provaci, non so neanche io se così può funzionare
import processing.serial.*;
Serial port;
int spos =0;
int spos2 =180;
int spos3;
int muovoSX;
int muovoDX = 360;
void setup()
{
size(720, 720);
println(Serial.list());
port = new Serial(this, Serial.list()[5], 9600);
delay (2000);
}
void draw()
{
background(255); //sfondo bianco
textSize (20); //dimensione testo
strokeWeight (5); //spessore linea
fill (0); //colore nero per testo
text (spos, 180, 400); //text (testo valori (oppure "testo"),coordinate x,coordinate y)
text (spos2-180, 540, 400); //text (testo valori (oppure "testo"),coordinate x,coordinate y)
rect (0, 450, 720, 50);// rettangolo nero
fill( 255, 0, 0); //colore rosso
rect (360, 450, 10, 50); //piccolo rettangolo divisione
rect (muovoDX, 450, 10, 50);// piccolo rettangolo a dx che si muove con il mouse
rect (muovoSX, 450, 10, 50); // piccolo rettangolo a sx che si muove con il mouse
spos3 =spos2-180; //la parte a sx il mouse va da 360 fino a 720...devo togliere 180 per calibrare
if (mouseX > 0 && mouseX < 360 && mouseY > 450 && mouseY < 500 && mousePressed) { //se clicco e muovo all'interno del rettangolo nero a dx
muovoSX= mouseX; //muovosx fa quello che fa il mousex
spos = mouseX/2;//divido mousex/2 720/2 = 360 l'escursione totale
port.write("A"+spos);//invio ad arduino quando clicco e muovo
}
if (mouseX > 360 && mouseX < 720 && mouseY > 450 && mouseY < 500&& mousePressed) {//se clicco e muovo all'interno del rettangolo nero a sx
muovoDX= mouseX;//muovodx fa quello che fa il mousex
spos2 = mouseX/2 ; //divido mousex/2 720/2 = 360, l'escursione totale
port.write("B"+spos3); // invio ad arduino quando clicco e muovo
}
translate (180, 360); //sposto al centro quello che ci sta sotto
///////////////////
pushMatrix(); // pushMatrix inizia, popMatrix finisce, serve per racchiudere in una nuova tela, se no tutto il restante codice ruota
rotate (radians(spos)); //ruoto quello che ci sta sotto (converto in gradi con radians e
//muovo con spos che è mousex/4 fatto precedentemente
line (0, 0, - 100, 0); //linea parte dal centro lunga 100, meno perchè 200 pixel a
// sx rispetto lo 0 (centro), line( start coordinate x, start coordinate y, stop coordinate x, stop coordinate y)
popMatrix();
//////////////////////
translate (360, 0);
/////////////////////
pushMatrix(); // pushMatrix inizia, popMatrix finisce, serve per racchiudere in una nuova tela, se no tutto il restante codice ruota
rotate (radians(spos2)); //ruoto quello che ci sta sotto (converto in gradi con radians e
//muovo con spos che è mousex/4 fatto precedentemente
line (0, 0, 100, 0); //linea parte dal centro lunga 100, 100 pixel a
// dx rispetto lo 0 (centro), line( start coordinate x, start coordinate y, stop coordinate x, stop coordinate y)
//differente a quella precente per il mousex che si trova dalla metà alla fine
popMatrix();
//////////////////////
print (spos); //debug
print (" "); //debug
println (spos3); //debug
}