Graph.pde 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import processing.serial.*;
  2. Serial serial;
  3. String stringGyroX, stringGyroY;
  4. String stringAccX, stringAccY;
  5. String stringCompX, stringCompY;
  6. String stringKalmanX, stringKalmanY;
  7. final int width = 800;
  8. final int height = 600;
  9. float[] gyroX = new float[width];
  10. float[] gyroY = new float[width];
  11. float[] accX = new float[width];
  12. float[] accY = new float[width];
  13. float[] compX = new float[width];
  14. float[] compY = new float[width];
  15. float[] kalmanX = new float[width];
  16. float[] kalmanY = new float[width];
  17. boolean drawValues = false;
  18. void setup() {
  19. size(width, height);
  20. println(Serial.list()); // Use this to print connected serial devices
  21. serial = new Serial(this, Serial.list()[0], 115200); // Set this to your serial port obtained using the line above
  22. serial.bufferUntil('\n'); // Buffer until line feed
  23. for (int i = 0; i < width; i++) { // center all variables
  24. gyroX[i] = height/2;
  25. gyroY[i] = height/2;
  26. accX[i] = height/2;
  27. accY[i] = height/2;
  28. compX[i] = height/2;
  29. compY[i] = height/2;
  30. kalmanX[i] = height/2;
  31. kalmanY[i] = height/2;
  32. }
  33. drawGraph(); // Draw graph at startup
  34. }
  35. void draw() {
  36. /* Draw Graph */
  37. if (drawValues) {
  38. drawValues = false;
  39. drawGraph();
  40. }
  41. }
  42. void drawGraph() {
  43. background(255); // White
  44. for (int i = 0; i < width; i++) {
  45. stroke(200); // Grey
  46. line(i*10, 0, i*10, height);
  47. line(0, i*10, width, i*10);
  48. }
  49. stroke(0); // Black
  50. for (int i = 1; i <= 3; i++)
  51. line(0, height/4*i, width, height/4*i); // Draw line, indicating -90 deg, 0 deg and 90 deg
  52. convert();
  53. drawAxisX();
  54. drawAxisY();
  55. }
  56. void serialEvent (Serial serial) {
  57. // Get the ASCII strings:
  58. stringAccX = serial.readStringUntil('\t');
  59. stringGyroX = serial.readStringUntil('\t');
  60. stringCompX = serial.readStringUntil('\t');
  61. stringKalmanX = serial.readStringUntil('\t');
  62. serial.readStringUntil('\t'); // Ignore extra tab
  63. stringAccY = serial.readStringUntil('\t');
  64. stringGyroY = serial.readStringUntil('\t');
  65. stringCompY = serial.readStringUntil('\t');
  66. stringKalmanY = serial.readStringUntil('\t');
  67. serial.clear(); // Clear buffer
  68. drawValues = true; // Draw the graph
  69. //printAxis(); // Used for debugging
  70. }
  71. void printAxis() {
  72. print(stringGyroX);
  73. print(stringAccX);
  74. print(stringCompX);
  75. print(stringKalmanX);
  76. print('\t');
  77. print(stringGyroY);
  78. print(stringAccY);
  79. print(stringCompY);
  80. print(stringKalmanY);
  81. println();
  82. }