圧力監視と制御の受信機

Dependencies:   IM920

Committer:
nakumur
Date:
Wed Mar 09 05:06:20 2022 +0000
Revision:
0:771a902dde59
aaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nakumur 0:771a902dde59 1
nakumur 0:771a902dde59 2 #include "mbed.h"
nakumur 0:771a902dde59 3 #include "IM920.h"
nakumur 0:771a902dde59 4
nakumur 0:771a902dde59 5
nakumur 0:771a902dde59 6 //コンストラクタ------------------------------------------------------------------
nakumur 0:771a902dde59 7 Serial pc(USBTX, USBRX, 115200);
nakumur 0:771a902dde59 8 Serial im920_serial(D1, D0, 115200);
nakumur 0:771a902dde59 9
nakumur 0:771a902dde59 10 IM920 im920(im920_serial, pc, 115200);
nakumur 0:771a902dde59 11 DigitalIn im920_busy(D3);
nakumur 0:771a902dde59 12 //------------------------------------------------------------------------------
nakumur 0:771a902dde59 13
nakumur 0:771a902dde59 14 //変数---------------------------------------------------------------------------
nakumur 0:771a902dde59 15 char input_pc;
nakumur 0:771a902dde59 16 int set_flag = 0;
nakumur 0:771a902dde59 17 char temp[100] = "";
nakumur 0:771a902dde59 18 char pres[100] = "";
nakumur 0:771a902dde59 19 int temp_element = 0;
nakumur 0:771a902dde59 20 int pres_element = 0;
nakumur 0:771a902dde59 21 //------------------------------------------------------------------------------
nakumur 0:771a902dde59 22
nakumur 0:771a902dde59 23 //無線ヘッダー--------------------------------------------------------------------
nakumur 0:771a902dde59 24 const char header_uplink = 1;
nakumur 0:771a902dde59 25 const char header_downlink = 2;
nakumur 0:771a902dde59 26 //------------------------------------------------------------------------------
nakumur 0:771a902dde59 27
nakumur 0:771a902dde59 28 //関数---------------------------------------------------------------------------
nakumur 0:771a902dde59 29 void readPC();
nakumur 0:771a902dde59 30 void upLink();
nakumur 0:771a902dde59 31 void setValue();
nakumur 0:771a902dde59 32 void downLink();
nakumur 0:771a902dde59 33 //------------------------------------------------------------------------------
nakumur 0:771a902dde59 34
nakumur 0:771a902dde59 35
nakumur 0:771a902dde59 36
nakumur 0:771a902dde59 37 // メイン関数---------------------------------------------------------------------
nakumur 0:771a902dde59 38 int main()
nakumur 0:771a902dde59 39 {
nakumur 0:771a902dde59 40 pc.printf("\r\n");
nakumur 0:771a902dde59 41 pc.printf("Pump remote control system!!!\r\n");
nakumur 0:771a902dde59 42 pc.printf("Start : 1\r\n");
nakumur 0:771a902dde59 43 pc.printf("Stop : 0\r\n");
nakumur 0:771a902dde59 44
nakumur 0:771a902dde59 45 im920.attach(&downLink, header_downlink);
nakumur 0:771a902dde59 46 pc.attach(readPC, Serial::RxIrq);
nakumur 0:771a902dde59 47
nakumur 0:771a902dde59 48 while(1) {
nakumur 0:771a902dde59 49 }
nakumur 0:771a902dde59 50 }
nakumur 0:771a902dde59 51 //------------------------------------------------------------------------------
nakumur 0:771a902dde59 52
nakumur 0:771a902dde59 53
nakumur 0:771a902dde59 54 void readPC()
nakumur 0:771a902dde59 55 {
nakumur 0:771a902dde59 56 input_pc = pc.getc();
nakumur 0:771a902dde59 57 //pc.printf("%d\r\n", input_pc);
nakumur 0:771a902dde59 58 if(set_flag == 0) {
nakumur 0:771a902dde59 59 upLink();
nakumur 0:771a902dde59 60 }
nakumur 0:771a902dde59 61
nakumur 0:771a902dde59 62 else if(set_flag == 1 || set_flag == 2) {
nakumur 0:771a902dde59 63 setValue();
nakumur 0:771a902dde59 64 }
nakumur 0:771a902dde59 65 }
nakumur 0:771a902dde59 66
nakumur 0:771a902dde59 67 void upLink()
nakumur 0:771a902dde59 68 {
nakumur 0:771a902dde59 69 if(input_pc == '1') {
nakumur 0:771a902dde59 70 im920.header(header_uplink);
nakumur 0:771a902dde59 71 im920.write(input_pc);
nakumur 0:771a902dde59 72 pc.printf("INPUT : 1\r\n");
nakumur 0:771a902dde59 73 pc.printf("Please set temperature::");
nakumur 0:771a902dde59 74 set_flag = 1;
nakumur 0:771a902dde59 75 input_pc = '\0';
nakumur 0:771a902dde59 76 }
nakumur 0:771a902dde59 77
nakumur 0:771a902dde59 78 else if(input_pc == '0') {
nakumur 0:771a902dde59 79 im920.header(header_uplink);
nakumur 0:771a902dde59 80 im920.write(input_pc);
nakumur 0:771a902dde59 81 pc.printf("INPUT : 0");
nakumur 0:771a902dde59 82 }
nakumur 0:771a902dde59 83
nakumur 0:771a902dde59 84 else if(input_pc == '\n') {
nakumur 0:771a902dde59 85 if(im920_busy == 0) {
nakumur 0:771a902dde59 86 im920.send();
nakumur 0:771a902dde59 87 pc.printf("Send\r\n");
nakumur 0:771a902dde59 88 input_pc = '\0';
nakumur 0:771a902dde59 89 }
nakumur 0:771a902dde59 90 }
nakumur 0:771a902dde59 91 }
nakumur 0:771a902dde59 92
nakumur 0:771a902dde59 93 void setValue()
nakumur 0:771a902dde59 94 {
nakumur 0:771a902dde59 95 if(set_flag == 1) {
nakumur 0:771a902dde59 96 if(input_pc != '\n') {
nakumur 0:771a902dde59 97 temp[temp_element] = input_pc;
nakumur 0:771a902dde59 98 temp_element = temp_element + 1;
nakumur 0:771a902dde59 99 pc.printf("%c", input_pc);
nakumur 0:771a902dde59 100 }
nakumur 0:771a902dde59 101
nakumur 0:771a902dde59 102 else {
nakumur 0:771a902dde59 103 pc.printf("\r\n");
nakumur 0:771a902dde59 104 //pc.printf("temp::%f\r\n", atof(temp));
nakumur 0:771a902dde59 105 im920.write((float)atof(temp));
nakumur 0:771a902dde59 106 temp_element = 0;
nakumur 0:771a902dde59 107 memset(temp, '\0', sizeof(temp));
nakumur 0:771a902dde59 108 pc.printf("Please set Pressure::");
nakumur 0:771a902dde59 109 set_flag = 2;
nakumur 0:771a902dde59 110 input_pc = '\0';
nakumur 0:771a902dde59 111 }
nakumur 0:771a902dde59 112 }
nakumur 0:771a902dde59 113
nakumur 0:771a902dde59 114 else if(set_flag == 2) {
nakumur 0:771a902dde59 115 if(input_pc != '\n') {
nakumur 0:771a902dde59 116 pres[pres_element] = input_pc;
nakumur 0:771a902dde59 117 pres_element = pres_element + 1;
nakumur 0:771a902dde59 118 pc.printf("%c", input_pc);
nakumur 0:771a902dde59 119 }
nakumur 0:771a902dde59 120
nakumur 0:771a902dde59 121 else {
nakumur 0:771a902dde59 122 pc.printf("\r\n");
nakumur 0:771a902dde59 123 //pc.printf("pres::%f\r\n", atof(pres));
nakumur 0:771a902dde59 124 im920.write((float)atof(pres));
nakumur 0:771a902dde59 125 temp_element = 0;
nakumur 0:771a902dde59 126 memset(pres, '\0', sizeof(pres));
nakumur 0:771a902dde59 127 pc.printf("If you want to determine the temperature and pressure value, pleace input CTRL+ENTER\r\n");
nakumur 0:771a902dde59 128 set_flag = 0;
nakumur 0:771a902dde59 129 }
nakumur 0:771a902dde59 130 }
nakumur 0:771a902dde59 131 }
nakumur 0:771a902dde59 132
nakumur 0:771a902dde59 133
nakumur 0:771a902dde59 134
nakumur 0:771a902dde59 135 void downLink()
nakumur 0:771a902dde59 136 {
nakumur 0:771a902dde59 137 if(im920.data[1] == 0) {
nakumur 0:771a902dde59 138 pc.printf("Pump state :: OFF\r\n");
nakumur 0:771a902dde59 139 }
nakumur 0:771a902dde59 140
nakumur 0:771a902dde59 141 else if(im920.data[1] == 1) {
nakumur 0:771a902dde59 142 pc.printf("Pump state :: ON\r\n");
nakumur 0:771a902dde59 143 }
nakumur 0:771a902dde59 144
nakumur 0:771a902dde59 145 if(im920.data[2] == 0) {
nakumur 0:771a902dde59 146 pc.printf("Kettle state :: OFF\r\n");
nakumur 0:771a902dde59 147 }
nakumur 0:771a902dde59 148
nakumur 0:771a902dde59 149 else if(im920.data[2] == 1) {
nakumur 0:771a902dde59 150 pc.printf("Kettle state :: ON\r\n");
nakumur 0:771a902dde59 151 }
nakumur 0:771a902dde59 152 pc.printf("temperature :: %f[oC]\r\n", (float)im920.toFloat(3));
nakumur 0:771a902dde59 153 pc.printf("pressure :: %f[MPa]\r\n", (float)im920.toFloat(7));
nakumur 0:771a902dde59 154 pc.printf("\r\n");
nakumur 0:771a902dde59 155 }
nakumur 0:771a902dde59 156