test
Dependencies: SDFileSystem mbed
main.cpp@0:5d1752467f09, 2017-08-17 (annotated)
- Committer:
- Joeatsumi
- Date:
- Thu Aug 17 09:03:15 2017 +0000
- Revision:
- 0:5d1752467f09
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joeatsumi | 0:5d1752467f09 | 1 | //本番,TFで作動させたプログラム// |
Joeatsumi | 0:5d1752467f09 | 2 | //製作者 S-240執行代__戸田純實_(あだ名Joe Backer)// |
Joeatsumi | 0:5d1752467f09 | 3 | |
Joeatsumi | 0:5d1752467f09 | 4 | #include "mbed.h" |
Joeatsumi | 0:5d1752467f09 | 5 | #include "SDFileSystem.h" |
Joeatsumi | 0:5d1752467f09 | 6 | #define P_HI 1000 |
Joeatsumi | 0:5d1752467f09 | 7 | #define P_LO 120 |
Joeatsumi | 0:5d1752467f09 | 8 | AnalogIn analog9(dp9); |
Joeatsumi | 0:5d1752467f09 | 9 | AnalogIn analog10(dp10); |
Joeatsumi | 0:5d1752467f09 | 10 | DigitalOut myled1(LED1); |
Joeatsumi | 0:5d1752467f09 | 11 | Timer Time ; |
Joeatsumi | 0:5d1752467f09 | 12 | Ticker sd_write ; |
Joeatsumi | 0:5d1752467f09 | 13 | |
Joeatsumi | 0:5d1752467f09 | 14 | int i; |
Joeatsumi | 0:5d1752467f09 | 15 | unsigned long beforeTime = 0; |
Joeatsumi | 0:5d1752467f09 | 16 | unsigned long elapsedTime = 0; |
Joeatsumi | 0:5d1752467f09 | 17 | unsigned long nowTime = 0; |
Joeatsumi | 0:5d1752467f09 | 18 | int flagHi = 0 ; |
Joeatsumi | 0:5d1752467f09 | 19 | int rpm = 0 ; |
Joeatsumi | 0:5d1752467f09 | 20 | double vin = 0 ; |
Joeatsumi | 0:5d1752467f09 | 21 | double vin_center = 0 ; |
Joeatsumi | 0:5d1752467f09 | 22 | double power =0; // |
Joeatsumi | 0:5d1752467f09 | 23 | double t =0; |
Joeatsumi | 0:5d1752467f09 | 24 | Serial pc(dp16,dp15); |
Joeatsumi | 0:5d1752467f09 | 25 | |
Joeatsumi | 0:5d1752467f09 | 26 | void SD(){ |
Joeatsumi | 0:5d1752467f09 | 27 | __disable_irq();//この関数を最優先に割り込みする。 |
Joeatsumi | 0:5d1752467f09 | 28 | myled1 = 0 ; |
Joeatsumi | 0:5d1752467f09 | 29 | SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); |
Joeatsumi | 0:5d1752467f09 | 30 | mkdir("/sd/mydir", 0777); |
Joeatsumi | 0:5d1752467f09 | 31 | FILE *fp = fopen("/sd/mydir/power.csv", "a"); |
Joeatsumi | 0:5d1752467f09 | 32 | if(fp == NULL){ |
Joeatsumi | 0:5d1752467f09 | 33 | error("Could not open file for write\n"); |
Joeatsumi | 0:5d1752467f09 | 34 | myled1 = 0 ; |
Joeatsumi | 0:5d1752467f09 | 35 | } |
Joeatsumi | 0:5d1752467f09 | 36 | else{ |
Joeatsumi | 0:5d1752467f09 | 37 | myled1 = 1 ; |
Joeatsumi | 0:5d1752467f09 | 38 | fprintf(fp,"%d,%d,%.2f,%.2f\r\n",nowTime,rpm,vin,vin_center); |
Joeatsumi | 0:5d1752467f09 | 39 | } |
Joeatsumi | 0:5d1752467f09 | 40 | fclose(fp); |
Joeatsumi | 0:5d1752467f09 | 41 | free(fp); |
Joeatsumi | 0:5d1752467f09 | 42 | __enable_irq(); |
Joeatsumi | 0:5d1752467f09 | 43 | }//割り込み終了 |
Joeatsumi | 0:5d1752467f09 | 44 | |
Joeatsumi | 0:5d1752467f09 | 45 | int main(){ |
Joeatsumi | 0:5d1752467f09 | 46 | |
Joeatsumi | 0:5d1752467f09 | 47 | |
Joeatsumi | 0:5d1752467f09 | 48 | //==========初期電圧のドリフトを押さえる=========// |
Joeatsumi | 0:5d1752467f09 | 49 | for(i=0;i<10;i++){ |
Joeatsumi | 0:5d1752467f09 | 50 | vin_center= vin_center + analog9.read()*3.3; |
Joeatsumi | 0:5d1752467f09 | 51 | wait(0.01); |
Joeatsumi | 0:5d1752467f09 | 52 | } |
Joeatsumi | 0:5d1752467f09 | 53 | |
Joeatsumi | 0:5d1752467f09 | 54 | vin_center=vin_center/10; |
Joeatsumi | 0:5d1752467f09 | 55 | //==========================================// |
Joeatsumi | 0:5d1752467f09 | 56 | |
Joeatsumi | 0:5d1752467f09 | 57 | |
Joeatsumi | 0:5d1752467f09 | 58 | Time.start(); |
Joeatsumi | 0:5d1752467f09 | 59 | sd_write.attach(&SD,1);//壱秒ごとにSDという関数を発動し、割り込みする。 |
Joeatsumi | 0:5d1752467f09 | 60 | while(1){ |
Joeatsumi | 0:5d1752467f09 | 61 | |
Joeatsumi | 0:5d1752467f09 | 62 | |
Joeatsumi | 0:5d1752467f09 | 63 | vin = analog9.read() * 3.3 ; |
Joeatsumi | 0:5d1752467f09 | 64 | |
Joeatsumi | 0:5d1752467f09 | 65 | |
Joeatsumi | 0:5d1752467f09 | 66 | //回転数計算 |
Joeatsumi | 0:5d1752467f09 | 67 | // __disable_irq(); |
Joeatsumi | 0:5d1752467f09 | 68 | nowTime = Time.read_ms(); |
Joeatsumi | 0:5d1752467f09 | 69 | |
Joeatsumi | 0:5d1752467f09 | 70 | if(analog10 >= 0.5 && flagHi == 0){//パルスHi |
Joeatsumi | 0:5d1752467f09 | 71 | pc.printf("%d\r\n",rpm); |
Joeatsumi | 0:5d1752467f09 | 72 | elapsedTime = nowTime - beforeTime;//前回パルスアップからの経過時間 |
Joeatsumi | 0:5d1752467f09 | 73 | rpm = 60000 / elapsedTime ; |
Joeatsumi | 0:5d1752467f09 | 74 | beforeTime = Time.read_ms();//今の時間を記録する |
Joeatsumi | 0:5d1752467f09 | 75 | flagHi = 1; |
Joeatsumi | 0:5d1752467f09 | 76 | } |
Joeatsumi | 0:5d1752467f09 | 77 | if (analog10 <0.5 && flagHi == 1){//パルスLow |
Joeatsumi | 0:5d1752467f09 | 78 | flagHi = 0; |
Joeatsumi | 0:5d1752467f09 | 79 | } |
Joeatsumi | 0:5d1752467f09 | 80 | if(nowTime - beforeTime>6000){ |
Joeatsumi | 0:5d1752467f09 | 81 | elapsedTime=0; |
Joeatsumi | 0:5d1752467f09 | 82 | } |
Joeatsumi | 0:5d1752467f09 | 83 | //__enable_irq(); |
Joeatsumi | 0:5d1752467f09 | 84 | wait(0.01); |
Joeatsumi | 0:5d1752467f09 | 85 | } |
Joeatsumi | 0:5d1752467f09 | 86 | } |
Joeatsumi | 0:5d1752467f09 | 87 |