四輪オムニの足回りを動かすプログラム
Embed:
(wiki syntax)
Show/hide line numbers
SBDBT.cpp
00001 #include "SBDBT.hpp" 00002 #include "mbed.h" 00003 00004 Serial pc(USBTX,USBRX); 00005 00006 sbdbt::sbdbt(PinName TX, PinName RX){ 00007 i = 0; 00008 pos = 0; 00009 val = 0x80; 00010 len = 10; 00011 data = new char[len]; 00012 PS3_Data = new char[len]; 00013 dev = new Serial(TX, RX); 00014 dev -> baud(9600); 00015 dev -> attach(callback(this,&sbdbt::get),Serial::RxIrq); 00016 } 00017 00018 sbdbt::sbdbt(PinName TX, PinName RX, int baud){ 00019 i = 0; 00020 pos = 0; 00021 val = 0x80; 00022 len = 10; 00023 data = new char[len]; 00024 PS3_Data = new char[len]; 00025 dev = new Serial(TX, RX); 00026 dev -> baud(9600); 00027 pc.baud(baud); 00028 dev -> attach(callback(this,&sbdbt::get),Serial::RxIrq); 00029 } 00030 00031 void sbdbt::get(){ 00032 data[i] = dev -> getc(); 00033 if(data[i] == val){ 00034 if(i != pos){ 00035 data[pos] = val; 00036 i = pos + 1; 00037 } 00038 else{ 00039 i++; 00040 } 00041 } 00042 else{ 00043 if(i == pos); 00044 else{ 00045 i++; 00046 } 00047 } 00048 if(i >= len){ 00049 PS3_Data[0] = data[0]; 00050 PS3_Data[1] = data[1]; 00051 PS3_Data[2] = data[2]; 00052 PS3_Data[3] = data[3]; 00053 PS3_Data[4] = data[4]; 00054 PS3_Data[5] = data[5]; 00055 PS3_Data[6] = data[6]; 00056 PS3_Data[7] = data[7]; 00057 PS3_Data[8] = data[8]; 00058 PS3_Data[9] = data[9]; 00059 i = 0; 00060 } 00061 } 00062 00063 void sbdbt::button_state(){pc.printf("UP: %d, DOW: %d, RIG: %d, LEF: %d, TRI: %d, CRO: %d, CIR: %d, SQU: %d, L1: %d, L2: %d, R1: %d, R2: %d, STA: %d, SEL: %d LSX: %3d, LSY: %3d, RSX: %3d, RY: %3d, L2An: %3d, R2An: %3d\n",up(), down(), right(), left(), tri(), cross(), circle(), square(), l1(), l2(), r1(), r2(), start(), select(), lsx(), lsy(), rsx(), rsy(), l2An(), r2An());} 00064 00065 void sbdbt::data_print(){pc.printf("%2x %2x %2x %2x %2x %2x %2x %2x %2x %2x\n",PS3_Data[0], PS3_Data[1], PS3_Data[2], PS3_Data[3], PS3_Data[4], PS3_Data[5], PS3_Data[6], PS3_Data[7], PS3_Data[8], PS3_Data[9]);} 00066 00067 bool sbdbt::neutral(){ 00068 if(data[9] == 0) return 1; 00069 return 0; 00070 } 00071 00072 bool sbdbt::up(){ 00073 if(data[2] & UP) return 1; 00074 return 0; 00075 } 00076 00077 bool sbdbt::down(){ 00078 if(data[2] & DOWN) return 1; 00079 return 0; 00080 } 00081 00082 bool sbdbt::left(){ 00083 if(data[2] & LEFT) return 1; 00084 return 0; 00085 } 00086 00087 bool sbdbt::right(){ 00088 if(data[2] & RIGHT) return 1; 00089 return 0; 00090 } 00091 00092 bool sbdbt::tri(){ 00093 if(data[2] & TRI) return 1; 00094 return 0; 00095 } 00096 00097 bool sbdbt::cross(){ 00098 if(data[2] & CROSS) return 1; 00099 return 0; 00100 } 00101 00102 bool sbdbt::square(){ 00103 if(data[2] & SQUARE) return 1; 00104 return 0; 00105 } 00106 00107 bool sbdbt::circle(){ 00108 if(data[1] & CIRCLE) return 1; 00109 return 0; 00110 } 00111 bool sbdbt::l1(){ 00112 if(data[1] & L1) return 1; 00113 return 0; 00114 } 00115 00116 bool sbdbt::l2(){ 00117 if(data[1] & L2) return 1; 00118 return 0; 00119 } 00120 00121 bool sbdbt::r1(){ 00122 if(data[1] & R1) return 1; 00123 return 0; 00124 } 00125 00126 bool sbdbt::r2(){ 00127 if(data[1] & R2) return 1; 00128 return 0; 00129 } 00130 00131 bool sbdbt::start(){ 00132 if(data[1] & START) return 1; 00133 return 0; 00134 } 00135 00136 bool sbdbt::select(){ 00137 if(data[1] & SELECT) return 1; 00138 return 0; 00139 } 00140 00141 char sbdbt::lsx(){return data[3];} 00142 00143 char sbdbt::lsy(){return data[4];} 00144 00145 char sbdbt::rsx(){return data[5];} 00146 00147 char sbdbt::rsy(){return data[6];} 00148 00149 char sbdbt::l2An(){return data[7];} 00150 00151 char sbdbt::r2An(){return data[8];} 00152 00153 sbdbt::~sbdbt(){ 00154 delete dev; 00155 delete data; 00156 delete PS3_Data; 00157 }
Generated on Sat Oct 8 2022 11:15:36 by
1.7.2