1/29 操舵翼端CAN
Dependencies: ADXL345_I2C Control_Yokutan_CANver1 mbed
Revision 0:e052602db102, committed 2016-01-29
- Comitter:
- taurin
- Date:
- Fri Jan 29 13:38:29 2016 +0000
- Commit message:
- 1/29 ????CAN
Changed in this revision
diff -r 000000000000 -r e052602db102 ADXL345_I2C.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ADXL345_I2C.lib Fri Jan 29 13:38:29 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/nimbusgb/code/ADXL345_I2C/#92fa975dab32
diff -r 000000000000 -r e052602db102 INA226.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INA226.lib Fri Jan 29 13:38:29 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/albatross/code/Control_Yokutan_CANver1/#3dcd839b810b
diff -r 000000000000 -r e052602db102 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jan 29 13:38:29 2016 +0000 @@ -0,0 +1,122 @@ +//翼端can program +#include "mbed.h" +#include "ADXL345_I2C.h" +#include "INA226.hpp" +#define TO_SEND_DATAS_NUM 5 +#define INIT_SERVO_PERIOD_MS 20000 +#define WAIT_LOOP_TIME_MS 10 +#define CONTROL_VALUES_NUM 2 +#define TO_SEND_CAN_ID 100 +CAN can(p30,p29); +CANMessage recmsg; +Serial pc(USBTX,USBRX); +ADXL345_I2C accelerometer(p9, p10); +I2C ina226_i2c(p28,p27); +INA226 VCmonitor(ina226_i2c); +PwmOut servo1(p21); +PwmOut servo2(p22); + +char toSendDatas[TO_SEND_DATAS_NUM]; +char controlValues[CONTROL_VALUES_NUM]; + +int counter = 0; +int eruron_deg = 0; +int drug_deg = 0; +unsigned short ina_val; +double V,C; +bool SERVO_FLAG; +bool ADXL_FLAG; +bool INA_FLAG; + +int acc[3] = {0,0,0}; + +bool servoInit(){ + servo1.period_ms(INIT_SERVO_PERIOD_MS); + servo2.period_ms(INIT_SERVO_PERIOD_MS); + return true; +} + +bool adxlInit(){ + accelerometer.setPowerControl(0x00); + accelerometer.setDataFormatControl(0x0B); + accelerometer.setDataRate(ADXL345_3200HZ); + accelerometer.setPowerControl(0x08); + return true; +} + +bool inaInit(){ + if(!VCmonitor.isExist()){ + pc.printf("VCmonitor NOT FOUND\n"); + return false; + } + ina_val = 0; + if(VCmonitor.rawRead(0x00,&ina_val) != 0){ + pc.printf("VCmonitor READ ERROR\n"); + return false; + } + VCmonitor.setCurrentCalibration(); + return true; +} + +void init(){ + pc.printf("Receiver\n\r"); + SERVO_FLAG = servoInit(); + ADXL_FLAG = adxlInit(); + INA_FLAG = inaInit(); +} + +void updateDatas(){ + if(ADXL_FLAG){ + accelerometer.getOutput(acc); + } + if(INA_FLAG){ + int tmp = VCmonitor.getVoltage(&V); + tmp = VCmonitor.getCurrent(&C); + } + for(int i = 0; i < 3; i++){ + toSendDatas[i] = acc[i]; + } + toSendDatas[3] = (char)(V/100); + toSendDatas[4] = (char)(C/0100); +} + +void receiveDatas(){ + if(can.read(recmsg)){ + for(int i = 0; i < recmsg.len; i++){ + controlValues[i] = recmsg.data[i]; + } + } +} + +void toString(){ + //for(int i = 0; i < TO_SEND_DATAS_NUM; i++){ + pc.printf("%i:",toSendDatas[3]); + pc.printf("%i:",toSendDatas[4]); + pc.printf("%f:",V); + pc.printf("%f:",C); + //} + //for(int i = 0; i <CONTROL_VALUES_NUM; i++){ +// pc.printf("%i:",controlValues[i]); +// } +// pc.printf("%d",INA_FLAG); + pc.printf("\n\r"); +} + +void sendDatas(){ + if(can.write(CANMessage(TO_SEND_CAN_ID, toSendDatas, TO_SEND_DATAS_NUM))) + pc.printf("resend suc\n\r"); +} + +void + +int main(){ + init(); + while(1){ + receiveDatas(); + updateDatas(); + //WriteServo(); + toString(); + sendDatas(); + wait_ms(WAIT_LOOP_TIME_MS); + } +} \ No newline at end of file
diff -r 000000000000 -r e052602db102 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jan 29 13:38:29 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/165afa46840b \ No newline at end of file