Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
--- /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
--- /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
--- /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
--- /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