What software is good for aduino 101 to produce multiple graphs?

My project is using a gyro and an accelerometer. I need a software that can produce a graph that gives out 6 channels read from all the x, y & z axis of that two component. I am not sure if the serial plotter from the arduino software itself can produce that much channels. And if it can i am not sure on how to produce that code.

PLX-DAQ

Is there any other software than PLX-DAQ? As my lecturer does not want me to plot the graph through excel.

You might still ask why, as it is a common and practical solution, and it makes a lot more sense than re-inventing the wheel. If you have already found that there is surprisingly little decent choice, this might go some way to explain why. There used to be a free plotter from U Melbourne but I cannot find it any more, and it wasn't as good as PLX. The impression I got of the Arduino serial plotter is that it is junk. Maybe it has improved recently but, if it is anywhere near as useful as PLX, I guess we would have heard about it.

There are other PC options like Processing and MatLab but they are a lot more sophisticated and I don't know anything about them.

If you are prepared to use bluetooth, you might find Bluegraph OK. I believe it can handle six channels. I use bluetooth graphics Terminal for live graphs, but it only has three channels.

Another option is to draw the graphs on a local LCD display. I would assume it was a last resort, but maybe that is what your lecturer is expecting of you. It is not actually that hard and, if you are just looking at visual relationships, you don't need a big display.

Mdzain:
I am not sure if the serial plotter from the arduino software itself can produce that much channels.

Yes, it can produce as many as you want. The only limitation is there are only 4 line colors defined so ithe color repeats after the 4th channel. The ability to handle multiple channels was added after the initial release of the feature so make sure you’re using a recent version of the Arduino IDE.

Mdzain:
i am not sure on how to produce that code.

Just print a comma after each channel and then a newline after the last channel. For example this plots 6 channels:

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(0);
  Serial.print(',');
  Serial.print(1);
  Serial.print(',');
  Serial.print(2);
  Serial.print(',');
  Serial.print(3);
  Serial.print(',');
  Serial.print(4);
  Serial.print(',');
  Serial.println(5);
}

Clipboard04.png

Nick_Pyner:
The impression I got of the Arduino serial plotter is that it is junk.

Yeah, It’s not that great but better than nothing I guess. I haven’t found a use for it yet.

Nick_Pyner:
Maybe it has improved recently

There have been some significant improvements since it was added but it’s still pretty limited.

This is the example code that is found in the library. Can u guide me on how to go about with this code to be inserted on the plotting code?

include "CurieIMU.h"

void setup() { Serial.begin(9600); // initialize Serial communication while (!Serial); // wait for the serial port to open

// initialize device Serial.println("Initializing IMU device..."); CurieIMU.begin();

// Set the accelerometer range to 250 degrees/second CurieIMU.setGyroRange(250); }

void loop() { float gx, gy, gz; //scaled Gyro values

// read gyro measurements from device, scaled to the configured range CurieIMU.readGyroScaled(gx, gy, gz);

// display tab-separated gyro x/y/z values Serial.print("g:\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy); Serial.print("\t"); Serial.print(gz); Serial.println(); }

Please use code tags (</> button on the toolbar) when you post code or warning/error messages. The reason is that the forum software can interpret parts of your code as markup, leading to confusion, wasted time, and a reduced chance for you to get help with your problem. This will also make it easier to read your code and to copy it to the IDE or editor. Using code tags and other important information is explained in the How to use this forum post. Please read it.

The only change necessary is to remove the labels and the tab characters and instead separate each channel’s value by commas.

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open

  // initialize device
  Serial.println("Initializing IMU device...");
  CurieIMU.begin();

  // Set the accelerometer range to 250 degrees/second
  CurieIMU.setGyroRange(250);
}

void loop() {
  float gx, gy, gz; //scaled Gyro values

  // read gyro measurements from device, scaled to the configured range
  CurieIMU.readGyroScaled(gx, gy, gz);

  // display gyro x/y/z values on the Arduino Serial Plotter(Tools > Serial Plotter)
  Serial.print(gx);
  Serial.print(',');
  Serial.print(gy)
  Serial.print(',');
  Serial.print(gz);
  Serial.println();
}
  • Upload the above code.
  • Tools > Serial Plotter
  • Make sure the menu on the bottom right corner of the Serial Plotter is set to “9600 baud”.