改良型。2017/9/6作動。
Dependencies: SDFileSystem mbed
Fork of Power_meter_kai_TP2 by
main.cpp
- Committer:
- Joeatsumi
- Date:
- 2017-09-06
- Revision:
- 5:131cbc4990e9
- Parent:
- 4:5858bcd3dc60
File content as of revision 5:131cbc4990e9:
#include "mbed.h" #include "SDFileSystem.h" //SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); Serial pc(dp16,dp15); Timer Time ; Ticker sd_write ; DigitalOut myled1(LED1); AnalogIn vin(dp9); //Serial pc(dp16,dp15); int count =0;//最初はTimeLog[0]から始まる static unsigned long TimeLog[20];//10個の要素を「箱」を用意する float VinLog[20]; float v; //mbedはfloat値として電圧を12bitで変換する。 unsigned long nowTime = 0; void SD(){//この関数を0.05秒ごとに呼び出して、その度に経過時間をTimeLog[]に代入する。 //つまり、50ms毎の時間が配列に保存される。 //1000ms経過するとそれらの値をまとめてsdカードに保存する。 __disable_irq();//この関数を最優先に割り込みする。 myled1 = 0 ; if(count<19){ TimeLog[count]=nowTime; VinLog[count]=v; pc.printf("Bridge=%.2f\r\n",VinLog[count]); count++; }else{ TimeLog[19]=nowTime; VinLog[19]=v; pc.printf("Bridge=%.2f\n",VinLog[count]); mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/sdtest_kai.csv", "a"); if(fp == NULL) { error("Could not open file for write\n"); } // fprintf(fp, "%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n",TimeLog[0],TimeLog[1],TimeLog[2],TimeLog[3],TimeLog[4],TimeLog[5],TimeLog[6],TimeLog[7],TimeLog[8],TimeLog[9] // ,TimeLog[10],TimeLog[11],TimeLog[12],TimeLog[13],TimeLog[14],TimeLog[15],TimeLog[16],TimeLog[17],TimeLog[18],TimeLog[19]); fprintf(fp,"%d,%.2f\r\n%d,%.2f\r\n%d,%.2f\r\n",TimeLog[0],VinLog[0],TimeLog[1],VinLog[1],TimeLog[2],VinLog[2]); myled1 = 1 ; fclose(fp); free(fp); pc.printf("Noe logging\r\n"); count=0;//カウントをリセットする }//if end __enable_irq(); } int main(){ Time.start(); sd_write.attach(&SD,0.05);//0.05秒ごとにSDという関数を発動し、割り込みする。 while(1){ nowTime = Time.read_ms(); v=vin.read()*3.3; } }