操舵ソースコードの第一稿です。 メイン基盤用のソースコードです。
Dependencies: ADXL345_I2C INA226 mbed SDFileSystem
main.cpp
- Committer:
- YusukeWakuta
- Date:
- 2016-01-20
- Revision:
- 1:247ccea89495
- Parent:
- 0:77917230ce6d
File content as of revision 1:247ccea89495:
#include "mbed.h"
#define BUFFER 10
Serial rs485R(p13,p14);
Serial rs485L(p28,p27);
Serial pc(USBTX,USBRX);
DigitalOut Driver_R(p5);
DigitalOut Driver_L(p6);
DigitalIn Switch(p20);
Ticker CheckData;
AnalogIn val1(p16);
AnalogIn val2(p17);
void ch_data()
{
signed char rec_data_R[BUFFER];
signed char rec_data_L[BUFFER];
//signed char rec_data_R;
rs485R.putc('P');
wait_ms(1);
Driver_R = 0;
wait_ms(120);
if(rs485R.readable()) {
for(int i = 0; i < BUFFER; i++) {
rec_data_R[i] = rs485R.getc();
}
for(int i = 0; i < BUFFER; i++) {
if(rec_data_R[i + 1] != -1) {
pc.printf("RIGHT : ");
switch(rec_data_R[i]) {
case 'X':
pc.printf(" X : %5i",rec_data_R[i + 1]);
break;
case 'Y':
pc.printf(" Y : %5i",rec_data_R[i + 1]);
break;
case 'Z':
pc.printf(" Z : %5i",rec_data_R[i + 1]);
break;
case 'V':
pc.printf(" V : %5i",rec_data_R[i + 1]);
break;
case 'C':
pc.printf(" C : %5i",rec_data_R[i + 1]);
break;
}
}
}
}
pc.printf("\t");
rs485L.putc('P');
Driver_L = 0;
wait_ms(120);
if(rs485L.readable()) {
for(int i = 0; i < BUFFER; i++) {
rec_data_L[i] = rs485L.getc();
}
for(int i = 0; i < BUFFER; i++) {
if(rec_data_L[i + 1] != -1) {
pc.printf("LEFT : ");
switch(rec_data_L[i]) {
case 'X':
pc.printf(" X : %5i",rec_data_L[i + 1]);
break;
case 'Y':
pc.printf(" Y : %5i",rec_data_L[i + 1]);
break;
case 'Z':
pc.printf(" Z : %5i",rec_data_L[i + 1]);
break;
case 'V':
pc.printf(" V : %5i",rec_data_L[i + 1]);
break;
case 'C':
pc.printf(" C : %5i",rec_data_L[i + 1]);
break;
}
}
}
pc.printf("\n\r");
Driver_R = 1;
Driver_L = 1;
wait_ms(1);
}
}
void counter_checker(int *counter_A,int *counter_B,int *counter_C,int *counter_D)
{
(*counter_A)++;
if(*counter_A > 180)
*counter_A = 0;
*counter_B = *counter_B + 2;
if(*counter_B > 180)
*counter_B = 0;
*counter_C = *counter_C + 3;
if(*counter_C > 180)
*counter_C = 0;
*counter_D = *counter_D + 4;
if(*counter_D > 180)
*counter_D = 0;
}
int main()
{
/*右エルロン:A
右翼端板 :B
左エルロン:C
左翼端板 :D
*/
rs485R.baud(38400);
rs485L.baud(38400);
Driver_R = 1;
Driver_L = 1;
int counter_A = 0;
int counter_B = 0;
int counter_C = 0;
int counter_D = 0;
pc.printf("Driver\n\r");
CheckData.attach(&ch_data,0.40);
while(1) {
rs485R.putc(counter_A);
rs485R.putc('B');
rs485R.putc(counter_B);
rs485L.putc('C');
rs485L.putc(counter_C);
rs485L.putc('D');
rs485L.putc(counter_D);
counter_checker(&counter_A,&counter_B,&counter_C,&counter_D);
wait(0.25);
}
}