Pages: [1]   Go Down
Author Topic: condivisione sketch processing per interagire con arduino gps  (Read 187 times)
0 Members and 1 Guest are viewing this topic.
milano
Offline Offline
Sr. Member
****
Karma: 3
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-twist
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  smiley-cry

 collaudate Grazie  smiley-roll

Code:
//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);
}
« Last Edit: January 25, 2014, 07:01:22 pm by camperos » Logged


Pages: [1]   Go Up
Jump to: