1/23 操舵 レシーバ
Dependencies: ADXL345_I2C INA226_ver1 mbed
Fork of RS485R_2 by
Revision 3:2bdb60bbc665, committed 2016-01-23
- Comitter:
- taurin
- Date:
- Sat Jan 23 10:43:15 2016 +0000
- Parent:
- 2:2b98a651b0a1
- Commit message:
- 1/23 ???????;
Changed in this revision
| INA226.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INA226.lib Sat Jan 23 10:43:15 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/albatross/code/INA226_ver1/#e490f37579a6
--- a/main.cpp Sat Dec 05 11:21:06 2015 +0000
+++ b/main.cpp Sat Jan 23 10:43:15 2016 +0000
@@ -1,18 +1,23 @@
-//相互通信確認用
+//翼端操舵プログラム
#include "mbed.h"
#include "ADXL345_I2C.h"
+#include "INA226.hpp"
#define BUFFER 30
Serial rs485(p13,p14);
Serial pc(USBTX,USBRX);
DigitalOut Receiver(p5);
ADXL345_I2C accelerometer(p9, p10);
+I2C ina226_i2c(p28,p27);
+INA226 VCmonitor(ina226_i2c);
PwmOut servo1(p21);
PwmOut servo2(p22);
int counter = 0;
-int servo_deg1 = 0;
-int servo_deg2 = 0;
+int eruron_deg = 0;
+int drug_deg = 0;
+unsigned short ina_val;
+double V,C;
int acc[3] = {0,0,0};
@@ -21,12 +26,10 @@
signed char rec_data = rs485.getc();
switch(rec_data) {
case 'A':
- servo_deg1 = rs485.getc();
- pc.printf("counter1:%d\n\r",servo_deg1);
+ eruron_deg = rs485.getc();
break;
case 'B':
- servo_deg2 = rs485.getc();
- //pc.printf("counter2:%d\n\r",servo_deg2);
+ drug_deg = rs485.getc();
break;
case 'C':
Receiver = 1;
@@ -37,14 +40,15 @@
rs485.putc((signed char)acc[1]);
rs485.putc('Z');
rs485.putc((signed char)acc[2]);
-// rs485.printf("X%iY%iZ%i\n\r",(short)acc[0],(short)acc[1],(short)acc[2]);
+ rs485.putc('V');
+ rs485.putc((signed char)V);
+ rs485.putc('I');
+ rs485.putc((signed char)C);
wait_ms(2);
Receiver = 0;
- //pc.printf("x:%d,y:%d,z:%d\n\r",(signed char)acc[0],(signed char)acc[1],(signed char)acc[2]);
break;
default:
wait_us(5);
- pc.printf("%d\n\r",rec_data);
}
}
@@ -63,15 +67,46 @@
accelerometer.setDataFormatControl(0x0B);
accelerometer.setDataRate(ADXL345_3200HZ);
accelerometer.setPowerControl(0x08);
+
+ if(!VCmonitor.isExist()){
+ pc.printf("VCmonitor NOT FOUND\n");
+ }
+ ina_val = 0;
+ if(VCmonitor.rawRead(0x00,&ina_val) != 0){
+ pc.printf("VCmonitor READ ERROR\n");
+ while(1){}
+ }
+ VCmonitor.setCurrentCalibration();
+}
+
+void updateDatas(){
+ accelerometer.getOutput(acc);
+ int tmp = VCmonitor.getVoltage(&V);
+ tmp = VCmonitor.getCurrent(&C);
+}
+
+double calcPulse(int deg){
+ return (0.00093+(deg/180.0)*(0.00235-0.00077));
+}
+
+void WriteServo(){
+ servo1.pulsewidth(calcPulse(eruron_deg));
+ servo2.pulsewidth(calcPulse(drug_deg));
+}
+
+void toStringDatas(){
+ pc.printf("acc[0]:%i acc[1]:%i acc[2]:%i\r\n",acc[0],acc[1],acc[2]);
+ pc.printf("V:%i C:%i\r\n",V,C);
+ pc.printf("\r\n");
}
int main()
{
init();
while(1) {
- accelerometer.getOutput(acc);
- servo1.pulsewidth(0.00093 + (servo_deg1 / 180.0) * (0.00235 - 0.00077));
- servo2.pulsewidth(0.00093 + (servo_deg2 / 180.0) * (0.00235 - 0.00077));
+ updateDatas();
+ WriteServo();
+ toStringDatas();
wait_ms(10);
}
}
