Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed
main.cpp
00001 //本番,TFで作動させたプログラム// 00002 //製作者 S-240執行代__戸田純實_(あだ名Joe Backer)// 00003 00004 #include "mbed.h" 00005 #include "SDFileSystem.h" 00006 #define P_HI 1000 00007 #define P_LO 120 00008 AnalogIn analog9(dp9); 00009 AnalogIn analog10(dp10); 00010 DigitalOut myled1(LED1); 00011 Timer Time ; 00012 Ticker sd_write ; 00013 00014 int i; 00015 unsigned long beforeTime = 0; 00016 unsigned long elapsedTime = 0; 00017 unsigned long nowTime = 0; 00018 int flagHi = 0 ; 00019 int rpm = 0 ; 00020 double vin = 0 ; 00021 double vin_center = 0 ; 00022 double power =0; // 00023 double t =0; 00024 Serial pc(dp16,dp15); 00025 00026 void SD(){ 00027 __disable_irq();//この関数を最優先に割り込みする。 00028 myled1 = 0 ; 00029 SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); 00030 mkdir("/sd/mydir", 0777); 00031 FILE *fp = fopen("/sd/mydir/power.csv", "a"); 00032 if(fp == NULL){ 00033 error("Could not open file for write\n"); 00034 myled1 = 0 ; 00035 } 00036 else{ 00037 myled1 = 1 ; 00038 fprintf(fp,"%d,%d,%.2f,%.2f\r\n",nowTime,rpm,vin,vin_center); 00039 } 00040 fclose(fp); 00041 free(fp); 00042 __enable_irq(); 00043 }//割り込み終了 00044 00045 int main(){ 00046 00047 00048 //==========初期電圧のドリフトを押さえる=========// 00049 for(i=0;i<10;i++){ 00050 vin_center= vin_center + analog9.read()*3.3; 00051 wait(0.01); 00052 } 00053 00054 vin_center=vin_center/10; 00055 //==========================================// 00056 00057 00058 Time.start(); 00059 sd_write.attach(&SD,1);//壱秒ごとにSDという関数を発動し、割り込みする。 00060 while(1){ 00061 00062 00063 vin = analog9.read() * 3.3 ; 00064 00065 00066 //回転数計算 00067 // __disable_irq(); 00068 nowTime = Time.read_ms(); 00069 00070 if(analog10 >= 0.5 && flagHi == 0){//パルスHi 00071 pc.printf("%d\r\n",rpm); 00072 elapsedTime = nowTime - beforeTime;//前回パルスアップからの経過時間 00073 rpm = 60000 / elapsedTime ; 00074 beforeTime = Time.read_ms();//今の時間を記録する 00075 flagHi = 1; 00076 } 00077 if (analog10 <0.5 && flagHi == 1){//パルスLow 00078 flagHi = 0; 00079 } 00080 if(nowTime - beforeTime>6000){ 00081 elapsedTime=0; 00082 } 00083 //__enable_irq(); 00084 wait(0.01); 00085 } 00086 } 00087
Generated on Fri Jul 22 2022 21:24:34 by
1.7.2