condivisione sketch processing per interagire con arduino gps

Ciao.

sperando che funzioni bene... :zipper_mouth_face:
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 ]:smiley:
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 :roll_eyes:

//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);
}