TP完成形。2017/9/8作動確認。
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- Joeatsumi
- Date:
- 2017-09-08
- Revision:
- 0:aca3a53a33bd
File content as of revision 0:aca3a53a33bd:
#include "mbed.h" #include "SDFileSystem.h" //Serial pc(USBTX, USBRX); Serial pc(dp16,dp15); Ticker timer; Timer time2 ; DigitalIn sw(dp17); int i;//ドリフトを抑えるループの中で使う。 unsigned long beforeTime = 0; unsigned long elapsedTime = 0; unsigned long nowTime = 0; int flagHi = 0 ; int rpm = 0 ; double t; //SDFileSystem sd(p5,p6,p7,p8,"sd");//lpc1768用 SDFileSystem sd(dp2,dp1,dp6,dp13,"sd");//lpc1114fn28用 AnalogIn vin (dp9); AnalogIn hole(dp10); float v; float vin_center=0; FILE* fp; void SD() { fprintf(fp,"%f,%d,%.3f,%.3f\n",t,rpm,v,vin_center); t += 0.01; } int main() { //==========初期電圧のドリフトを押さえる=========// for(i=0;i<10;i++){ vin_center= vin_center + vin.read()*3.3; wait(0.01); } vin_center=vin_center/10.0; //==========================================// pc.printf("Start!\n"); // printf("Start!\n"); time2.start(); fp = fopen("/sd/power_meter_data.csv", "w"); if(fp == NULL) { error("Could not open file for write\n"); } pc.printf("Start writing!\n"); // printf("Start writing!\n"); // void SD_p(); fclose(fp); fp = fopen("/sd/power_meter_data.csv", "w"); // fprintf(fp,"power_meter_data\n"); fprintf(fp,"t,rpm,v,vin_center\n"); timer.attach(&SD, 0.01); while(1){ v=vin.read()*3.3; //回転数計算 nowTime = time2.read_ms(); if(hole >= 0.5 && flagHi == 0){//パルスHi pc.printf("%d\r\n",rpm); elapsedTime = nowTime - beforeTime;//前回パルスアップからの経過時間 rpm = 60000 / elapsedTime ; beforeTime = time2.read_ms();//今の時間を記録する flagHi = 1; } if (hole <0.5 && flagHi == 1){//パルスLow flagHi = 0; } if(nowTime - beforeTime>6000){ elapsedTime=0; }//回転数end if(sw==1) { timer.detach(); break; } }//while end fclose(fp); // printf("Finish!!\n"); //printf("Pased time %.2f\n",t); pc.printf("Finish!!\n"); pc.printf("Pased time %.2f\n",t); }