20210420_monitor
Dependencies: mbed SB1602E TextLCD MSCFILESytem FatFileSystemCpp
Diff: main.cpp
- Revision:
- 3:d10c0110f1f0
- Parent:
- 2:14b832fdd69f
- Child:
- 4:b9669a9feabd
--- a/main.cpp Thu Sep 03 02:55:39 2020 +0000 +++ b/main.cpp Mon Jun 07 08:19:14 2021 +0000 @@ -48,6 +48,8 @@ char cary[30] = {}; bool usbCheck = 0; //USBメモリが接続されているかいないか判定する変数 bool USBcheck = 0; +int MPPTerror; +int MPPTerror_2; void MSC_init(){ //USBメモリの初期設定関数 pc.printf("\n\r" ); @@ -75,7 +77,7 @@ pc.printf( "FileNumber==> %s\n\r", nunu ); // fprintf( fp,"%d\n", fileNumber ); //変えた番号をfileNumber.txtに書き込み fclose(fp); - std::string str_1 = "/usb/Monitor"; //char* c_str = filename.c_str(); + std::string str_1 = "/usb/MonitorMPPTtest"; //char* c_str = filename.c_str(); str_1 += nunu[0]; str_1 += nunu[1]; str_1 += nunu[2]; str_1 += nunu[3]; str_1 += nunu[4]; str_1 += ".csv"; str_1.copy( cary, 30 ); @@ -96,8 +98,10 @@ dutylatio = (signed char)msgCAN.data[6]; //アクセル開度は0~100表示のため,そのまま } else if( msgCAN.id == 0x20 ){ //送られてきたデータのIDが0x20であればデータ処理する MPPTID: 0x20 - Vsolar = ( (float)( (msgCAN.data[0]*100) + msgCAN.data[1]) ) / 10; + Vsolar = ( (float)( (msgCAN.data[0]*100) + msgCAN.data[1]) ) / 10; Csolar = ( (float)( (signed int)((signed char)msgCAN.data[2]*100) + (signed char)msgCAN.data[3] ) ) / 100; + MPPTerror = msgCAN.data[4]; + MPPTerror_2 = msgCAN.data[5]; Psolar = Vsolar * Csolar; } else if( msgCAN.id == 0x30 ){ //送られてきたデータのIDが0x10であればデータ処理する BMSID: 0x30 @@ -119,9 +123,23 @@ lcd1.locate(0, 1); //4*20LCDの2行目に表示 lcd1.printf("B:%5.1fv%5.1fA%5.0fw", Vbatt, Cbatt, Pbatt); //-10.0Aとかでも表示の桁が変わらないように%5.1fにしている lcd1.locate(0, 2); //4*20LCDの3行目に表示 - lcd1.printf("M:%5.1fv%5.1fA", Vmotor, Cmotor); - lcd1.locate(0, 3); //4*20LCDの4行目に表示 - lcd1.printf("S:%5.1fv%5.1fA", Vsolar, Csolar); + lcd1.printf("M:%5.1fv%5.1fA", Vmotor, Cmotor); + if(MPPTerror == 0){ + lcd1.locate(0, 3); //4*20LCDの4行目に表示 + lcd1.printf("S:%5.1fv%5.1fA", Vsolar, Csolar); + } + if(MPPTerror_2 == 0){ + lcd1.locate(0, 3); //4*20LCDの4行目に表示 + lcd1.printf("S:%5.1fv%5.1fA", Vsolar, Csolar); + } + if (MPPTerror == 1){ + lcd1.locate(0, 3); //4*20LCDの4行目に表示 + lcd1.printf("S:X%3.1fv%5.1fA", Vsolar, Csolar); + } + if (MPPTerror_2 == 1){ + lcd1.locate(0, 3); //4*20LCDの4行目に表示 + lcd1.printf("S:XX%3.1fv%5.1fA", Vsolar, Csolar); + } //デカ文字LCDへの表示 lcd2.printf( 0, "%5.1fkm/h %5.1fv\r", speed, Vmotor ); // 速度、IPM入力電圧(システム電圧)の表示 lcd2.printf( 1, "%5.0fw %4.0fw %3d\r", Pmotor, Psolar, dutylatio ); //消費電力、発電電力、バッテリ電圧の表示 @@ -137,7 +155,7 @@ xbee.printf("XBee => OK"); can1.attach(&Handler_can1Recieve, CAN::RxIrq); //CAN受信割り込みの設定 can1.attach(&Handler_can1Error, CAN::BeIrq ); //バスエラー時の割り込み設定 - MSC_init(); //USBメモリ初期化 + MSC_init(); //USBメモリ初期化 //usb pc.printf(" SPEED(km/h) Duty Vmotor(V) Cmotor(A) Pmotor(W) Vsolar(V) Csolar(A) Psolar(W)" ); pc.printf(" Vbat(V) Cbatt(A) Pbatt(W) Vbatt_max(V) Vbatt_avg(V) Vbatt_min(V)\n\r" ); xbee.printf(" SPEED(km/h) Duty Vmotor(V) Cmotor(A) Pmotor(W) Vsolar(V) Csolar(A) Psolar(W)" ); @@ -148,6 +166,8 @@ //PCへのシリアル通信処理(teratermなどへ表示) if( timer1.read_ms() >= 50 && !printf_flag ){ //0.1秒ごとにprintf処理をする //xbee.printf(" timer1: %d", timer1.read_ms() ); + + //usb => //USBが刺さっているかいないか確認し、データを書き込む処理 if( usbCheck ){ //初期設定時(プログラムスタート時)、USBが刺さっていればusbCheck==1(true) fp1 = fopen( cary, "a"); //ファイルを開く, aは上書きの命令(ファイルが存在しなければ新規作成する) @@ -161,10 +181,13 @@ fclose(fp1); //ファイルを閉じる } } + //=>usb + //xbee.printf(" timer1: %d\n\r", timer1.read_ms() ); //リセット printf_flag = 1; } + if( timer1.read_ms() >= 200 && printf_flag ){ //0.2秒ごとにprintf処理をする timer1.reset(); //xbee.printf("timer1: %d", timer1.read_ms() );