MCP3204をSTM303K8T6で同時に6個使ってみた
Dependencies: mbed 24LC1025 MCP3204
main.cpp
- Committer:
- sashida_h
- Date:
- 2020-08-05
- Revision:
- 2:133b3bf22850
- Parent:
- 1:717563cb9070
- Child:
- 3:99c659d89698
File content as of revision 2:133b3bf22850:
#include "mbed.h" #include "MCP3204.h" Serial pc(PA_2, PA_3, 115200); //pin19,20 TX,RX CAN can(PA_11, PA_12,100000); //pin21,22 rd,td SPI spi(PA_7, PA_6, PA_5); MCP3204 mcp1(spi,PB_0); //下z- MCP3204 mcp2(spi,PB_1); //右x+ MCP3204 mcp3(spi,PB_3); //左x- MCP3204 mcp4(spi,PA_8); // 前y+ MCP3204 mcp5(spi,PA_10); //上z+ MCP3204 mcp6(spi,PF_0); //後y- CANMessage msg; #define T 0.03 union Float2Byte{ float _float; char _byte[4]; }; typedef union Float2Byte Float2Byte; void send(float senddata,int id){ //pc.printf("Master send()\n\r"); /*ID: 0x01*/ Float2Byte sendFloat; sendFloat._float = senddata; //ここに送りたい値を入れる. char serialData[4]; for(int i=0;i<4;++i){ serialData[i] = sendFloat._byte[i]; //pc.printf("send_char: %d\n\r", serialData[i]); } //pc.printf("sendFloat: %f\n\r", sendFloat._float); if(can.write(CANMessage(id, serialData, 4))){ //pc.printf("Send.\n\r"); } } void receive(){ Float2Byte getFloat; if(can.read(msg)){ /*ID: 0x01*/ if(msg.id == 0x01){ //pc.printf("ID: 0x01\n\r"); for(int i=0;i<4;++i){ getFloat._byte[i] = msg.data[i]; //pc.printf("get_char: %d\n\r", getFloat._byte[i]); } pc.printf("world_time:%.2f\r\n", getFloat._float); } if(msg.id == 0x03){ //pc.printf("ID: 0x01\n\r"); for(int i=0;i<4;++i){ getFloat._byte[i] = msg.data[i]; //pc.printf("get_char: %d\n\r", getFloat._byte[i]); } pc.printf("ID0x03:%.2f\r\n", getFloat._float); } } } int main(){ int adc1[4],adc2[4],adc3[4],adc4[4],adc5[4],adc6[4]; int i,j,cnt; float ave[6],buff; can.attach(receive, CAN::RxIrq); pc.printf("Hello world\r\n"); wait(1.0); while(1){ adc1[0] = mcp1.sgl( CH0 ); adc1[1] = mcp1.sgl( CH1 ); adc1[2] = mcp1.sgl( CH2 ); adc1[3] = mcp1.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc1[j-1] > adc1[j]){ buff = adc1[j-1]; adc1[j-1] = adc1[j]; adc1[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[0] = (adc1[1] + adc1[2])/2.0 + 120.0; adc2[0] = mcp2.sgl( CH0 ); adc2[1] = mcp2.sgl( CH1 ); adc2[2] = mcp2.sgl( CH2 ); adc2[3] = mcp2.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc2[j-1] > adc2[j]){ buff = adc2[j-1]; adc2[j-1] = adc2[j]; adc2[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[1] = (adc2[1] + adc2[2])/2.0; adc3[0] = mcp3.sgl( CH0 ); adc3[1] = mcp3.sgl( CH1 ); adc3[2] = mcp3.sgl( CH2 ); adc3[3] = mcp3.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc3[j-1] > adc3[j]){ buff = adc3[j-1]; adc3[j-1] = adc3[j]; adc3[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[2] = (adc3[1] + adc3[2])/2.0 + 70.0; adc4[0] = mcp4.sgl( CH0 ); adc4[1] = mcp4.sgl( CH1 ); adc4[2] = mcp4.sgl( CH2 ); adc4[3] = mcp4.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc4[j-1] > adc4[j]){ buff = adc4[j-1]; adc4[j-1] = adc4[j]; adc4[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[3] = (adc4[1] + adc4[2])/2.0 + 55.0; adc5[0] = mcp5.sgl( CH0 ); adc5[1] = mcp5.sgl( CH1 ); adc5[2] = mcp5.sgl( CH2 ); adc5[3] = mcp5.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc5[j-1] > adc5[j]){ buff = adc5[j-1]; adc5[j-1] = adc5[j]; adc5[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[4] = (adc5[1] + adc5[2])/2.0; adc6[0] = mcp6.sgl( CH0 ); adc6[1] = mcp6.sgl( CH1 ); adc6[2] = mcp6.sgl( CH2 ); adc6[3] = mcp6.sgl( CH3 ); for(i=0;i<4-1;i++){ for(j=1;j<4-i;j++){ if(adc6[j-1] > adc6[j]){ buff = adc6[j-1]; adc6[j-1] = adc6[j]; adc6[j] = buff; } } } //pc.printf("%d,%d,%d,%d\r\n",adc1[0],adc1[1],adc1[2],adc1[3]); ave[5] = (adc6[1] + adc6[2])/2.0 - 100.0; /* pc.printf("1"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc1[i]); } pc.printf(",%.1f\r\n", ave1); pc.printf("2"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc2[i]); } pc.printf(",%.1f\r\n", ave2); pc.printf("3"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc3[i]); } pc.printf(",%.1f\r\n", ave3); pc.printf("4"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc4[i]); } pc.printf(",%.1f\r\n", ave4); pc.printf("5"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc5[i]); } pc.printf(",%.1f\r\n", ave5); pc.printf("6"); for(i=0; i<4; i++){ //pc.printf("CH%d:%d\r\n",i,adc1[i]); pc.printf(",%d",adc6[i]); } pc.printf(",%.1f\r\n", ave6); */ cnt = 0; if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:0\r\n"); //else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] < ave[0])pc.printf("x:90,y:0,z:0\r\n"); else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] > ave[0])pc.printf("x:180,y:0,z:0\r\n"); //else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:270,y:0,z:0\r\n"); else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:0\r\n"); //else if(ave[1] < ave[2] && ave[3] < ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:90\r\n"); else if(ave[1] > ave[2] && ave[3] < ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:180\r\n"); //else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:270\r\n"); else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] < ave[0])pc.printf("x:0,y:0,z:0\r\n"); //else if(ave[1] < ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:0,y:90,z:0\r\n"); else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:0,y:180,z:0\r\n"); //else if(ave[1] > ave[2] && ave[3] > ave[5] && ave[4] > ave[0])pc.printf("x:0,y:270,z:0\r\n"); else pc.printf("none\r\n"); pc.printf("%.1f,%.1f,%.1f,%.1f,%.1f,%.1f\r\n",ave[1],ave[2],ave[3],ave[5],ave[4],ave[0]); wait(0.5); } } /* int main(){ int adc[4]; int i; pc.printf("Hello world\r\n"); wait(1.0); while(1){ adc[0] = mcp.sgl( CH0 ); adc[1] = mcp.sgl( CH1 ); adc[2] = mcp.sgl( CH2 ); adc[3] = mcp.sgl( CH3 ); for(i=0; i<4; i++){ pc.printf("CH%d:%d\r\n",i,adc[i]); } wait(0.5); } } */