Go Down

Topic: condivisione sketch processing per interagire con arduino gps (Read 226 times) previous topic - next topic

camperos

Jan 26, 2014, 12:54 am Last Edit: Jan 26, 2014, 01:01 am by camperos Reason: 1
Ciao.

sperando che funzioni bene...   :smiley-zipper:
volevo condividere un piccolo sketch processing che credo sia interessante, si tratta di una alternativa per visualizzare su pc ( e prossimamente su android) arduino gps  con  mappa ed eventualmente in realtime.
lo posto anche perchè ha bisogno di collaudi  e eventuali modifiche ]:D
lo sketch è corto e non servono librerie, quindi lo posto direttamente "a vista", ha lo zoom e il drag.

la mappa...
 attualmente sto usando "atlas creator", se si crea una mappa 764x512   basta inserirla nella cartella  dello sketch denominata "data"(se non c'è si deve creare), e inserire le coordinate lati della mappa nello sketch al posto delle coordinate esistenti.
per provare lo sketch non serve arduino gps,  
c'è la possibilità diinteragire con googlemaps, ma purtroppo dopo tot richieste l'IP viene bannato  =(

collaudate Grazie  :smiley-roll:

Code: [Select]

//per mappe 764x512 non serve altro che inserire le coordinate nello sketch date da "atlas creator" in
//alto a SX nel sito"mobile atlas creator", si deve essere sicuri che le coordinate che leggete non siano di una selezione di prova precedente.

// versione beta
//senza insererire un file PNG non funziona
float x, y;
float bx, by;
PImage maps;
float mapX = 9.2667762; ////variabile da arduino, oppure per tarare mappe giganti insere le coordinate della torre di Pisa
float mapY = 45.412065; // variabile da arduino
float xOffset = 0.0;
float yOffset = 0.0;  
float Eend = 7.734375 ;  ////taratura mappa, sx, ovest
float Estart = 9.84375;  ////taratura mappa, dx, est
float Nstart = 46.073231;////taratura mappa, nord
float Nend = 45.089036;  ////taratura mappa, sud
float zoom = 1;
float mapXX = mapX + (mapX - Eend)-(( Eend - Estart)/2) - (mapX - Eend) ;
float mapYY = mapY + (mapY - Nstart)+(( Nstart - Nend)/2) - (mapY - Nend);  
int time ;

void setup() {
 size(768, 512);
 orientation (LANDSCAPE);
 ellipseMode(CENTER);
 maps = loadImage("768x512.png"); //sostituire con vostra mappa 768x512
 time =millis();
}
void draw()
{  
 background(100);
 pushMatrix();
 if (mouseX >650 && mouseX <800 && mouseY >0 && mouseY < 130 && mousePressed) {
   zoom = zoom+0.01;
 }
 if (mouseX >650 && mouseX <800 && mouseY >330 && mouseY <480 && mousePressed) {
   zoom = zoom-0.01;
 }
 scale (zoom);
 ///////////////////////////////////////////////////////////////////
 if (time+500 < millis()) {    //dimostratione coordinate variabili
   for (int i=0; i<100;i++)    //dimostratione coordinate variabili
   {                           //dimostratione coordinate variabili
     mapX   = mapX+0.00002;    //dimostratione coordinate variabili
     mapY   = mapY+0.00002;    //dimostratione coordinate variabili
     mapXX = mapXX+0.00002;    //dimostratione coordinate variabili
     mapYY = mapYY+0.00002;    //dimostratione coordinate variabili
   }                           //dimostratione coordinate variabili
   time =millis();             //dimostratione coordinate variabili
 }                             //dimostratione coordinate variabili
 ///////////////////////////////////////////////////////////////////
 x = map(mapXX, Estart, Eend, 0, 768);
 y = map(mapYY, Nend, Nstart, 0, 512);
 image(maps, x-(0)+bx, y-(0)+by ); //per mappe giganti tarare una posizione anche senza gps ad esempio visualizza sulla mappa inserita
                                     // la torre di Pisa inserire numeri negativi al posto dello zerosino alla centratura
 
 fill (255, 0, 0);
 ellipse(384 +bx, 256 +by, 10, 10);
 popMatrix();
 texto();
}
void mousePressed() {
 xOffset = (mouseX-bx);
 yOffset = (mouseY-by);
}
void mouseDragged() {
 bx = (mouseX-xOffset);
 by = (mouseY-yOffset);
}
void texto() {
 fill (255, 0, 200, 50);
 rect (0, 440, width, 480);
 fill (0);
 textSize (20);
 text (mapY + "N", 10, 460);
 text (mapX + "E", 170, 460);
 textSize (120);
 fill (255, 255, 0, 50);
 ellipse (730, 50, 80, 80);
 ellipse (730, 400, 80, 80);
 fill (0);
 text ("+", 683, 85);
 text ("-", 697, 437);
}

Go Up