操舵ソースコードの第一稿です。 メイン基盤用のソースコードです。
Dependencies: ADXL345_I2C INA226 mbed SDFileSystem
main.cpp
- Committer:
- YusukeWakuta
- Date:
- 2016-01-15
- Revision:
- 0:77917230ce6d
- Child:
- 1:247ccea89495
File content as of revision 0:77917230ce6d:
#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'); rs485L.putc('P'); wait_ms(1); Driver_R = 0; Driver_L = 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"); 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); 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.25); while(1) { rs485R.putc('A'); 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); } }