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
Diff: main.cpp
- Revision:
- 0:5d1752467f09
diff -r 000000000000 -r 5d1752467f09 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Thu Aug 17 09:03:15 2017 +0000
@@ -0,0 +1,87 @@
+//本番,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);
+ }
+}
+