操舵ソースコードの第一稿です。 メイン基盤用のソースコードです。

Dependencies:   ADXL345_I2C INA226 mbed SDFileSystem

Committer:
YusukeWakuta
Date:
Wed Jan 20 13:33:43 2016 +0000
Revision:
1:247ccea89495
Parent:
0:77917230ce6d
1?20?????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YusukeWakuta 0:77917230ce6d 1 #include "mbed.h"
YusukeWakuta 0:77917230ce6d 2
YusukeWakuta 0:77917230ce6d 3 #define BUFFER 10
YusukeWakuta 0:77917230ce6d 4
YusukeWakuta 0:77917230ce6d 5 Serial rs485R(p13,p14);
YusukeWakuta 0:77917230ce6d 6 Serial rs485L(p28,p27);
YusukeWakuta 0:77917230ce6d 7 Serial pc(USBTX,USBRX);
YusukeWakuta 0:77917230ce6d 8 DigitalOut Driver_R(p5);
YusukeWakuta 0:77917230ce6d 9 DigitalOut Driver_L(p6);
YusukeWakuta 0:77917230ce6d 10 DigitalIn Switch(p20);
YusukeWakuta 0:77917230ce6d 11 Ticker CheckData;
YusukeWakuta 0:77917230ce6d 12 AnalogIn val1(p16);
YusukeWakuta 0:77917230ce6d 13 AnalogIn val2(p17);
YusukeWakuta 0:77917230ce6d 14
YusukeWakuta 0:77917230ce6d 15 void ch_data()
YusukeWakuta 0:77917230ce6d 16 {
YusukeWakuta 0:77917230ce6d 17 signed char rec_data_R[BUFFER];
YusukeWakuta 0:77917230ce6d 18 signed char rec_data_L[BUFFER];
YusukeWakuta 0:77917230ce6d 19 //signed char rec_data_R;
YusukeWakuta 0:77917230ce6d 20 rs485R.putc('P');
YusukeWakuta 0:77917230ce6d 21 wait_ms(1);
YusukeWakuta 0:77917230ce6d 22 Driver_R = 0;
YusukeWakuta 0:77917230ce6d 23 wait_ms(120);
YusukeWakuta 0:77917230ce6d 24 if(rs485R.readable()) {
YusukeWakuta 0:77917230ce6d 25 for(int i = 0; i < BUFFER; i++) {
YusukeWakuta 0:77917230ce6d 26 rec_data_R[i] = rs485R.getc();
YusukeWakuta 0:77917230ce6d 27 }
YusukeWakuta 0:77917230ce6d 28 for(int i = 0; i < BUFFER; i++) {
YusukeWakuta 0:77917230ce6d 29 if(rec_data_R[i + 1] != -1) {
YusukeWakuta 0:77917230ce6d 30 pc.printf("RIGHT : ");
YusukeWakuta 0:77917230ce6d 31 switch(rec_data_R[i]) {
YusukeWakuta 0:77917230ce6d 32 case 'X':
YusukeWakuta 0:77917230ce6d 33 pc.printf(" X : %5i",rec_data_R[i + 1]);
YusukeWakuta 0:77917230ce6d 34 break;
YusukeWakuta 0:77917230ce6d 35 case 'Y':
YusukeWakuta 0:77917230ce6d 36 pc.printf(" Y : %5i",rec_data_R[i + 1]);
YusukeWakuta 0:77917230ce6d 37 break;
YusukeWakuta 0:77917230ce6d 38 case 'Z':
YusukeWakuta 0:77917230ce6d 39 pc.printf(" Z : %5i",rec_data_R[i + 1]);
YusukeWakuta 0:77917230ce6d 40 break;
YusukeWakuta 0:77917230ce6d 41 case 'V':
YusukeWakuta 0:77917230ce6d 42 pc.printf(" V : %5i",rec_data_R[i + 1]);
YusukeWakuta 0:77917230ce6d 43 break;
YusukeWakuta 0:77917230ce6d 44 case 'C':
YusukeWakuta 0:77917230ce6d 45 pc.printf(" C : %5i",rec_data_R[i + 1]);
YusukeWakuta 0:77917230ce6d 46 break;
YusukeWakuta 1:247ccea89495 47 }
YusukeWakuta 1:247ccea89495 48 }
YusukeWakuta 1:247ccea89495 49 }
YusukeWakuta 1:247ccea89495 50 }
YusukeWakuta 1:247ccea89495 51 pc.printf("\t");
YusukeWakuta 1:247ccea89495 52
YusukeWakuta 1:247ccea89495 53 rs485L.putc('P');
YusukeWakuta 1:247ccea89495 54 Driver_L = 0;
YusukeWakuta 1:247ccea89495 55 wait_ms(120);
YusukeWakuta 1:247ccea89495 56 if(rs485L.readable()) {
YusukeWakuta 1:247ccea89495 57 for(int i = 0; i < BUFFER; i++) {
YusukeWakuta 1:247ccea89495 58 rec_data_L[i] = rs485L.getc();
YusukeWakuta 1:247ccea89495 59 }
YusukeWakuta 1:247ccea89495 60 for(int i = 0; i < BUFFER; i++) {
YusukeWakuta 1:247ccea89495 61 if(rec_data_L[i + 1] != -1) {
YusukeWakuta 1:247ccea89495 62 pc.printf("LEFT : ");
YusukeWakuta 1:247ccea89495 63 switch(rec_data_L[i]) {
YusukeWakuta 1:247ccea89495 64 case 'X':
YusukeWakuta 1:247ccea89495 65 pc.printf(" X : %5i",rec_data_L[i + 1]);
YusukeWakuta 1:247ccea89495 66 break;
YusukeWakuta 1:247ccea89495 67 case 'Y':
YusukeWakuta 1:247ccea89495 68 pc.printf(" Y : %5i",rec_data_L[i + 1]);
YusukeWakuta 1:247ccea89495 69 break;
YusukeWakuta 1:247ccea89495 70 case 'Z':
YusukeWakuta 1:247ccea89495 71 pc.printf(" Z : %5i",rec_data_L[i + 1]);
YusukeWakuta 1:247ccea89495 72 break;
YusukeWakuta 1:247ccea89495 73 case 'V':
YusukeWakuta 1:247ccea89495 74 pc.printf(" V : %5i",rec_data_L[i + 1]);
YusukeWakuta 1:247ccea89495 75 break;
YusukeWakuta 1:247ccea89495 76 case 'C':
YusukeWakuta 1:247ccea89495 77 pc.printf(" C : %5i",rec_data_L[i + 1]);
YusukeWakuta 1:247ccea89495 78 break;
YusukeWakuta 0:77917230ce6d 79 }
YusukeWakuta 0:77917230ce6d 80 }
YusukeWakuta 0:77917230ce6d 81 }
YusukeWakuta 1:247ccea89495 82 pc.printf("\n\r");
YusukeWakuta 0:77917230ce6d 83 Driver_R = 1;
YusukeWakuta 0:77917230ce6d 84 Driver_L = 1;
YusukeWakuta 1:247ccea89495 85 wait_ms(1);
YusukeWakuta 0:77917230ce6d 86 }
YusukeWakuta 1:247ccea89495 87 }
YusukeWakuta 1:247ccea89495 88
YusukeWakuta 1:247ccea89495 89 void counter_checker(int *counter_A,int *counter_B,int *counter_C,int *counter_D)
YusukeWakuta 1:247ccea89495 90 {
YusukeWakuta 1:247ccea89495 91
YusukeWakuta 1:247ccea89495 92 (*counter_A)++;
YusukeWakuta 1:247ccea89495 93 if(*counter_A > 180)
YusukeWakuta 1:247ccea89495 94 *counter_A = 0;
YusukeWakuta 1:247ccea89495 95
YusukeWakuta 1:247ccea89495 96 *counter_B = *counter_B + 2;
YusukeWakuta 1:247ccea89495 97 if(*counter_B > 180)
YusukeWakuta 1:247ccea89495 98 *counter_B = 0;
YusukeWakuta 1:247ccea89495 99
YusukeWakuta 1:247ccea89495 100 *counter_C = *counter_C + 3;
YusukeWakuta 1:247ccea89495 101 if(*counter_C > 180)
YusukeWakuta 1:247ccea89495 102 *counter_C = 0;
YusukeWakuta 1:247ccea89495 103
YusukeWakuta 1:247ccea89495 104 *counter_D = *counter_D + 4;
YusukeWakuta 1:247ccea89495 105 if(*counter_D > 180)
YusukeWakuta 1:247ccea89495 106 *counter_D = 0;
YusukeWakuta 1:247ccea89495 107 }
YusukeWakuta 1:247ccea89495 108
YusukeWakuta 1:247ccea89495 109 int main()
YusukeWakuta 1:247ccea89495 110 {
YusukeWakuta 1:247ccea89495 111 /*右エルロン:A
YusukeWakuta 1:247ccea89495 112 右翼端板 :B
YusukeWakuta 1:247ccea89495 113 左エルロン:C
YusukeWakuta 1:247ccea89495 114 左翼端板 :D
YusukeWakuta 1:247ccea89495 115 */
YusukeWakuta 1:247ccea89495 116 rs485R.baud(38400);
YusukeWakuta 1:247ccea89495 117 rs485L.baud(38400);
YusukeWakuta 1:247ccea89495 118 Driver_R = 1;
YusukeWakuta 1:247ccea89495 119 Driver_L = 1;
YusukeWakuta 1:247ccea89495 120 int counter_A = 0;
YusukeWakuta 1:247ccea89495 121 int counter_B = 0;
YusukeWakuta 1:247ccea89495 122 int counter_C = 0;
YusukeWakuta 1:247ccea89495 123 int counter_D = 0;
YusukeWakuta 1:247ccea89495 124 pc.printf("Driver\n\r");
YusukeWakuta 1:247ccea89495 125 CheckData.attach(&ch_data,0.40);
YusukeWakuta 1:247ccea89495 126 while(1) {
YusukeWakuta 1:247ccea89495 127 rs485R.putc(counter_A);
YusukeWakuta 1:247ccea89495 128 rs485R.putc('B');
YusukeWakuta 1:247ccea89495 129 rs485R.putc(counter_B);
YusukeWakuta 1:247ccea89495 130 rs485L.putc('C');
YusukeWakuta 1:247ccea89495 131 rs485L.putc(counter_C);
YusukeWakuta 1:247ccea89495 132 rs485L.putc('D');
YusukeWakuta 1:247ccea89495 133 rs485L.putc(counter_D);
YusukeWakuta 1:247ccea89495 134 counter_checker(&counter_A,&counter_B,&counter_C,&counter_D);
YusukeWakuta 1:247ccea89495 135 wait(0.25);
YusukeWakuta 1:247ccea89495 136 }
YusukeWakuta 1:247ccea89495 137 }
YusukeWakuta 0:77917230ce6d 138
YusukeWakuta 0:77917230ce6d 139