Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. import processing.serial.*;
  3. Serial myPort;
  4.  
  5. // variables pour les températures
  6. float f_tempX = 0;
  7. float f_tempX_MAX = 0;
  8. float f_tempX_MIN = 100;
  9. float f_tempY =0;
  10. float f_tempY_MAX = 0;
  11. float f_tempY_MIN = 100;
  12. float f_tempZ =0;
  13. float f_tempZ_MAX = 0;
  14. float f_tempZ_MIN = 100;
  15.  
  16. //variables pour le temps qui passe
  17. float delai;
  18. int i_delai;
  19. int i_t_stockage;
  20.  
  21. // canal pour la sauvegarde des données
  22. PrintWriter FILE;
  23. String fichier;
  24.  
  25. // variables pour l'affichage des données
  26. int xdata = 55;
  27. int ydata = 50;
  28. int offsetdata = 20;
  29.  
  30. // variables pour le tracage des repères , c'est plus ou moins "dynamique" ^^ !
  31. int x_repA = 300;
  32. int y_repA = 36;
  33. int x_repB = x_repA;
  34. int y_repB = 436 ;
  35. int x_repC = 1100;
  36. int y_repC = y_repB;
  37. int zero_ordonnee = (y_repB - y_repA)/5 ;
  38. int x_leg = x_repA -20;
  39. int y_leg = 20;
  40. int intleg = (y_repB - y_repA)/20;
  41.  
  42. // Echelle complete , ici 50°C : de -10 à 40
  43. float f_maxEchelle = 50;
  44. float f_facteur = (y_repB - y_repA)/f_maxEchelle ; // facteur pour caler la température sur le repère
  45. //int x1_TX=0; int y1_TX=0; int x2_TX=0; int y2_TX=0;
  46. //int x1_TY=0; int y1_TY=0; int x2_TY=0; int y2_TY=0;
  47. //int x1_TZ=0; int y1_TZ=0; int x2_TZ=0; int y2_TZ=0;
  48. float x1_TX=x_repA, y1_TX=y_repB, x2_TX=0, y2_TX=0;
  49. float x1_TY=x_repA, y1_TY=y_repB, x2_TY=0, y2_TY=0;
  50. float x1_TZ=x_repA, y1_TZ=y_repB, x2_TZ=0, y2_TZ=0;
  51.  
  52. int i_tps = 0;
  53. int i_limit = 0;
  54. int interval = 20;
  55. int i;
  56. int offsetaffichage=0;
  57.  
  58. // Flags
  59. boolean tracage = false; // tracage des courbes
  60. boolean stockage = false; // sauvegarde des données
  61. boolean creation_fichier = false;
  62.  
  63. void setup()
  64. {
  65. size(1200, 600);//largeur , hauteur)
  66. textAlign(LEFT);
  67.  
  68.  
  69. delay(100);
  70. printArray(Serial.list()); // affiche les ports dispo
  71.  
  72. try {
  73. myPort = new Serial(this, Serial.list()[0], 115200); // je choisis le premier
  74. myPort.bufferUntil('\n');
  75. }
  76. catch(Exception e) {
  77. println("soucis");
  78. }
  79.  
  80. background(255, 255, 255); // couleur du fond , ici blanc
  81. }
  82. void draw()
  83. {
  84. // refresh datas
  85. stroke(255, 255, 255); // contour
  86. fill(255, 255, 255); // intérieur
  87. rect(0, 0, xdata*5 - 35, ydata*7);
  88.  
  89.  
  90. fill(0, 0, 0); // legende datas
  91. if (i_delai>5)
  92. {
  93.  
  94. if (f_tempX < f_tempX_MIN) {
  95. f_tempX_MIN = f_tempX;
  96. }
  97. if (f_tempX > f_tempX_MAX) {
  98. f_tempX_MAX = f_tempX;
  99. }
  100. if (f_tempY < f_tempY_MIN) {
  101. f_tempY_MIN = f_tempY;
  102. }
  103. if (f_tempY > f_tempY_MAX) {
  104. f_tempY_MAX = f_tempY;
  105. }
  106. if (f_tempZ < f_tempZ_MIN) {
  107. f_tempZ_MIN = f_tempZ;
  108. }
  109. if (f_tempZ > f_tempZ_MAX) {
  110. f_tempZ_MAX = f_tempZ;
  111. }
  112. }
  113.  
  114. //datas pour 1 sonde mais on peut en rajouter 2 voir plus mais faut rajouter du code
  115. text("Home :", xdata-40, ydata);
  116. // text("YY :", xdata-40, ydata+offsetdata);
  117. // text("ZZ :", xdata-40, ydata+(2*offsetdata));
  118. text("Tps :", xdata-40, ydata+(3*offsetdata));
  119.  
  120. text("Home", xdata+30, ydata+(5*offsetdata));
  121. // text("YY", xdata+80, ydata+(5*offsetdata));
  122. // text("ZZ", xdata+130, ydata+(5*offsetdata));
  123. text("MIN:", xdata-40, ydata+(6*offsetdata));
  124. text("MAX:", xdata-40, ydata+(7*offsetdata));
  125.  
  126. text(f_tempX_MIN, xdata+30, ydata+(6*offsetdata));
  127. // text(f_tempY_MIN, xdata+80, ydata+(6*offsetdata));
  128. // text(f_tempZ_MIN, xdata+130, ydata+(6*offsetdata));
  129.  
  130. text(f_tempX_MAX, xdata+30, ydata+(7*offsetdata));
  131. // text(f_tempY_MAX, xdata+80, ydata+(7*offsetdata));
  132. // text(f_tempZ_MAX, xdata+130, ydata+(7*offsetdata));
  133.  
  134. text("°C", xdata+50, ydata);
  135. // text("°C", xdata+50, ydata+offsetdata);
  136. // text("°C", xdata+50, ydata+(2*offsetdata));
  137. text("min", xdata+50, ydata+(3*offsetdata));
  138. fill(0, 0, 255);
  139. text(f_tempX, xdata, ydata);
  140. fill(0, 255, 0);
  141. // text(f_tempY, xdata, ydata+offsetdata);
  142. fill(255, 0, 0);
  143. // text(f_tempZ, xdata, ydata+(2*offsetdata));
  144. fill(0, 0, 0);
  145. text(i_delai, xdata, ydata+(3*offsetdata));
  146.  
  147. strokeWeight(2); // epaisseur courbe
  148. //courbe sonde 1
  149. stroke(0, 0, 255);
  150.  
  151. x2_TX = x_repB + i_delai-offsetaffichage*800;
  152. y2_TX = y_repB - zero_ordonnee - (f_tempX * f_facteur);
  153. line(x1_TX, y1_TX, x2_TX, y2_TX);
  154. x1_TX = x2_TX ;
  155. y1_TX = y2_TX ;
  156. //courbe sonde 2
  157. /* stroke(0, 255, 0);
  158. x2_TY = x_repB+i_delai-offsetaffichage*800;
  159. y2_TY = y_repB - zero_ordonnee - (f_tempY * f_facteur);
  160. line(x1_TY, y1_TY, x2_TY, y2_TY);
  161. x1_TY = x2_TY ;
  162. y1_TY = y2_TY ;
  163. //courbe sonde 3
  164. stroke(255, 0, 0);
  165.  
  166. x2_TZ = x_repB+i_delai-offsetaffichage*800;
  167. y2_TZ = y_repB - zero_ordonnee - (f_tempZ * f_facteur);
  168. line(x1_TZ, y1_TZ, x2_TZ, y2_TZ);
  169. x1_TZ = x2_TZ ;
  170. y1_TZ = y2_TZ ;
  171. */
  172.  
  173. stroke(0, 0, 0);
  174. strokeWeight(2);
  175. line(x_repA, y_repA-15, x_repB, y_repB+15);
  176.  
  177. strokeWeight(1);
  178.  
  179. if (tracage == false) {
  180. tracer();
  181. }
  182.  
  183.  
  184. //creation du txt pour la sauvegarde des données
  185. if (creation_fichier == false && fichier!= null)
  186. {
  187. println(fichier);
  188. FILE = createWriter(fichier);
  189. FILE.println("TempX TempY TempZ tps(sec)");
  190.  
  191. creation_fichier = true;
  192. }
  193.  
  194. // ecriture des données dans le txt
  195. if (stockage == true && creation_fichier == true)
  196. {
  197.  
  198. FILE.print(f_tempX);
  199. FILE.print(" ");
  200. FILE.print(f_tempY);
  201. FILE.print(" ");
  202. FILE.print(f_tempZ);
  203. FILE.print(" ");
  204. FILE.println(i_delai);
  205. FILE.flush();
  206.  
  207. stockage = false;
  208.  
  209. println("sauvegarde"); // On se rassure
  210. }
  211.  
  212. // Remet les choses comme il faut une fois la premiere "page" du graphe rempli
  213.  
  214. if (i_delai >= 800*(offsetaffichage+1))
  215. {
  216. background(255, 255, 255);
  217. x1_TX=x1_TX - 800;
  218. x1_TY=x1_TY - 800;
  219. x1_TZ=x1_TZ - 800;
  220. offsetaffichage ++;
  221. // i_delai2 = 0;
  222.  
  223. // refresh legende x
  224. stroke(255, 255, 255); // contour
  225. fill(255, 255, 255); // intérieur
  226. rect(x_leg-30, 0, 45, y_repB+25);
  227. // refresh legende y
  228. stroke(255, 255, 255); // contour
  229. fill(255, 255, 255); //intérieur
  230. rect(x_repA+10, y_repC+17, 850, 20);
  231.  
  232. tracage = false;
  233. }
  234. }
  235.  
  236. // récupération des données du port série
  237.  
  238. void serialEvent(Serial myPort)
  239. {
  240. println("test");
  241. String Temperatures = myPort.readString();
  242. String[] Sonde = split(Temperatures, ' ');
  243. f_tempX = Float.parseFloat(Sonde[0]);
  244. // f_tempY = Float.parseFloat(Sonde[1]);
  245. // f_tempZ = Float.parseFloat(Sonde[2]);
  246. delai = Float.parseFloat(Sonde[1]);
  247.  
  248.  
  249.  
  250. i_delai=int(delai);
  251. //i_delai = i_delai * 100;
  252. // println(i_delai);
  253. //println(Sonde[4]);
  254.  
  255. i_t_stockage= i_delai;
  256. println(i_delai);
  257. // println(f_tempX);
  258. stockage = true;
  259.  
  260.  
  261.  
  262. //creation du nom de fichier du txt
  263. String nomFichier ="";
  264. nomFichier += Sonde[2]; // récupere le buff du setup de l'arduino ;)
  265. nomFichier += ".txt";
  266. fichier = nomFichier;
  267.  
  268.  
  269. nomFichier = "";
  270. }
  271.  
  272. // reperes, legende ,etc
  273. void tracer()
  274. {
  275. int dec = -5;
  276. tracage = true;
  277. //legende repere x
  278. fill(0, 0, 0);
  279. text("(°C)", x_leg-14, y_repB- (21*intleg)-dec);
  280. text("40", x_leg-15, y_repB- (20*intleg)-dec);
  281. text("37,5", x_leg-15, y_repB- (19*intleg)-dec);
  282. text("35", x_leg-15, y_repB- (18*intleg)-dec);
  283. text("32,5", x_leg-15, y_repB- (17*intleg)-dec);
  284. text("30", x_leg-15, y_repB- (16*intleg)-dec);
  285. text("27,5", x_leg-15, y_repB- (15*intleg)-dec);
  286. text("25", x_leg-15, y_repB- (14* intleg)-dec);
  287. text("22,5", x_leg-15, y_repB- (13* intleg)-dec);
  288. text("20", x_leg-15, y_repB- (12*intleg)-dec);
  289. text("17,5", x_leg-15, y_repB- (11*intleg)-dec);
  290. text("15", x_leg-15, y_repB- (10*intleg)-dec);
  291. text("12,5", x_leg-15, y_repB- (9*intleg)-dec);
  292. text("10", x_leg-15, y_repB- (8*intleg)-dec);
  293. text("7,5", x_leg-15, y_repB- (7*intleg)-dec);
  294. text("5", x_leg-15, y_repB- (6*intleg)-dec);
  295. text("2,5", x_leg-15, y_repB- (5* intleg)-dec);
  296. text("0", x_leg-15, y_repB- (4*intleg)-dec);
  297. text("-2,5", x_leg-15, y_repB- (3*intleg)-dec);
  298. text("-5", x_leg-15, y_repB- (2*intleg)-dec);
  299. text("-7,5", x_leg-15, y_repB- (1*intleg)-dec);
  300. text("-10", x_leg-15, y_repB- (0*intleg)-dec);
  301. text("(Heure)", x_repA +800 +30, y_repB+ 30-dec);
  302.  
  303.  
  304. //repere secondaire
  305. stroke(200, 200, 200);
  306. strokeWeight(1);
  307.  
  308. for (i=0; i<21; i++)
  309. {
  310. line(x_leg+15, y_repB- (i*intleg), x_repC +15, y_repB- (i*intleg));
  311. }
  312. for (i=1; i<14; i++)
  313. {
  314. line(x_repA+60*i, y_repB+15, x_repA+60*i, y_repA-15);
  315. text((i)+offsetaffichage*13, x_repA+60*i -3, y_repB+ 30);
  316. }
  317.  
  318. // repere
  319. stroke(0, 0, 0);
  320. strokeWeight(2);
  321. line(x_repA, y_repA-15, x_repB, y_repB+15);
  322. //line(x_repB, y_repB, x_repC, y_repC);
  323. line(x_repA-5, y_repB-zero_ordonnee, x_repC+15, y_repB-zero_ordonnee);
  324. }