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@0:e43a1f11a90b, 2010-11-02 (annotated)
- Committer:
- vcazan
- Date:
- Tue Nov 02 00:16:20 2010 +0000
- Revision:
- 0:e43a1f11a90b
Inital revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vcazan | 0:e43a1f11a90b | 1 | #include "mbed.h" |
vcazan | 0:e43a1f11a90b | 2 | #include "MobileLCD.h" |
vcazan | 0:e43a1f11a90b | 3 | |
vcazan | 0:e43a1f11a90b | 4 | AnalogIn x1(p18); |
vcazan | 0:e43a1f11a90b | 5 | AnalogIn y1(p19); |
vcazan | 0:e43a1f11a90b | 6 | AnalogIn z1(p20); |
vcazan | 0:e43a1f11a90b | 7 | DigitalOut led(LED1); |
vcazan | 0:e43a1f11a90b | 8 | |
vcazan | 0:e43a1f11a90b | 9 | DigitalIn start(p21); |
vcazan | 0:e43a1f11a90b | 10 | Serial pc(USBTX, USBRX); // tx, rx |
vcazan | 0:e43a1f11a90b | 11 | LocalFileSystem local("local"); // Create the local filesystem under the name "local" |
vcazan | 0:e43a1f11a90b | 12 | |
vcazan | 0:e43a1f11a90b | 13 | MobileLCD lcd(p5, p6, p7, p8, p9); |
vcazan | 0:e43a1f11a90b | 14 | |
vcazan | 0:e43a1f11a90b | 15 | int count=0; |
vcazan | 0:e43a1f11a90b | 16 | |
vcazan | 0:e43a1f11a90b | 17 | int main() { |
vcazan | 0:e43a1f11a90b | 18 | lcd.background(0x0000FF); |
vcazan | 0:e43a1f11a90b | 19 | lcd.cls(); |
vcazan | 0:e43a1f11a90b | 20 | |
vcazan | 0:e43a1f11a90b | 21 | |
vcazan | 0:e43a1f11a90b | 22 | lcd.printf("Waiting for start..."); |
vcazan | 0:e43a1f11a90b | 23 | for (int i=0; i<130; i++) { |
vcazan | 0:e43a1f11a90b | 24 | lcd.pixel(i, 80 + sin((float)i / 5.0)*10, 0x000000); |
vcazan | 0:e43a1f11a90b | 25 | } |
vcazan | 0:e43a1f11a90b | 26 | while (1) { |
vcazan | 0:e43a1f11a90b | 27 | |
vcazan | 0:e43a1f11a90b | 28 | pc.printf("%d",start.read()); |
vcazan | 0:e43a1f11a90b | 29 | if (start) { |
vcazan | 0:e43a1f11a90b | 30 | remove("/local/out.csv"); |
vcazan | 0:e43a1f11a90b | 31 | FILE *fp = fopen("/local/out.csv", "w"); // Open "out.txt" on the local file system for writing |
vcazan | 0:e43a1f11a90b | 32 | lcd.background(0x0000FF); |
vcazan | 0:e43a1f11a90b | 33 | lcd.cls(); |
vcazan | 0:e43a1f11a90b | 34 | while (start) { |
vcazan | 0:e43a1f11a90b | 35 | |
vcazan | 0:e43a1f11a90b | 36 | pc.printf("XValue %.4f , YValue %.4f , ZValue %.4f\n",x1.read(),y1.read(),z1.read()); |
vcazan | 0:e43a1f11a90b | 37 | fprintf(fp," %f , %f , %f\n",x1.read(),y1.read(),z1.read()); |
vcazan | 0:e43a1f11a90b | 38 | |
vcazan | 0:e43a1f11a90b | 39 | lcd.locate(0,3); |
vcazan | 0:e43a1f11a90b | 40 | lcd.printf("X:"); |
vcazan | 0:e43a1f11a90b | 41 | lcd.locate(0,6); |
vcazan | 0:e43a1f11a90b | 42 | lcd.printf("Y:"); |
vcazan | 0:e43a1f11a90b | 43 | lcd.locate(0,8); |
vcazan | 0:e43a1f11a90b | 44 | lcd.printf("Z:"); |
vcazan | 0:e43a1f11a90b | 45 | lcd.pixel(count++, -10 +x1.read()*100, 0x000000); |
vcazan | 0:e43a1f11a90b | 46 | lcd.pixel(count, 10+x1.read()*100, 0x000000); |
vcazan | 0:e43a1f11a90b | 47 | lcd.pixel(count,30+x1.read()*100, 0x000000); |
vcazan | 0:e43a1f11a90b | 48 | if (count == 120 ) { |
vcazan | 0:e43a1f11a90b | 49 | count = 0; |
vcazan | 0:e43a1f11a90b | 50 | lcd.cls(); |
vcazan | 0:e43a1f11a90b | 51 | } |
vcazan | 0:e43a1f11a90b | 52 | |
vcazan | 0:e43a1f11a90b | 53 | } |
vcazan | 0:e43a1f11a90b | 54 | fclose(fp); |
vcazan | 0:e43a1f11a90b | 55 | } |
vcazan | 0:e43a1f11a90b | 56 | |
vcazan | 0:e43a1f11a90b | 57 | |
vcazan | 0:e43a1f11a90b | 58 | |
vcazan | 0:e43a1f11a90b | 59 | |
vcazan | 0:e43a1f11a90b | 60 | } |
vcazan | 0:e43a1f11a90b | 61 | } |