Show Posts
Pages: 1 [2]
16  Using Arduino / Interfacing w/ Software on the Computer / Re: Real Time Plotting Tool ( Oscilloscope ) on: May 29, 2011, 10:49:49 pm
New release of the tool. Found and fixed a bug. The program would crash on startup (never start) if there were no serial ports in the computer. This would happen if you have not plugged in the Arduino board before you run the program. My computer has a serial port on the motherboard, so I never saw this issue. Thanks to EmmaK that I found the bug.

New webpage with more information:

Arduino Code samples:

Created a video to show SimPlot in operation:

Looking for suggestions to impove the tool and add more features. For the next release I am debating about these features, not sure if they are useful. What do you guys think?

1) Remove Y axis auto scale feature and provide a way for user to set the range.
2) Provide feature to change X axis range.
3) Inculde Serial Monitor functionality in the text window.
4) Add more channels?

17  Using Arduino / Interfacing w/ Software on the Computer / Re: Real Time Plotting Tool ( Oscilloscope ) on: May 26, 2011, 08:15:48 am
Can you give more information. What happened when you tried to run the executable? What kind of error messages did you get, if any?
What operating system are you running it on? What version of the .Net framework do you have?

Are you asking for a screenshot from me or Emmak?

18  Using Arduino / Interfacing w/ Software on the Computer / Re: Serial port monitor freeware on: May 20, 2011, 03:31:56 pm
Check out
19  Using Arduino / Interfacing w/ Software on the Computer / Re: Real Time Plotting Tool ( Oscilloscope ) on: May 02, 2011, 11:48:14 pm
New Version: 1.1
Date: July 22th 2011
1) Can change X axis length.
2) Can change Y axis min and max values.
3) Change the channel legends.
4) Enable or disable individual channels.
5) New version number scheme with only 2 fields x.x

New Version: 1.0.8
Date: May 29th 2011
1) Fixed a bug which caused the program to crash on startup when there were no serial ports (Ardunio board not connected).
2) Changed version number from x.x.x.x to x.x.x

New Version:
Date: May 3rd 2011
1) Fixed bug in Y axis autoscale feature.
2) Displaying program version info in the status bar.
20  Using Arduino / Interfacing w/ Software on the Computer / Re: Interfacing accelerometer and Processing on: April 27, 2011, 11:07:37 am

If all you want to do is show accelerometer values on a computer screen then you can use SimPlot. I wrote it specifically for such uses. Didn't want to muck around with Processing when all I wanted to see were some values on the screen.   Below is the relevant thread,58911.0.html

Let me know if it "works". :-)
21  Using Arduino / Sensors / Re: Guide to gyro and accelerometer with Arduino including Kalman filtering on: April 19, 2011, 08:02:32 pm

This is a great post about IMU's. Lots of good information. I am also working with Gyro's and accelerometers in my Quadrotor project. I needed a simple tool to visualize data and ended up writing one. Although there are ways to plot data using Processing, I wanted a stand alone tool.

Here is link to relevant thread. Hope you guys find the tool useful.,58911.0.html

I will probably change the tools to accept float data in the next version.

22  Using Arduino / Interfacing w/ Software on the Computer / Real Time Plotting Tool ( Oscilloscope ) on: April 18, 2011, 10:17:15 pm
Hello All,

In my projects I needed a simple tool that could plot real time data from a microcontroller. There was no such tool available out there. There are various scripts using Processing and Python that can be used to plot the data, but nothing that is simple, easy to use and ready out of the box.

So I ended up writing a tool to plot real time data for my Quadrotor project. I thought others also may find it useful hence the birth of generic plotting tool

Currently has following features
  • Plots data from serial port
  • 4 Channels of data
  • 16bit signed data type (Arduino int datatype)
  • X & Y axis range user selectable

Video of the tool in action:

Webpage with more information

Project page with source code

Arduino Code samples:

Download it from

Here is an example sketch that was used to generate 4 sine/cosine waveforms that are plotted on the figure above.


SimPlot Demo Arduino Sketch.
Generates and sends out 4 channels of data to be plotted using SimPlot.

void setup()

int buffer[20];
float deltaAngle = 3.14/51; //Arbitrary angle increment size
float angle = 0;
int amplitude = 100;

void loop()

  int data1;
  int data2;
  int data3;
  int data4;
  //Generating data that will be plotted
  data1 = amplitude * sin(angle);
  data2 = amplitude * cos(angle);
  data3 = (amplitude/2) * sin(angle);
  data4 = (amplitude/2) * cos(angle);
  angle = angle + deltaAngle;
  delay(100); //Need some delay else the program gets swamped with data

