MCP3204をSTM303K8T6で同時に6個使ってみた
Dependencies: mbed 24LC1025 MCP3204
main.cpp@3:99c659d89698, 2020-09-09 (annotated)
- Committer:
- sashida_h
- Date:
- Wed Sep 09 08:07:13 2020 +0000
- Revision:
- 3:99c659d89698
- Parent:
- 2:133b3bf22850
- Child:
- 4:56d1f3a81b30
[add]CAN_0x01 receive
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sashida_h | 0:c38491379a28 | 1 | #include "mbed.h" |
sashida_h | 0:c38491379a28 | 2 | #include "MCP3204.h" |
sashida_h | 3:99c659d89698 | 3 | #include "24LC1025.h" |
sashida_h | 0:c38491379a28 | 4 | |
sashida_h | 1:717563cb9070 | 5 | Serial pc(PA_2, PA_3, 115200); //pin19,20 TX,RX |
sashida_h | 3:99c659d89698 | 6 | CAN can(PA_11, PA_12); //pin21,22 rd,td |
sashida_h | 0:c38491379a28 | 7 | SPI spi(PA_7, PA_6, PA_5); |
sashida_h | 2:133b3bf22850 | 8 | MCP3204 mcp1(spi,PB_0); //下z- |
sashida_h | 2:133b3bf22850 | 9 | MCP3204 mcp2(spi,PB_1); //右x+ |
sashida_h | 2:133b3bf22850 | 10 | MCP3204 mcp3(spi,PB_3); //左x- |
sashida_h | 2:133b3bf22850 | 11 | MCP3204 mcp4(spi,PA_8); // 前y+ |
sashida_h | 2:133b3bf22850 | 12 | MCP3204 mcp5(spi,PA_10); //上z+ |
sashida_h | 2:133b3bf22850 | 13 | MCP3204 mcp6(spi,PF_0); //後y- |
sashida_h | 3:99c659d89698 | 14 | LC1025 eeprom = LC1025(PB_7, PB_6); |
sashida_h | 3:99c659d89698 | 15 | DigitalOut led(PB_5); |
sashida_h | 3:99c659d89698 | 16 | |
sashida_h | 1:717563cb9070 | 17 | |
sashida_h | 2:133b3bf22850 | 18 | CANMessage msg; |
sashida_h | 1:717563cb9070 | 19 | |
sashida_h | 1:717563cb9070 | 20 | #define T 0.03 |
sashida_h | 0:c38491379a28 | 21 | |
sashida_h | 3:99c659d89698 | 22 | float cal_x=0,cal_y=0,cal_z=0; |
sashida_h | 3:99c659d89698 | 23 | int i,j,cnt=0,page_frg=0; |
sashida_h | 3:99c659d89698 | 24 | float world_time; |
sashida_h | 3:99c659d89698 | 25 | uint16_t eeprom_cnt = 0x0000; |
sashida_h | 3:99c659d89698 | 26 | char serialData[4]; |
sashida_h | 3:99c659d89698 | 27 | |
sashida_h | 2:133b3bf22850 | 28 | union Float2Byte{ |
sashida_h | 2:133b3bf22850 | 29 | float _float; |
sashida_h | 2:133b3bf22850 | 30 | char _byte[4]; |
sashida_h | 2:133b3bf22850 | 31 | }; |
sashida_h | 2:133b3bf22850 | 32 | typedef union Float2Byte Float2Byte; |
sashida_h | 2:133b3bf22850 | 33 | |
sashida_h | 3:99c659d89698 | 34 | union Int2Byte{ |
sashida_h | 3:99c659d89698 | 35 | unsigned short _int; |
sashida_h | 3:99c659d89698 | 36 | char _byte[2]; |
sashida_h | 3:99c659d89698 | 37 | }; |
sashida_h | 3:99c659d89698 | 38 | typedef union Int2Byte Int2Byte; |
sashida_h | 3:99c659d89698 | 39 | |
sashida_h | 3:99c659d89698 | 40 | |
sashida_h | 2:133b3bf22850 | 41 | void send(float senddata,int id){ |
sashida_h | 2:133b3bf22850 | 42 | //pc.printf("Master send()\n\r"); |
sashida_h | 2:133b3bf22850 | 43 | |
sashida_h | 2:133b3bf22850 | 44 | Float2Byte sendFloat; |
sashida_h | 2:133b3bf22850 | 45 | sendFloat._float = senddata; |
sashida_h | 2:133b3bf22850 | 46 | //ここに送りたい値を入れる. |
sashida_h | 2:133b3bf22850 | 47 | |
sashida_h | 2:133b3bf22850 | 48 | char serialData[4]; |
sashida_h | 2:133b3bf22850 | 49 | for(int i=0;i<4;++i){ |
sashida_h | 2:133b3bf22850 | 50 | serialData[i] = sendFloat._byte[i]; |
sashida_h | 2:133b3bf22850 | 51 | //pc.printf("send_char: %d\n\r", serialData[i]); |
sashida_h | 2:133b3bf22850 | 52 | } |
sashida_h | 2:133b3bf22850 | 53 | //pc.printf("sendFloat: %f\n\r", sendFloat._float); |
sashida_h | 2:133b3bf22850 | 54 | if(can.write(CANMessage(id, serialData, 4))){ |
sashida_h | 2:133b3bf22850 | 55 | //pc.printf("Send.\n\r"); |
sashida_h | 2:133b3bf22850 | 56 | } |
sashida_h | 2:133b3bf22850 | 57 | } |
sashida_h | 2:133b3bf22850 | 58 | |
sashida_h | 3:99c659d89698 | 59 | void send2(unsigned short senddata1,unsigned short senddata2,unsigned short senddata3,int id){ |
sashida_h | 3:99c659d89698 | 60 | //pc.printf("Master send()\n\r"); |
sashida_h | 3:99c659d89698 | 61 | |
sashida_h | 3:99c659d89698 | 62 | /*ID: 0x01*/ |
sashida_h | 3:99c659d89698 | 63 | Int2Byte sendInt; |
sashida_h | 3:99c659d89698 | 64 | sendInt._int = senddata1; |
sashida_h | 3:99c659d89698 | 65 | //ここに送りたい値を入れる. |
sashida_h | 3:99c659d89698 | 66 | |
sashida_h | 3:99c659d89698 | 67 | char serialData[6]; |
sashida_h | 3:99c659d89698 | 68 | |
sashida_h | 3:99c659d89698 | 69 | serialData[0] = sendInt._byte[0]; |
sashida_h | 3:99c659d89698 | 70 | serialData[1] = sendInt._byte[1]; |
sashida_h | 3:99c659d89698 | 71 | //pc.printf("send_char: %d\n\r", serialData[i]); |
sashida_h | 3:99c659d89698 | 72 | sendInt._int = senddata2; |
sashida_h | 3:99c659d89698 | 73 | serialData[2] = sendInt._byte[0]; |
sashida_h | 3:99c659d89698 | 74 | serialData[3] = sendInt._byte[1]; |
sashida_h | 3:99c659d89698 | 75 | |
sashida_h | 3:99c659d89698 | 76 | sendInt._int = senddata3; |
sashida_h | 3:99c659d89698 | 77 | serialData[4] = sendInt._byte[0]; |
sashida_h | 3:99c659d89698 | 78 | serialData[5] = sendInt._byte[1]; |
sashida_h | 3:99c659d89698 | 79 | //pc.printf("sendFloat: %f\n\r", sendFloat._float); |
sashida_h | 3:99c659d89698 | 80 | if(can.write(CANMessage(id, serialData, 6))){ |
sashida_h | 3:99c659d89698 | 81 | //pc.printf("Send.\n\r"); |
sashida_h | 3:99c659d89698 | 82 | } |
sashida_h | 3:99c659d89698 | 83 | } |
sashida_h | 3:99c659d89698 | 84 | |
sashida_h | 2:133b3bf22850 | 85 | void receive(){ |
sashida_h | 2:133b3bf22850 | 86 | Float2Byte getFloat; |
sashida_h | 3:99c659d89698 | 87 | Int2Byte getInt; |
sashida_h | 3:99c659d89698 | 88 | led = 0; |
sashida_h | 2:133b3bf22850 | 89 | |
sashida_h | 2:133b3bf22850 | 90 | if(can.read(msg)){ |
sashida_h | 3:99c659d89698 | 91 | //ID: 0x01 |
sashida_h | 2:133b3bf22850 | 92 | if(msg.id == 0x01){ |
sashida_h | 2:133b3bf22850 | 93 | //pc.printf("ID: 0x01\n\r"); |
sashida_h | 2:133b3bf22850 | 94 | for(int i=0;i<4;++i){ |
sashida_h | 2:133b3bf22850 | 95 | getFloat._byte[i] = msg.data[i]; |
sashida_h | 2:133b3bf22850 | 96 | //pc.printf("get_char: %d\n\r", getFloat._byte[i]); |
sashida_h | 2:133b3bf22850 | 97 | } |
sashida_h | 3:99c659d89698 | 98 | world_time = getFloat._float; |
sashida_h | 3:99c659d89698 | 99 | pc.printf("world_time:%.2f\r\n", world_time); |
sashida_h | 3:99c659d89698 | 100 | } |
sashida_h | 3:99c659d89698 | 101 | |
sashida_h | 3:99c659d89698 | 102 | if(msg.id == 0x02){ |
sashida_h | 3:99c659d89698 | 103 | //pc.printf("ID: 0x02\n\r"); |
sashida_h | 3:99c659d89698 | 104 | getInt._byte[0] = msg.data[0]; |
sashida_h | 3:99c659d89698 | 105 | getInt._byte[1] = msg.data[1]; |
sashida_h | 3:99c659d89698 | 106 | cal_x=(float)getInt._int /10.0f; |
sashida_h | 3:99c659d89698 | 107 | pc.printf("Mag:%.2f", cal_x); |
sashida_h | 3:99c659d89698 | 108 | |
sashida_h | 3:99c659d89698 | 109 | getInt._byte[0] = msg.data[2]; |
sashida_h | 3:99c659d89698 | 110 | getInt._byte[1] = msg.data[3]; |
sashida_h | 3:99c659d89698 | 111 | cal_y=(float)getInt._int /10.0f; |
sashida_h | 3:99c659d89698 | 112 | pc.printf(",%.2f", cal_y); |
sashida_h | 3:99c659d89698 | 113 | |
sashida_h | 3:99c659d89698 | 114 | getInt._byte[0] = msg.data[4]; |
sashida_h | 3:99c659d89698 | 115 | getInt._byte[1] = msg.data[5]; |
sashida_h | 3:99c659d89698 | 116 | cal_z=(float)getInt._int /10.0f; |
sashida_h | 3:99c659d89698 | 117 | pc.printf(",%.2f\r\n", cal_z); |
sashida_h | 3:99c659d89698 | 118 | |
sashida_h | 3:99c659d89698 | 119 | if(page_frg == 0){ |
sashida_h | 3:99c659d89698 | 120 | *(float*)serialData=0.0f; |
sashida_h | 3:99c659d89698 | 121 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 122 | *(float*)serialData=cal_x; |
sashida_h | 3:99c659d89698 | 123 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 124 | *(float*)serialData=cal_y; |
sashida_h | 3:99c659d89698 | 125 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 126 | *(float*)serialData=cal_z; |
sashida_h | 3:99c659d89698 | 127 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 128 | *(float*)serialData=world_time; |
sashida_h | 3:99c659d89698 | 129 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 130 | *(float*)serialData=0.0f; |
sashida_h | 3:99c659d89698 | 131 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 132 | //pc.printf("%d,0x%x\r\n",page_frg,eeprom_cnt); |
sashida_h | 3:99c659d89698 | 133 | }else if(page_frg == 1){ |
sashida_h | 3:99c659d89698 | 134 | *(float*)serialData=0.0f; |
sashida_h | 3:99c659d89698 | 135 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 136 | *(float*)serialData=cal_x; |
sashida_h | 3:99c659d89698 | 137 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 138 | *(float*)serialData=cal_y; |
sashida_h | 3:99c659d89698 | 139 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 140 | *(float*)serialData=cal_z; |
sashida_h | 3:99c659d89698 | 141 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 142 | *(float*)serialData=world_time; |
sashida_h | 3:99c659d89698 | 143 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 144 | *(float*)serialData=0.0f; |
sashida_h | 3:99c659d89698 | 145 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 146 | //pc.printf("%d,0x%x\r\n",page_frg,eeprom_cnt); |
sashida_h | 3:99c659d89698 | 147 | }else{ |
sashida_h | 3:99c659d89698 | 148 | //pc.printf("EEPROM_ERROR!! You should erase memory\r\n"); |
sashida_h | 3:99c659d89698 | 149 | } |
sashida_h | 3:99c659d89698 | 150 | eeprom_cnt = 0x18 + eeprom_cnt; |
sashida_h | 3:99c659d89698 | 151 | |
sashida_h | 3:99c659d89698 | 152 | |
sashida_h | 2:133b3bf22850 | 153 | } |
sashida_h | 2:133b3bf22850 | 154 | |
sashida_h | 2:133b3bf22850 | 155 | if(msg.id == 0x03){ |
sashida_h | 2:133b3bf22850 | 156 | //pc.printf("ID: 0x01\n\r"); |
sashida_h | 2:133b3bf22850 | 157 | for(int i=0;i<4;++i){ |
sashida_h | 2:133b3bf22850 | 158 | getFloat._byte[i] = msg.data[i]; |
sashida_h | 2:133b3bf22850 | 159 | //pc.printf("get_char: %d\n\r", getFloat._byte[i]); |
sashida_h | 2:133b3bf22850 | 160 | } |
sashida_h | 2:133b3bf22850 | 161 | pc.printf("ID0x03:%.2f\r\n", getFloat._float); |
sashida_h | 2:133b3bf22850 | 162 | } |
sashida_h | 3:99c659d89698 | 163 | |
sashida_h | 3:99c659d89698 | 164 | if(msg.id == 0x04){ |
sashida_h | 3:99c659d89698 | 165 | //pc.printf("ID: 0x01\n\r"); |
sashida_h | 3:99c659d89698 | 166 | for(int i=0;i<4;++i){ |
sashida_h | 3:99c659d89698 | 167 | getFloat._byte[i] = msg.data[i]; |
sashida_h | 3:99c659d89698 | 168 | //pc.printf("get_char: %d\n\r", getFloat._byte[i]); |
sashida_h | 3:99c659d89698 | 169 | } |
sashida_h | 3:99c659d89698 | 170 | pc.printf("ID0x04:%.2f\r\n", getFloat._float); |
sashida_h | 3:99c659d89698 | 171 | } |
sashida_h | 2:133b3bf22850 | 172 | } |
sashida_h | 3:99c659d89698 | 173 | led=1; |
sashida_h | 2:133b3bf22850 | 174 | |
sashida_h | 2:133b3bf22850 | 175 | } |
sashida_h | 2:133b3bf22850 | 176 | |
sashida_h | 0:c38491379a28 | 177 | int main(){ |
sashida_h | 1:717563cb9070 | 178 | int adc1[4],adc2[4],adc3[4],adc4[4],adc5[4],adc6[4]; |
sashida_h | 2:133b3bf22850 | 179 | float ave[6],buff; |
sashida_h | 0:c38491379a28 | 180 | |
sashida_h | 2:133b3bf22850 | 181 | can.attach(receive, CAN::RxIrq); |
sashida_h | 3:99c659d89698 | 182 | pc.printf("Hello world%d\r\n",sizeof(i)); |
sashida_h | 3:99c659d89698 | 183 | led = 1; |
sashida_h | 0:c38491379a28 | 184 | wait(1.0); |
sashida_h | 0:c38491379a28 | 185 | |
sashida_h | 0:c38491379a28 | 186 | while(1){ |
sashida_h | 1:717563cb9070 | 187 | adc1[0] = mcp1.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 188 | adc1[1] = mcp1.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 189 | adc1[2] = mcp1.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 190 | adc1[3] = mcp1.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 191 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 192 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 193 | if(adc1[j-1] > adc1[j]){ |
sashida_h | 2:133b3bf22850 | 194 | buff = adc1[j-1]; |
sashida_h | 2:133b3bf22850 | 195 | adc1[j-1] = adc1[j]; |
sashida_h | 2:133b3bf22850 | 196 | adc1[j] = buff; |
sashida_h | 2:133b3bf22850 | 197 | } |
sashida_h | 2:133b3bf22850 | 198 | } |
sashida_h | 2:133b3bf22850 | 199 | } |
sashida_h | 2:133b3bf22850 | 200 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 201 | ave[0] = (adc1[1] + adc1[2])/2.0 + 120.0; |
sashida_h | 1:717563cb9070 | 202 | |
sashida_h | 1:717563cb9070 | 203 | adc2[0] = mcp2.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 204 | adc2[1] = mcp2.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 205 | adc2[2] = mcp2.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 206 | adc2[3] = mcp2.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 207 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 208 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 209 | if(adc2[j-1] > adc2[j]){ |
sashida_h | 2:133b3bf22850 | 210 | buff = adc2[j-1]; |
sashida_h | 2:133b3bf22850 | 211 | adc2[j-1] = adc2[j]; |
sashida_h | 2:133b3bf22850 | 212 | adc2[j] = buff; |
sashida_h | 2:133b3bf22850 | 213 | } |
sashida_h | 2:133b3bf22850 | 214 | } |
sashida_h | 2:133b3bf22850 | 215 | } |
sashida_h | 2:133b3bf22850 | 216 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 217 | ave[1] = (adc2[1] + adc2[2])/2.0; |
sashida_h | 1:717563cb9070 | 218 | |
sashida_h | 1:717563cb9070 | 219 | adc3[0] = mcp3.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 220 | adc3[1] = mcp3.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 221 | adc3[2] = mcp3.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 222 | adc3[3] = mcp3.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 223 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 224 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 225 | if(adc3[j-1] > adc3[j]){ |
sashida_h | 2:133b3bf22850 | 226 | buff = adc3[j-1]; |
sashida_h | 2:133b3bf22850 | 227 | adc3[j-1] = adc3[j]; |
sashida_h | 2:133b3bf22850 | 228 | adc3[j] = buff; |
sashida_h | 2:133b3bf22850 | 229 | } |
sashida_h | 2:133b3bf22850 | 230 | } |
sashida_h | 2:133b3bf22850 | 231 | } |
sashida_h | 2:133b3bf22850 | 232 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 233 | ave[2] = (adc3[1] + adc3[2])/2.0 + 70.0; |
sashida_h | 1:717563cb9070 | 234 | |
sashida_h | 1:717563cb9070 | 235 | adc4[0] = mcp4.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 236 | adc4[1] = mcp4.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 237 | adc4[2] = mcp4.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 238 | adc4[3] = mcp4.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 239 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 240 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 241 | if(adc4[j-1] > adc4[j]){ |
sashida_h | 2:133b3bf22850 | 242 | buff = adc4[j-1]; |
sashida_h | 2:133b3bf22850 | 243 | adc4[j-1] = adc4[j]; |
sashida_h | 2:133b3bf22850 | 244 | adc4[j] = buff; |
sashida_h | 2:133b3bf22850 | 245 | } |
sashida_h | 2:133b3bf22850 | 246 | } |
sashida_h | 2:133b3bf22850 | 247 | } |
sashida_h | 2:133b3bf22850 | 248 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 249 | ave[3] = (adc4[1] + adc4[2])/2.0 + 55.0; |
sashida_h | 1:717563cb9070 | 250 | |
sashida_h | 1:717563cb9070 | 251 | adc5[0] = mcp5.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 252 | adc5[1] = mcp5.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 253 | adc5[2] = mcp5.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 254 | adc5[3] = mcp5.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 255 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 256 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 257 | if(adc5[j-1] > adc5[j]){ |
sashida_h | 2:133b3bf22850 | 258 | buff = adc5[j-1]; |
sashida_h | 2:133b3bf22850 | 259 | adc5[j-1] = adc5[j]; |
sashida_h | 2:133b3bf22850 | 260 | adc5[j] = buff; |
sashida_h | 2:133b3bf22850 | 261 | } |
sashida_h | 2:133b3bf22850 | 262 | } |
sashida_h | 2:133b3bf22850 | 263 | } |
sashida_h | 2:133b3bf22850 | 264 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 265 | ave[4] = (adc5[1] + adc5[2])/2.0; |
sashida_h | 1:717563cb9070 | 266 | |
sashida_h | 1:717563cb9070 | 267 | adc6[0] = mcp6.sgl( CH0 ); |
sashida_h | 1:717563cb9070 | 268 | adc6[1] = mcp6.sgl( CH1 ); |
sashida_h | 1:717563cb9070 | 269 | adc6[2] = mcp6.sgl( CH2 ); |
sashida_h | 1:717563cb9070 | 270 | adc6[3] = mcp6.sgl( CH3 ); |
sashida_h | 2:133b3bf22850 | 271 | for(i=0;i<4-1;i++){ |
sashida_h | 2:133b3bf22850 | 272 | for(j=1;j<4-i;j++){ |
sashida_h | 2:133b3bf22850 | 273 | if(adc6[j-1] > adc6[j]){ |
sashida_h | 2:133b3bf22850 | 274 | buff = adc6[j-1]; |
sashida_h | 2:133b3bf22850 | 275 | adc6[j-1] = adc6[j]; |
sashida_h | 2:133b3bf22850 | 276 | adc6[j] = buff; |
sashida_h | 2:133b3bf22850 | 277 | } |
sashida_h | 2:133b3bf22850 | 278 | } |
sashida_h | 2:133b3bf22850 | 279 | } |
sashida_h | 2:133b3bf22850 | 280 | //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); |
sashida_h | 2:133b3bf22850 | 281 | ave[5] = (adc6[1] + adc6[2])/2.0 - 100.0; |
sashida_h | 1:717563cb9070 | 282 | |
sashida_h | 1:717563cb9070 | 283 | /* |
sashida_h | 1:717563cb9070 | 284 | pc.printf("1"); |
sashida_h | 1:717563cb9070 | 285 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 286 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 287 | pc.printf(",%d",adc1[i]); |
sashida_h | 0:c38491379a28 | 288 | } |
sashida_h | 1:717563cb9070 | 289 | pc.printf(",%.1f\r\n", ave1); |
sashida_h | 1:717563cb9070 | 290 | |
sashida_h | 1:717563cb9070 | 291 | pc.printf("2"); |
sashida_h | 1:717563cb9070 | 292 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 293 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 294 | pc.printf(",%d",adc2[i]); |
sashida_h | 1:717563cb9070 | 295 | } |
sashida_h | 1:717563cb9070 | 296 | pc.printf(",%.1f\r\n", ave2); |
sashida_h | 1:717563cb9070 | 297 | |
sashida_h | 1:717563cb9070 | 298 | pc.printf("3"); |
sashida_h | 1:717563cb9070 | 299 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 300 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 301 | pc.printf(",%d",adc3[i]); |
sashida_h | 1:717563cb9070 | 302 | } |
sashida_h | 1:717563cb9070 | 303 | pc.printf(",%.1f\r\n", ave3); |
sashida_h | 1:717563cb9070 | 304 | |
sashida_h | 1:717563cb9070 | 305 | pc.printf("4"); |
sashida_h | 1:717563cb9070 | 306 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 307 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 308 | pc.printf(",%d",adc4[i]); |
sashida_h | 1:717563cb9070 | 309 | } |
sashida_h | 1:717563cb9070 | 310 | pc.printf(",%.1f\r\n", ave4); |
sashida_h | 1:717563cb9070 | 311 | |
sashida_h | 1:717563cb9070 | 312 | pc.printf("5"); |
sashida_h | 1:717563cb9070 | 313 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 314 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 315 | pc.printf(",%d",adc5[i]); |
sashida_h | 1:717563cb9070 | 316 | } |
sashida_h | 1:717563cb9070 | 317 | pc.printf(",%.1f\r\n", ave5); |
sashida_h | 1:717563cb9070 | 318 | |
sashida_h | 1:717563cb9070 | 319 | pc.printf("6"); |
sashida_h | 1:717563cb9070 | 320 | for(i=0; i<4; i++){ |
sashida_h | 1:717563cb9070 | 321 | //pc.printf("CH%d:%d\r\n",i,adc1[i]); |
sashida_h | 1:717563cb9070 | 322 | pc.printf(",%d",adc6[i]); |
sashida_h | 1:717563cb9070 | 323 | } |
sashida_h | 1:717563cb9070 | 324 | pc.printf(",%.1f\r\n", ave6); |
sashida_h | 1:717563cb9070 | 325 | */ |
sashida_h | 1:717563cb9070 | 326 | |
sashida_h | 2:133b3bf22850 | 327 | cnt = 0; |
sashida_h | 2:133b3bf22850 | 328 | |
sashida_h | 3:99c659d89698 | 329 | if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0]){ |
sashida_h | 3:99c659d89698 | 330 | send2((unsigned short)(0.0f+cal_x),(unsigned short)(0.0f+cal_y),(unsigned short)(0.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 331 | //else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] < ave[0])pc.printf("x:90,y:0,z:0\r\n"); |
sashida_h | 3:99c659d89698 | 332 | }else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] > ave[0]){ |
sashida_h | 3:99c659d89698 | 333 | send2((unsigned short)(180.0f+cal_x),(unsigned short)(0.0f+cal_y),(unsigned short)(0.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 334 | //else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:270,y:0,z:0\r\n"); |
sashida_h | 3:99c659d89698 | 335 | }else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0]){ |
sashida_h | 3:99c659d89698 | 336 | send2((unsigned short)(0.0f+cal_x),(unsigned short)(0.0f+cal_y),(unsigned short)(0.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 337 | //else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:90\r\n"); |
sashida_h | 3:99c659d89698 | 338 | }else if(ave[1] > ave[2] && ave[3] < ave[5] && ave[4] < ave[0]){ |
sashida_h | 3:99c659d89698 | 339 | send2((unsigned short)(0.0f+cal_x),(unsigned short)(0.0f+cal_y),(unsigned short)(180.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 340 | //else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:270\r\n"); |
sashida_h | 3:99c659d89698 | 341 | }else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0]){ |
sashida_h | 3:99c659d89698 | 342 | send2((unsigned short)(0.0f+cal_x),(unsigned short)(0.0f+cal_y),(unsigned short)(0.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 343 | //else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:0,y:90,z:0\r\n"); |
sashida_h | 3:99c659d89698 | 344 | }else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] > ave[0]){ |
sashida_h | 3:99c659d89698 | 345 | send2((unsigned short)(0.0f+cal_x),(unsigned short)(180.0f+cal_y),(unsigned short)(0.0f+cal_z),6); |
sashida_h | 3:99c659d89698 | 346 | //else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:0,y:270,z:0\r\n"); |
sashida_h | 3:99c659d89698 | 347 | }else{ |
sashida_h | 3:99c659d89698 | 348 | pc.printf("none\r\n"); |
sashida_h | 3:99c659d89698 | 349 | } |
sashida_h | 3:99c659d89698 | 350 | pc.printf("%d,%x,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f\r\n",page_frg,eeprom_cnt,ave[1],ave[2],ave[3],ave[5],ave[4],ave[0]); |
sashida_h | 2:133b3bf22850 | 351 | |
sashida_h | 3:99c659d89698 | 352 | for(i=0; i<6; i++){ |
sashida_h | 3:99c659d89698 | 353 | *(float*)serialData = ave[i]; |
sashida_h | 3:99c659d89698 | 354 | //pc.printf("%f,",ave[i]); |
sashida_h | 3:99c659d89698 | 355 | if(eeprom_cnt > 0xFFF0){ |
sashida_h | 3:99c659d89698 | 356 | page_frg++; |
sashida_h | 3:99c659d89698 | 357 | eeprom_cnt = 0; |
sashida_h | 3:99c659d89698 | 358 | } |
sashida_h | 2:133b3bf22850 | 359 | |
sashida_h | 3:99c659d89698 | 360 | if(page_frg == 0){ |
sashida_h | 3:99c659d89698 | 361 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK0,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 362 | //pc.printf("%d,0x%x\r\n",page_frg,eeprom_cnt); |
sashida_h | 3:99c659d89698 | 363 | }else if(page_frg == 1){ |
sashida_h | 3:99c659d89698 | 364 | eeprom.PageWrite(ADDRESS_24LC1025_BLOCK1,eeprom_cnt,serialData,4); |
sashida_h | 3:99c659d89698 | 365 | //pc.printf("%d,0x%x\r\n",page_frg,eeprom_cnt); |
sashida_h | 3:99c659d89698 | 366 | }else{ |
sashida_h | 3:99c659d89698 | 367 | //pc.printf("EEPROM_ERROR!! You should erase memory\r\n"); |
sashida_h | 3:99c659d89698 | 368 | } |
sashida_h | 3:99c659d89698 | 369 | eeprom_cnt = 0x04 + eeprom_cnt; |
sashida_h | 3:99c659d89698 | 370 | wait(0.01); |
sashida_h | 3:99c659d89698 | 371 | |
sashida_h | 3:99c659d89698 | 372 | } |
sashida_h | 3:99c659d89698 | 373 | wait(0.1); |
sashida_h | 0:c38491379a28 | 374 | } |
sashida_h | 1:717563cb9070 | 375 | |
sashida_h | 0:c38491379a28 | 376 | } |
sashida_h | 0:c38491379a28 | 377 | |
sashida_h | 0:c38491379a28 | 378 | /* |
sashida_h | 0:c38491379a28 | 379 | int main(){ |
sashida_h | 0:c38491379a28 | 380 | int adc[4]; |
sashida_h | 0:c38491379a28 | 381 | int i; |
sashida_h | 0:c38491379a28 | 382 | |
sashida_h | 0:c38491379a28 | 383 | pc.printf("Hello world\r\n"); |
sashida_h | 0:c38491379a28 | 384 | wait(1.0); |
sashida_h | 0:c38491379a28 | 385 | |
sashida_h | 0:c38491379a28 | 386 | while(1){ |
sashida_h | 0:c38491379a28 | 387 | adc[0] = mcp.sgl( CH0 ); |
sashida_h | 0:c38491379a28 | 388 | adc[1] = mcp.sgl( CH1 ); |
sashida_h | 0:c38491379a28 | 389 | adc[2] = mcp.sgl( CH2 ); |
sashida_h | 0:c38491379a28 | 390 | adc[3] = mcp.sgl( CH3 ); |
sashida_h | 0:c38491379a28 | 391 | for(i=0; i<4; i++){ |
sashida_h | 0:c38491379a28 | 392 | pc.printf("CH%d:%d\r\n",i,adc[i]); |
sashida_h | 0:c38491379a28 | 393 | } |
sashida_h | 0:c38491379a28 | 394 | wait(0.5); |
sashida_h | 0:c38491379a28 | 395 | } |
sashida_h | 0:c38491379a28 | 396 | |
sashida_h | 0:c38491379a28 | 397 | } |
sashida_h | 0:c38491379a28 | 398 | */ |