I plan on using my mbed to capture some raw acceleration data from a rocket that I plan to launch soon. What I have build is a little program that records data from an accelerometer. When you flip the switch, the program automatically starts recording all x,y, and z values to a cvs file which can later be opened in excel to produce a graph. I have also added a mobile lcd screen to output the results.
main.cpp
- Committer:
- vcazan
- Date:
- 2010-11-02
- Revision:
- 0:e43a1f11a90b
File content as of revision 0:e43a1f11a90b:
#include "mbed.h"
#include "MobileLCD.h"
AnalogIn x1(p18);
AnalogIn y1(p19);
AnalogIn z1(p20);
DigitalOut led(LED1);
DigitalIn start(p21);
Serial pc(USBTX, USBRX); // tx, rx
LocalFileSystem local("local"); // Create the local filesystem under the name "local"
MobileLCD lcd(p5, p6, p7, p8, p9);
int count=0;
int main() {
lcd.background(0x0000FF);
lcd.cls();
lcd.printf("Waiting for start...");
for (int i=0; i<130; i++) {
lcd.pixel(i, 80 + sin((float)i / 5.0)*10, 0x000000);
}
while (1) {
pc.printf("%d",start.read());
if (start) {
remove("/local/out.csv");
FILE *fp = fopen("/local/out.csv", "w"); // Open "out.txt" on the local file system for writing
lcd.background(0x0000FF);
lcd.cls();
while (start) {
pc.printf("XValue %.4f , YValue %.4f , ZValue %.4f\n",x1.read(),y1.read(),z1.read());
fprintf(fp," %f , %f , %f\n",x1.read(),y1.read(),z1.read());
lcd.locate(0,3);
lcd.printf("X:");
lcd.locate(0,6);
lcd.printf("Y:");
lcd.locate(0,8);
lcd.printf("Z:");
lcd.pixel(count++, -10 +x1.read()*100, 0x000000);
lcd.pixel(count, 10+x1.read()*100, 0x000000);
lcd.pixel(count,30+x1.read()*100, 0x000000);
if (count == 120 ) {
count = 0;
lcd.cls();
}
}
fclose(fp);
}
}
}