Advertisement
ariefhendra

Statistical (Version 3)

Jun 9th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. import java.text.SimpleDateFormat;
  2. import java.util.*;
  3.  
  4. String dayString = new SimpleDateFormat("EEEE").format(new Date());
  5. String temp = "--";
  6. String humid = "--";
  7. PrintWriter output;
  8.  
  9. int[] lastTime = new int[2];
  10. boolean[] button = { false, false };
  11. final int timeDelay = 1000;
  12.  
  13. int numData = 0;
  14. int maxTemp;
  15. int minTemp;
  16. int maxHumid;
  17. int minHumid;
  18. long sumTemp = 0;
  19. long sumTempSquare = 0;
  20. long sumHumid = 0;
  21. long sumHumidSquare = 0;
  22. float avgTemp = 0;
  23. float avgHumid = 0;
  24. float stdDevTemp = 0;
  25. float stdDevHumid = 0;
  26.  
  27. void setup()
  28. {
  29. size(260, 490);
  30. smooth();
  31. output = createWriter("stats.csv");
  32. output.println("numData,temp,humid,sumTemp,sumHumid,avgTemp,avgHumid,sumTempSquare,sumHumidSquare,stdDevTemp,stdDevHumid");
  33. }
  34.  
  35. void draw()
  36. {
  37. background(#DDF1FF);
  38. rectangle(20, 20, 100, 50, 255);
  39. rectangle(140, 20, 100, 50, 255);
  40. if(millis() - lastTime[0] >= timeDelay)
  41. {
  42. lastTime[0] = millis();
  43. temp = str(int(random(20, 40)));
  44. humid = str(int(random(30, 80)));
  45. }
  46.  
  47. label(temp + "⁰C", 30, 35, 55, 0);
  48. label(humid + "%", 30, 165, 55, 0);
  49.  
  50. cmdButton(20, 90, 220, 50);
  51. cmdLabel(button[0], 15, 40, 120, "Hentikan Perekaman", "Jalankan Perekaman");
  52.  
  53. rectangle(20, 160, 220, 240, 0);
  54. rectangle(21, 161, 218, 238, 255);
  55. cmdLabel(button[0], 12, 30, 180, "Data sedang direkam.", "Perekaman data telah berhenti.");
  56. label("Num.Data = " + numData, 12, 30, 195, 0);
  57. label("Tot.Temp = " + sumTemp, 12, 30, 210, 0);
  58. label("Tot.Humid = " + sumHumid, 12, 30, 225, 0);
  59. label("Tot.Sq.Temp = " + sumTempSquare, 12, 30, 240, 0);
  60. label("Tot.Sq.Humid = " + sumHumidSquare, 12, 30, 255, 0);
  61. label("Avg.Temp = " + avgTemp + "⁰C", 12, 30, 270, 0);
  62. label("Avg.Humid = " + avgHumid + "%", 12, 30, 285, 0);
  63. label("Max.Temp = " + maxTemp + "⁰C", 12, 30, 300, 0);
  64. label("Min.Temp = " + minTemp + "⁰C", 12, 30, 315, 0);
  65. label("Max.Humid = " + maxHumid + "%", 12, 30, 330, 0);
  66. label("Min.Humid = " + minHumid + "%", 12, 30, 345, 0);
  67. label("Std.Dev.Temp = " + stdDevTemp, 12, 30, 360, 0);
  68. label("Std.Dev.Humid = " + stdDevHumid, 12, 30, 375, 0);
  69.  
  70. cmdButton(20, 420, 220, 50);
  71. label("Simpan dan Keluar", 15, 40, 450, 0);
  72.  
  73. if(button[0]==true)
  74. {
  75. if(millis() - lastTime[1] >= timeDelay)
  76. {
  77. lastTime[1] = millis();
  78. numData++;
  79. if(numData == 1)
  80. {
  81. maxTemp = int(temp);
  82. minTemp = int(temp);
  83. maxHumid = int(humid);
  84. minHumid = int(humid);
  85. }
  86. else
  87. {
  88. if(int(temp) > maxTemp)
  89. {
  90. maxTemp = int(temp);
  91. }
  92. if(int(temp) < minTemp)
  93. {
  94. minTemp = int(temp);
  95. }
  96. if(int(humid) > maxHumid)
  97. {
  98. maxHumid = int(humid);
  99. }
  100. if(int(humid) < minHumid)
  101. {
  102. minHumid = int(humid);
  103. }
  104. }
  105. sumTemp += int(temp);
  106. sumHumid += int(humid);
  107. sumTempSquare += (int(temp)*int(temp));
  108. sumHumidSquare += (int(humid)*int(humid));
  109. avgTemp = float(nf(sumTemp / ((float)numData), 3, 1));
  110. avgHumid = float(nf(sumHumid / ((float)numData), 3, 1));
  111. stdDevTemp = float(nf(sqrt(sumTempSquare*numData - sumTemp*sumTemp)/numData, 5, 3));
  112. stdDevHumid = float(nf(sqrt(sumHumidSquare*numData - sumHumid*sumHumid)/numData, 5, 3));
  113. output.print(numData + ",");
  114. output.print(temp + ",");
  115. output.print(humid + ",");
  116. output.print(sumTemp + ",");
  117. output.print(sumHumid + ",");
  118. output.print(avgTemp + ",");
  119. output.print(avgHumid + ",");
  120. output.print(sumTempSquare + ",");
  121. output.print(sumHumidSquare + ",");
  122. output.print(stdDevTemp + ",");
  123. output.println(stdDevHumid + ",");
  124. }
  125. }
  126.  
  127. if(button[1] == true)
  128. {
  129. output.flush();
  130. output.close();
  131. exit();
  132. }
  133. }
  134.  
  135. void mousePressed()
  136. {
  137. if((mouseX >= 20)&&(mouseX <= 240)&&(mouseY >= 90)&&(mouseY <= 140))
  138. {
  139. button[0] =! button[0];
  140. }
  141. if((mouseX >= 20)&&(mouseX <= 240)&&(mouseY >= 420)&&(mouseY <= 470))
  142. {
  143. button[1] =! button[1];
  144. }
  145. }
  146.  
  147. void rectangle(int rectPosX, int rectPosY, int rectWidth, int rectHeight, int rectColor)
  148. {
  149. pushMatrix();
  150. translate(rectPosX, rectPosY);
  151. noStroke();
  152. fill(rectColor);
  153. rect(0, 0, rectWidth, rectHeight);
  154. popMatrix();
  155. }
  156.  
  157. void label(String txt, int txtSize, int txtPosX, int txtPosY, int txtColor)
  158. {
  159. textSize(txtSize);
  160. fill(txtColor);
  161. text(txt, txtPosX, txtPosY);
  162. }
  163.  
  164. void cmdButton(int pointX, int pointY, int lengthX, int widthY)
  165. {
  166. noStroke();
  167. fill(128);
  168. rect(pointX+1, pointY+1, lengthX+1, widthY+1);
  169. if((mouseX >= pointX)&&(mouseX <= pointX+lengthX)&&(mouseY >= pointY)&&(mouseY <= pointY+widthY))
  170. {
  171. fill(240);
  172. }
  173. else
  174. {
  175. fill(225);
  176. }
  177. rect(pointX, pointY, lengthX, widthY);
  178. }
  179.  
  180. void cmdLabel(boolean check, int txtSize, int posX, int posY, String messageTrue, String messageFalse)
  181. {
  182. fill(0);
  183. stroke(0);
  184. textSize(txtSize);
  185. if(check == true)
  186. {
  187. text(messageTrue, posX, posY);
  188. }
  189. else
  190. {
  191. text(messageFalse, posX, posY);
  192. }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement