Output the angle data of Encoder
Dependencies: AD5754 FatFileSystem Impact_nagano_0630 MSCFileSystem QEI mbed
Revision 1:f37787740470, committed 2016-07-16
- Comitter:
- hikaru24
- Date:
- Sat Jul 16 00:19:40 2016 +0000
- Parent:
- 0:27283d71db7d
- Child:
- 2:8b24c7cfc9b2
- Commit message:
- impact_measurement_0712
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Jul 02 11:03:56 2016 +0000 +++ b/main.cpp Sat Jul 16 00:19:40 2016 +0000 @@ -16,7 +16,7 @@ #define RECORD_PERIOD 1.0 -#define SAVE_NUMBER 2048 +#define SAVE_NUMBER 1024 // 5(kHz) * 0.2(s) = 1000 #define AVE_WINDOW 10 #define VEL_WINDOW 10 @@ -65,6 +65,7 @@ USBHostMSD msd("usb"); + while(!msd.connect()){ wait(1); } @@ -145,6 +146,7 @@ start_flag = false; pc.printf("\nHAPTIC test start\n"); + /* pc.printf("\nFile reading:\n"); FILE *fp = fopen( "/usb/test.csv", "r"); @@ -152,6 +154,7 @@ { error("\nCould not open file\n"); } + */ /* while( (ret=fscanf(fp, "%d", &data)) != EOF){ @@ -162,7 +165,7 @@ */ - fclose(fp); + //fclose(fp); wait(0.5); pc.printf("Start initialization\nLift device\n\n"); @@ -190,9 +193,9 @@ encoder_buf[0] = encoder_cnt; encoder_ave = encoder_ave/AVE_WINDOW; - if(encoder_ave > 600){ - //state = BEFORE_IMPACT_STATE; - //pc.printf("Finish initialization\n\n"); + if(encoder_ave < -350){ + state = BEFORE_IMPACT_STATE; + pc.printf("Finish initialization\n\n"); } @@ -203,7 +206,7 @@ print_cnt++; ////// DA converter ////// - DAdata[0] = (uint16_t)((int16_t)(65535)); // 16bit; 0 ~ 32768 ~ 65535 (-5 ~0 ~ 5(V)) + DAdata[0] = (uint16_t)((int16_t)(32768)); // 16bit; 0 ~ 32768 ~ 65535 (-5 ~0 ~ 5(V)) if(DAdata[0] > 65536){ DAdata[0] = 0; } @@ -228,17 +231,19 @@ */ // Save piezo data in save_data[0] ~ [99] + /* save_data[100] = piezo_val; for(save_cnt=0; save_cnt<100; save_cnt++){ save_data[save_cnt] = save_data[save_cnt+1]; } + */ } if(encoder_flag){ encoder_flag = false; encoder_cnt = encoder.getPulses(); // One of the encoders needs a sign change - /* + encoder_ave = encoder_cnt; for(int i=0; i<AVE_WINDOW-1; i++){ encoder_buf[i+1] = encoder_buf[i]; @@ -246,22 +251,36 @@ } encoder_buf[0] = encoder_cnt; encoder_ave = encoder_ave/AVE_WINDOW; - */ + - /* - for(int i=0; i<VEL_WINDOW-1; i++){ + + for(int i=VEL_WINDOW-2; i>=0; i--){ encoder_ave_buf[i+1] = encoder_ave_buf[i]; } encoder_ave_buf[0] = encoder_ave; encoder_vel = encoder_ave_buf[VEL_WINDOW-1] - encoder_ave_buf[0]; - */ + + if(print_cnt > 1000000/ENCODER_PERIOD_US){ + printf("velocity = %d\n", encoder_vel); + print_cnt = 0; + } + print_cnt++; //if(encoder_cnt < 1 && encoder_vel >10){ - if(encoder_cnt < 1){ + if(encoder_cnt > -1 && encoder_vel == -16){ // state = AFTER_IMPACT_STATE; pc.printf("Collision!!\n\n"); + printf("Collision velocity = %d\n", encoder_vel); start_time = t.read(); save_cnt = 100; + + DAdata[0] = (uint16_t)((int16_t)(50000)); // 16bit; 0 ~ 32768 ~ 65535 (-5 ~0 ~ 5(V)) + if(DAdata[0] > 65536){ + DAdata[0] = 0; + } + channel = 0; + dac.send(channel, DAdata[0]); + } /* @@ -274,35 +293,28 @@ } break; case AFTER_IMPACT_STATE: - if(t.read() > start_time + RECORD_PERIOD){ - main_flag = false; - end_flag = true; + DAdata[0] = (uint16_t)((int16_t)(50000)); // 16bit; 0 ~ 32768 ~ 65535 (-5 ~0 ~ 5(V)) + if(DAdata[0] > 65536){ + DAdata[0] = 0; } - if(piezo_flag){ - piezo_flag = false; - piezo_val = piezo; // 0.0(0.0V)~ 0.5(1.65V) ~ 1.0(3.3V) - /* - if(print_cnt > 1000000/PIEZO_PERIOD_US){ - //printf("piezosensor = %0.3f\n", piezo_val); - //printf("time = %f\n", t.read()); - print_cnt = 0; - } - print_cnt++; - */ + channel = 0; + dac.send(channel, DAdata[0]); - // Save piezo data in save_data[100] ~ [2047] - if(save_cnt < SAVE_NUMBER){ - save_data[save_cnt] = piezo_val; - save_cnt++; - } - - } /* if(vibrator_flag){ vibrator_flag = false; //vibrator = vib_cmd; } */ + + pc.printf("'R' key: Restart\n\n"); + while(state == AFTER_IMPACT_STATE) { + if(pc.readable()){ + if(pc.getc() == 'r'){ + state = INITIALISATION_STATE; + } + } + } break; default: state = INITIALISATION_STATE; @@ -332,9 +344,9 @@ wait(1); while(end_flag){ - /* + FILE *fp; - fp = fopen("/local/hap_test.csv", "w"); + fp = fopen("/usb/test.csv", "w"); if(fp == NULL){ error("Could not open file for write\n"); } @@ -344,7 +356,7 @@ } fclose(fp); } - */ + end_flag = false; } printf("END Haptic test\n");