test
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- Joeatsumi
- Date:
- 2017-08-17
- Revision:
- 0:5d1752467f09
File content as of revision 0:5d1752467f09:
//本番,TFで作動させたプログラム// //製作者 S-240執行代__戸田純實_(あだ名Joe Backer)// #include "mbed.h" #include "SDFileSystem.h" #define P_HI 1000 #define P_LO 120 AnalogIn analog9(dp9); AnalogIn analog10(dp10); DigitalOut myled1(LED1); Timer Time ; Ticker sd_write ; int i; unsigned long beforeTime = 0; unsigned long elapsedTime = 0; unsigned long nowTime = 0; int flagHi = 0 ; int rpm = 0 ; double vin = 0 ; double vin_center = 0 ; double power =0; // double t =0; Serial pc(dp16,dp15); void SD(){ __disable_irq();//この関数を最優先に割り込みする。 myled1 = 0 ; SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/power.csv", "a"); if(fp == NULL){ error("Could not open file for write\n"); myled1 = 0 ; } else{ myled1 = 1 ; fprintf(fp,"%d,%d,%.2f,%.2f\r\n",nowTime,rpm,vin,vin_center); } fclose(fp); free(fp); __enable_irq(); }//割り込み終了 int main(){ //==========初期電圧のドリフトを押さえる=========// for(i=0;i<10;i++){ vin_center= vin_center + analog9.read()*3.3; wait(0.01); } vin_center=vin_center/10; //==========================================// Time.start(); sd_write.attach(&SD,1);//壱秒ごとにSDという関数を発動し、割り込みする。 while(1){ vin = analog9.read() * 3.3 ; //回転数計算 // __disable_irq(); nowTime = Time.read_ms(); if(analog10 >= 0.5 && flagHi == 0){//パルスHi pc.printf("%d\r\n",rpm); elapsedTime = nowTime - beforeTime;//前回パルスアップからの経過時間 rpm = 60000 / elapsedTime ; beforeTime = Time.read_ms();//今の時間を記録する flagHi = 1; } if (analog10 <0.5 && flagHi == 1){//パルスLow flagHi = 0; } if(nowTime - beforeTime>6000){ elapsedTime=0; } //__enable_irq(); wait(0.01); } }