![](/media/cache/profiles/DSC_0001.jpg.50x50_q85.jpg)
改良型。2017/9/6作動。
Dependencies: SDFileSystem mbed
Fork of Power_meter_kai_TP2 by
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 00004 //SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board 00005 SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); 00006 Serial pc(dp16,dp15); 00007 Timer Time ; 00008 Ticker sd_write ; 00009 DigitalOut myled1(LED1); 00010 AnalogIn vin(dp9); 00011 //Serial pc(dp16,dp15); 00012 00013 00014 int count =0;//最初はTimeLog[0]から始まる 00015 00016 static unsigned long TimeLog[20];//10個の要素を「箱」を用意する 00017 00018 float VinLog[20]; 00019 float v; //mbedはfloat値として電圧を12bitで変換する。 00020 00021 unsigned long nowTime = 0; 00022 00023 00024 00025 void SD(){//この関数を0.05秒ごとに呼び出して、その度に経過時間をTimeLog[]に代入する。 00026 //つまり、50ms毎の時間が配列に保存される。 00027 //1000ms経過するとそれらの値をまとめてsdカードに保存する。 00028 00029 __disable_irq();//この関数を最優先に割り込みする。 00030 myled1 = 0 ; 00031 00032 if(count<19){ 00033 00034 TimeLog[count]=nowTime; 00035 VinLog[count]=v; 00036 pc.printf("Bridge=%.2f\r\n",VinLog[count]); 00037 00038 count++; 00039 00040 }else{ 00041 00042 TimeLog[19]=nowTime; 00043 VinLog[19]=v; 00044 00045 pc.printf("Bridge=%.2f\n",VinLog[count]); 00046 00047 mkdir("/sd/mydir", 0777); 00048 00049 FILE *fp = fopen("/sd/mydir/sdtest_kai.csv", "a"); 00050 if(fp == NULL) { 00051 error("Could not open file for write\n"); 00052 } 00053 // 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] 00054 // ,TimeLog[10],TimeLog[11],TimeLog[12],TimeLog[13],TimeLog[14],TimeLog[15],TimeLog[16],TimeLog[17],TimeLog[18],TimeLog[19]); 00055 00056 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]); 00057 00058 myled1 = 1 ; 00059 fclose(fp); 00060 free(fp); 00061 00062 pc.printf("Noe logging\r\n"); 00063 00064 count=0;//カウントをリセットする 00065 00066 }//if end 00067 00068 __enable_irq(); 00069 } 00070 00071 00072 int main(){ 00073 Time.start(); 00074 sd_write.attach(&SD,0.05);//0.05秒ごとにSDという関数を発動し、割り込みする。 00075 00076 while(1){ 00077 nowTime = Time.read_ms(); 00078 v=vin.read()*3.3; 00079 } 00080 }
Generated on Mon Jul 25 2022 02:16:09 by
![doxygen](doxygen.png)