joe carter
/
nitrocarproject
Diff: main_programs/main4.h
- Revision:
- 0:960b355eaa84
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_programs/main4.h Fri Aug 20 11:18:40 2010 +0000 @@ -0,0 +1,96 @@ +#include "mbed.h" +#include "TextLCD.h" +#include "Counter.h" +#include "LIS302.h" +#include "Servo.h" + +Servo myservo(p21); +LIS302 acc (p5,p6,p7,p8); +DigitalIn enable(p20); +DigitalOut LIS302(LIS302); +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); +#define TICK_PERIOD 1.0 +LocalFileSystem local("local"); +Counter counter(p18); + + +Ticker tick; + +Timer t; +volatile int tick_active = 0; + +void dotick (void) { + tick_active = 1; + led1 = !led1; +} +int rpm_counter=0; +int main() { + + float samples [5] = {0}; + int index = 0; + int flipped_right = 1; + int flipped_left = 1; + + TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3 + FILE *fp = fopen("/local/car data.csv", "w"); + fprintf(fp, "RPM,X,Y,Z\n"); + tick.attach(dotick,1.0); + while (1) { + if (enable) { + + t.start (); + + + while (enable) { + led4 = 0; + while (tick_active == 0) {} + led2 = !led2; + rpm_counter = counter.read(); + counter.reset(); + + fprintf(fp,"%d,%.2f,%.2f,%.2f\n",60*rpm_counter,acc.x(),acc.y(),acc.z()); + + tick_active = 0; + led3 = !led3; + + samples[index] = acc.y(); + index++; + if (index >= 5) { + index = 0; + } + int i; + + flipped_right = 1; + flipped_left =1; + + for (i=0; i<5; i++) { + if (samples[i] > -0.8) { + flipped_left = 0; + } + + if (samples[i] < 0.8) { + flipped_right = 0; + } + } + + if (flipped_left||flipped_right||!enable) { + + + myservo = 1; + + t.stop(); + + fprintf(fp,"this run lasted %f seconds \n", t.read()); + fprintf(fp,"off,off,off,off"); + fclose(fp); + led4 = !led4; + led2 = 0; + led3 = 0; + } + } + } + } +}