Record SPS30 in SD

Dependencies:   mbed SPS30 SDFileSystem

Committer:
imadaemi
Date:
Fri Jan 29 03:58:04 2021 +0000
Revision:
0:89ada12b9a15
Record SPS30 in SD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
imadaemi 0:89ada12b9a15 1 //21.01.06_0しか出ないけど,動作確認済み
imadaemi 0:89ada12b9a15 2 //21.01.20_値がでるようになった.動作確認済み
imadaemi 0:89ada12b9a15 3 //21.01.28_SDと統合
imadaemi 0:89ada12b9a15 4
imadaemi 0:89ada12b9a15 5 //自動ファンクリーニングは毎回すること
imadaemi 0:89ada12b9a15 6 //起動後,有効な値がとれるまでの待機時間が必要
imadaemi 0:89ada12b9a15 7 //サンプリング間隔は1sごと
imadaemi 0:89ada12b9a15 8
imadaemi 0:89ada12b9a15 9 #include "mbed.h"
imadaemi 0:89ada12b9a15 10 #include "sps30.h"
imadaemi 0:89ada12b9a15 11 #include "SDFileSystem.h"
imadaemi 0:89ada12b9a15 12
imadaemi 0:89ada12b9a15 13 Serial pc(USBTX, USBRX, 115200);
imadaemi 0:89ada12b9a15 14 Sps30 sps(D4, D5, 100000);
imadaemi 0:89ada12b9a15 15 //SDFileSystem sd_file_system(A6,A5,A4,A3,"sd");
imadaemi 0:89ada12b9a15 16 SDFileSystem sd_file_system(D11,D12,D13,D10,"sd");
imadaemi 0:89ada12b9a15 17
imadaemi 0:89ada12b9a15 18 int main(){
imadaemi 0:89ada12b9a15 19 pc.printf("Hello PC!\r\n");
imadaemi 0:89ada12b9a15 20
imadaemi 0:89ada12b9a15 21 /*****SD準備******************/
imadaemi 0:89ada12b9a15 22
imadaemi 0:89ada12b9a15 23 mkdir("/sd/mydir", 0777);
imadaemi 0:89ada12b9a15 24
imadaemi 0:89ada12b9a15 25 FILE *fp = fopen("/sd/mydir/spstest.txt", "w");
imadaemi 0:89ada12b9a15 26 if(fp == NULL) {
imadaemi 0:89ada12b9a15 27 error("Could not open file for write\r\n");
imadaemi 0:89ada12b9a15 28 }
imadaemi 0:89ada12b9a15 29
imadaemi 0:89ada12b9a15 30 /*****初期設定*****************/
imadaemi 0:89ada12b9a15 31 while(1){
imadaemi 0:89ada12b9a15 32 wait(1.0f);
imadaemi 0:89ada12b9a15 33 // pc.printf("%d\r\n",sps.InitSPS30());
imadaemi 0:89ada12b9a15 34 if(sps.InitSPS30() == 1){
imadaemi 0:89ada12b9a15 35 pc.printf("SPS30 is Ready!!\r\n");
imadaemi 0:89ada12b9a15 36 break;
imadaemi 0:89ada12b9a15 37 }else{
imadaemi 0:89ada12b9a15 38 pc.printf("waiting...\r\n");
imadaemi 0:89ada12b9a15 39 pc.printf("%d\r\n", sps.InitSPS30());
imadaemi 0:89ada12b9a15 40 }
imadaemi 0:89ada12b9a15 41 }
imadaemi 0:89ada12b9a15 42
imadaemi 0:89ada12b9a15 43 /*****手動ファンクリーニング*****//*****注:毎回すること!!!*******/
imadaemi 0:89ada12b9a15 44 /*
imadaemi 0:89ada12b9a15 45 sps.StartFanClean();
imadaemi 0:89ada12b9a15 46 pc.printf("Fan Cleaning!\r\n");
imadaemi 0:89ada12b9a15 47 */
imadaemi 0:89ada12b9a15 48
imadaemi 0:89ada12b9a15 49 /*****計測*********************/
imadaemi 0:89ada12b9a15 50 while(1){
imadaemi 0:89ada12b9a15 51 wait(1.0f);//サンプリング間隔は1sごと
imadaemi 0:89ada12b9a15 52 if(sps.PollSPS30() == 3){
imadaemi 0:89ada12b9a15 53 pc.printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n", sps.mass_1p0_f, sps.mass_2p5_f, sps.mass_4p0_f, sps.mass_10p0_f, sps.num_0p5_f, sps.num_1p0_f, sps.num_2p5_f, sps.num_4p0_f, sps.num_10p0_f, sps.typ_pm_size_f);
imadaemi 0:89ada12b9a15 54 fprintf(fp, "%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n", sps.mass_1p0_f, sps.mass_2p5_f, sps.mass_4p0_f, sps.mass_10p0_f, sps.num_0p5_f, sps.num_1p0_f, sps.num_2p5_f, sps.num_4p0_f, sps.num_10p0_f, sps.typ_pm_size_f);
imadaemi 0:89ada12b9a15 55
imadaemi 0:89ada12b9a15 56 }else{
imadaemi 0:89ada12b9a15 57 pc.printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
imadaemi 0:89ada12b9a15 58 fprintf(fp, "%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
imadaemi 0:89ada12b9a15 59 }
imadaemi 0:89ada12b9a15 60 }
imadaemi 0:89ada12b9a15 61 fclose(fp);
imadaemi 0:89ada12b9a15 62 }