圧力監視と制御の受信機
Dependencies: IM920
main.cpp@0:771a902dde59, 2022-03-09 (annotated)
- Committer:
- nakumur
- Date:
- Wed Mar 09 05:06:20 2022 +0000
- Revision:
- 0:771a902dde59
aaa
Who changed what in which revision?
User | Revision | Line number | New 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 |