void plot(int data1, int data2, int data3, int data4)
  int pktSize;
  buffer[0] = 0xCDAB;             //SimPlot packet header. Indicates start of data packet
  buffer[1] = 4*sizeof(int);      //Size of data in bytes. Does not include the header and size fields
  buffer[2] = data1;
  buffer[3] = data2;
  buffer[4] = data3;
  buffer[5] = data4;
  pktSize = 2 + 2 + (4*sizeof(int)); //Header bytes + size field bytes + data
  //IMPORTANT: Change to serial port that is connected to PC
  Serial.write((uint8_t * )buffer, pktSize);
23  Forum 2005-2010 (read only) / Development / Re: No transmit buffer in serial port libary. on: February 04, 2009, 12:24:09 pm
I agree with all the things you said.

Transmit buffers has it uses when you are trying to run some sort of control loop at a fixed rate. Currently AVR just waits till all the data is transmitted.

I understand it is optimization/design issue. What has been implemented is just fine for majority of cases where Arduino is used.
I just wanted to know if there was any specific reason why it was done that way. Some reason like it affected or broke some other feature hence it was not implemented etc..

I am working on Quadrotor project and want to use Arduino frame work. Control loops need to run at higher than 100Hz. So trying to squeeze as much as possible from the AVR's.

Another example where it could be useful is in this Arduin-O-Scope project

Have to run the numbers though, maybe the limiting factor turns out to be time taken to sample signal rather than time taken to transmit the data.
24  Forum 2005-2010 (read only) / Development / No transmit buffer in serial port libary. on: February 03, 2009, 11:58:46 am
I was going through code and saw that there was no buffer for serial port transmission. I searched the forums and read subversion logs to see if anything was mentioned as to reason behind it, but found none.

Any particular reason why transmit side does not have buffer implementation?


25  Forum 2005-2010 (read only) / Development / Re: Library interdependency on: January 26, 2009, 10:39:14 am
Yes I do want to put it up on Playground Wiki. I realized that playground was user generated content after I had finished putting up that page.

26  Forum 2005-2010 (read only) / Development / Re: Library interdependency on: January 25, 2009, 11:14:35 pm
I finally managed to collect and publish some information. It took far more time to just format and publish the information than to collect it from C code.

I am having trouble in formating the information such that it can encompass all the various things. For now I have been able to put default hardware setup and usage by the Arduino language. I will add the standard libraries next.

Any comments, suggestions and corrections are always welcome.

27  Forum 2005-2010 (read only) / Development / Re: Library interdependency on: January 12, 2009, 11:17:28 pm
mm..I will need this information as I work on my project. I might as well document it. I will update as soon as I get something going.

As for the format I was thinking of listing all hardware devices in a row. Each library would then mark resources used. An example would be more clear I guess.

Library Timer 1Timer 2

In the above example Delay() funtion/library uses Timer1 and does not use Timer2.

Above table is just an example, don't know if delay() function uses Timer1 for sure.

I think I will just take the excel file from the Atmel website which they use to list the devices in parametric list.

Any other ideas are always welcome.
28  Forum 2005-2010 (read only) / Development / Re: Library interdependency on: January 11, 2009, 11:18:20 pm
Has any work been done on documenting the library interdependency?

I was searching for the basic information of hardware resources used by the official ardunio library and stumbled upon this thread. Am I out of luck?

29  Forum 2005-2010 (read only) / Exhibition / Re: Arduin-O-Scope (a tiny oscilloscope project) on: February 04, 2009, 04:08:55 pm
My bad, I missed the second parameter BYTE.
I just assumed he is sending the full precision 10bits of the Analog value.

Looking again into code,  as  it is written it would result in truncated values being sent out. Check following code from serial.print() library where long is type casted as char, which implies only bottom 8 bits are sent out.

void Print::print(long n, int base)
  if (base == 0)
    print((char) n);
  else if (base == 10)
    printNumber(n, base);

Right shifting the analog sample by 2 bits and sending as BYTE would solve the problem I guess.
30  Forum 2005-2010 (read only) / Exhibition / Re: Arduin-O-Scope (a tiny oscilloscope project) on: February 04, 2009, 12:47:25 pm
The baud rate used is 115200. From that we get maximum data rate of 11520 bytes/sec of 11.52KB.

Now analogRead() returns an integer, ranging from 0 to 1023.
Serial.Print() prints it in ASCII format, which means a maximum of 4 bytes per sample.

So maximum sampling frequency would be 11.52KB/4 = 2.888KHz.

You are limited by serial port transmission rate. Check if Processing allows you to set non-standard baud rate for the serial port.

Pages: 1 [2]