v1

Dependencies:   BEAR_Protocol_Edited BufferedSerial Debug MaxSonar PID Process QEI UI iSerial mbed

Fork of CleaningMachine_Betago by palm and chin

Committer:
palmdotax
Date:
Tue Jun 07 03:28:39 2016 +0000
Revision:
6:adf1f4351f9f
Parent:
5:fe76f3dae81e
v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
palmdotax 1:45f1573d65a1 1 //*****************************************************/
palmdotax 1:45f1573d65a1 2 // Include //
palmdotax 1:45f1573d65a1 3 #include "mbed.h"
icyzkungz 0:84f05cd2f197 4 #include "pinconfig.h"
palmdotax 1:45f1573d65a1 5 #include "PID.h"
palmdotax 1:45f1573d65a1 6 //#include "Motor.h"
palmdotax 1:45f1573d65a1 7 #include "eeprom.h"
palmdotax 1:45f1573d65a1 8 #include "Receiver.h"
palmdotax 1:45f1573d65a1 9 #include "Motion_EEPROM_Address.h"
palmdotax 1:45f1573d65a1 10 #include "move.h"
palmdotax 1:45f1573d65a1 11 #include "UNTRASONIC.h"
palmdotax 2:f873deba2305 12 #include "BufferedSerial.h"
palmdotax 2:f873deba2305 13 #include "rplidar.h"
palmdotax 2:f873deba2305 14 RPLidar lidar;
palmdotax 1:45f1573d65a1 15 //#include "pidcontrol.h"
palmdotax 5:fe76f3dae81e 16 BufferedSerial se_lidar(PA_11,PA_12);
palmdotax 1:45f1573d65a1 17 #define EEPROM_DELAY 2
palmdotax 1:45f1573d65a1 18 DigitalOut rs485_dirc1(RS485_DIRC);
palmdotax 1:45f1573d65a1 19 //#define DEBUG_UP
palmdotax 1:45f1573d65a1 20 //#define DEBUG_LOW
palmdotax 5:fe76f3dae81e 21 PwmOut VMO(PC_8);
palmdotax 1:45f1573d65a1 22 InterruptIn encoderA_d(PB_12);
palmdotax 1:45f1573d65a1 23 DigitalIn encoderB_d(PB_13);
palmdotax 1:45f1573d65a1 24 InterruptIn encoderA_1(PB_1);
palmdotax 1:45f1573d65a1 25 DigitalIn encoderB_1(PB_2);
palmdotax 1:45f1573d65a1 26 InterruptIn encoderA_2(PB_14);
palmdotax 1:45f1573d65a1 27 DigitalIn encoderB_2(PB_15);
palmdotax 1:45f1573d65a1 28 Timer timerStart;
palmdotax 5:fe76f3dae81e 29 Timer tim;
palmdotax 1:45f1573d65a1 30 Timeout time_getsensor;
palmdotax 1:45f1573d65a1 31 Timeout time_distance;
palmdotax 1:45f1573d65a1 32 Timeout shutdown;
palmdotax 1:45f1573d65a1 33 move m1;
palmdotax 1:45f1573d65a1 34 //*****************************************************/
palmdotax 2:f873deba2305 35
palmdotax 1:45f1573d65a1 36 // Global //
palmdotax 1:45f1573d65a1 37 //timer
palmdotax 1:45f1573d65a1 38 int timer_now=0,timer_later=0;
palmdotax 1:45f1573d65a1 39 int times=0,timer_buffer=0;
palmdotax 1:45f1573d65a1 40
palmdotax 1:45f1573d65a1 41 //encoder
palmdotax 1:45f1573d65a1 42 int Encoderpos = 0;
palmdotax 1:45f1573d65a1 43 int real_d=0;
palmdotax 1:45f1573d65a1 44 float valocity1 =0,valocity2 =0,pulse_1=0,pulse_2=0,count=0,r=0.125,velocityreal=0,pulse_d=0,Z_d=0;
palmdotax 1:45f1573d65a1 45 //pid
palmdotax 1:45f1573d65a1 46
palmdotax 1:45f1573d65a1 47 double setp1=0,setp2=0;
palmdotax 1:45f1573d65a1 48 float outPID =0;
palmdotax 2:f873deba2305 49 float VRmax=0,VLmax=0,VR=0,VL=0,KP_LEFT=0,KI_LEFT=0,KD_LEFT=0,KP_RIGHT=0,KI_RIGHT=0 ,KD_RIGHT=0 ;
palmdotax 1:45f1573d65a1 50 PID P1(KP_LEFT,KI_LEFT,KD_LEFT,0.1);
palmdotax 1:45f1573d65a1 51 PID P2(KP_RIGHT,KI_RIGHT ,KD_RIGHT,0.1);
palmdotax 1:45f1573d65a1 52 //Ticker Recieve;
palmdotax 1:45f1573d65a1 53 //-- Communication --
palmdotax 5:fe76f3dae81e 54 COMMUNICATION *com1;
palmdotax 5:fe76f3dae81e 55
palmdotax 4:de5a65c17664 56 //BufferedSerial PC(SERIAL_TX,SERIAL_RX);
palmdotax 4:de5a65c17664 57 Serial PC(SERIAL_TX,SERIAL_RX);
palmdotax 4:de5a65c17664 58 Bear_Receiver com(PA_9,PA_10,115200);
palmdotax 1:45f1573d65a1 59 int16_t MY_ID = 0x00;
palmdotax 1:45f1573d65a1 60 //-- Memorry --
palmdotax 1:45f1573d65a1 61 EEPROM memory(PB_4,PA_8,0);
palmdotax 2:f873deba2305 62 float KP_LEFT_BUFF=0,KI_LEFT_BUFF=0,KD_LEFT_BUFF=0,KP_RIGHT_BUFF=0,KI_RIGHT_BUFF =0,KD_RIGHT_BUFF=0;
palmdotax 1:45f1573d65a1 63
palmdotax 2:f873deba2305 64 void CmdCheck(int16_t id,uint8_t *command,uint8_t ins);
palmdotax 2:f873deba2305 65 void RC();
palmdotax 1:45f1573d65a1 66
palmdotax 2:f873deba2305 67 //rplidar
palmdotax 4:de5a65c17664 68 //float distances = 0;
palmdotax 4:de5a65c17664 69 //float angle = 0;
palmdotax 4:de5a65c17664 70 //ool startBit = 0;
palmdotax 4:de5a65c17664 71 //char quality =0 ;
palmdotax 1:45f1573d65a1 72
palmdotax 1:45f1573d65a1 73
palmdotax 1:45f1573d65a1 74 void CmdCheck(int16_t id,uint8_t *command,uint8_t ins);
palmdotax 1:45f1573d65a1 75
palmdotax 1:45f1573d65a1 76
palmdotax 1:45f1573d65a1 77 DigitalOut myled(LED1);
palmdotax 1:45f1573d65a1 78
icyzkungz 0:84f05cd2f197 79
palmdotax 1:45f1573d65a1 80 void Rx_interrupt()
palmdotax 1:45f1573d65a1 81 {
palmdotax 1:45f1573d65a1 82 //s1.get_motor();รับค่ามอเตอร์
palmdotax 1:45f1573d65a1 83 RC();
palmdotax 1:45f1573d65a1 84 timer_later= timer_now;
palmdotax 1:45f1573d65a1 85
palmdotax 1:45f1573d65a1 86 }
palmdotax 1:45f1573d65a1 87 void EncoderA_1()//ซ้าย
palmdotax 1:45f1573d65a1 88 { if(encoderB_1==0)
palmdotax 1:45f1573d65a1 89 { Encoderpos = Encoderpos + 1;}
palmdotax 1:45f1573d65a1 90 else
palmdotax 1:45f1573d65a1 91 { Encoderpos = Encoderpos -1;}
palmdotax 1:45f1573d65a1 92 pulse_1+=1;
palmdotax 1:45f1573d65a1 93 //Encoderpos = Encoderpos + 1;
palmdotax 1:45f1573d65a1 94 //valocity+=1;
palmdotax 1:45f1573d65a1 95 //pc.printf("%d \n",Encoderpos);
palmdotax 1:45f1573d65a1 96 //pc.printf("pulse=%f \n",pulse);
palmdotax 1:45f1573d65a1 97 //if(pulse==128)
palmdotax 1:45f1573d65a1 98 //{count+=1;pulse=0; pc.printf("count=%f \n",count);}
palmdotax 1:45f1573d65a1 99 }
palmdotax 1:45f1573d65a1 100 void EncoderA_2()//ขวา
palmdotax 1:45f1573d65a1 101 {
palmdotax 1:45f1573d65a1 102 if(encoderB_2==0)
palmdotax 1:45f1573d65a1 103 { Encoderpos = Encoderpos + 1;}
palmdotax 1:45f1573d65a1 104 else
palmdotax 1:45f1573d65a1 105 { Encoderpos = Encoderpos -1;}
palmdotax 1:45f1573d65a1 106 pulse_2+=1;
palmdotax 1:45f1573d65a1 107 //pc.printf("%d",Encoderpos);
palmdotax 1:45f1573d65a1 108 }
palmdotax 1:45f1573d65a1 109 void EncoderA_D()
palmdotax 1:45f1573d65a1 110 {
palmdotax 1:45f1573d65a1 111 if(encoderB_d==0)
palmdotax 1:45f1573d65a1 112 { Encoderpos = Encoderpos + 1;}
palmdotax 1:45f1573d65a1 113 else
palmdotax 1:45f1573d65a1 114 { Encoderpos = Encoderpos -1;}
palmdotax 1:45f1573d65a1 115 pulse_d+=1;
palmdotax 1:45f1573d65a1 116 if(pulse_d==128)
palmdotax 1:45f1573d65a1 117 {
palmdotax 1:45f1573d65a1 118 Z_d+=1;
palmdotax 1:45f1573d65a1 119 pulse_d=0;
palmdotax 1:45f1573d65a1 120 }
palmdotax 2:f873deba2305 121
palmdotax 1:45f1573d65a1 122 }
palmdotax 1:45f1573d65a1 123 void getvelo1()//จาก encoder
palmdotax 1:45f1573d65a1 124 {
palmdotax 1:45f1573d65a1 125 valocity1=pulse_1*((2*3.14*r)/128);
palmdotax 2:f873deba2305 126 PC.printf("valocity=%f \n",valocity1);
palmdotax 1:45f1573d65a1 127 count=0;
palmdotax 1:45f1573d65a1 128 timerStart.reset();
palmdotax 1:45f1573d65a1 129 }
palmdotax 1:45f1573d65a1 130 void getvelo2()
palmdotax 1:45f1573d65a1 131 {
palmdotax 1:45f1573d65a1 132 valocity2=pulse_2*((2*3.14*r)/128);
palmdotax 2:f873deba2305 133 PC.printf("valocity=%f \n",valocity2);
palmdotax 1:45f1573d65a1 134 count=0;
palmdotax 1:45f1573d65a1 135 timerStart.reset();
palmdotax 1:45f1573d65a1 136 }
palmdotax 1:45f1573d65a1 137 void get_d()//ระยะทาง
palmdotax 1:45f1573d65a1 138 {
palmdotax 1:45f1573d65a1 139 real_d=Z_d*(2*3.14*r);
palmdotax 1:45f1573d65a1 140 //ส่งข้อมูล
palmdotax 1:45f1573d65a1 141
palmdotax 1:45f1573d65a1 142 }
palmdotax 2:f873deba2305 143 void get_rplidar()
palmdotax 2:f873deba2305 144 {
palmdotax 4:de5a65c17664 145 if (IS_OK(lidar.waitPoint()))
palmdotax 4:de5a65c17664 146 {
palmdotax 4:de5a65c17664 147
palmdotax 4:de5a65c17664 148 }
palmdotax 4:de5a65c17664 149 else
palmdotax 4:de5a65c17664 150 {
palmdotax 4:de5a65c17664 151
palmdotax 2:f873deba2305 152 lidar.startScan();
palmdotax 4:de5a65c17664 153
palmdotax 2:f873deba2305 154 }
palmdotax 2:f873deba2305 155
palmdotax 2:f873deba2305 156 }
palmdotax 1:45f1573d65a1 157 double map(double x, double in_min, double in_max, double out_min, double out_max)
palmdotax 1:45f1573d65a1 158 {
palmdotax 1:45f1573d65a1 159 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
palmdotax 1:45f1573d65a1 160
palmdotax 1:45f1573d65a1 161 }
palmdotax 1:45f1573d65a1 162 void PID_m1()//left
palmdotax 1:45f1573d65a1 163 {
palmdotax 1:45f1573d65a1 164 setp1=map(1.0,0.0,1.094,0.0,1.0);
palmdotax 1:45f1573d65a1 165 P1.setSetPoint(setp1);
palmdotax 1:45f1573d65a1 166 times=timerStart.read();
palmdotax 1:45f1573d65a1 167 if(times==1)// m/s
palmdotax 1:45f1573d65a1 168 {
palmdotax 1:45f1573d65a1 169 getvelo1();
palmdotax 1:45f1573d65a1 170 //pc.printf("TIME \n");
palmdotax 1:45f1573d65a1 171 times=0;
palmdotax 1:45f1573d65a1 172 pulse_1=0;
palmdotax 1:45f1573d65a1 173 }
palmdotax 1:45f1573d65a1 174 P1.setProcessValue(valocity1);
palmdotax 1:45f1573d65a1 175 outPID=P1.compute();
palmdotax 1:45f1573d65a1 176 //pc.printf("outPID=%f \n",outPID);
palmdotax 1:45f1573d65a1 177 m1.movespeed_1(setp1,outPID);
palmdotax 1:45f1573d65a1 178 }
palmdotax 1:45f1573d65a1 179 void PID_m2()//right
palmdotax 1:45f1573d65a1 180 {
palmdotax 1:45f1573d65a1 181 setp2=map(1.0,0.0,1.094,0.0,1.0);
palmdotax 1:45f1573d65a1 182 P2.setSetPoint(setp2);
palmdotax 1:45f1573d65a1 183 times=timerStart.read();
palmdotax 1:45f1573d65a1 184 if(times==1)// m/s
palmdotax 1:45f1573d65a1 185 {
palmdotax 1:45f1573d65a1 186 getvelo2();
palmdotax 1:45f1573d65a1 187 //pc.printf("TIME \n");
palmdotax 1:45f1573d65a1 188 times=0;
palmdotax 1:45f1573d65a1 189 pulse_2=0;
palmdotax 1:45f1573d65a1 190 }
palmdotax 1:45f1573d65a1 191 P2.setProcessValue(valocity2);
palmdotax 1:45f1573d65a1 192 outPID=P2.compute();
palmdotax 1:45f1573d65a1 193 //pc.printf("outPID=%f \n",outPID);
palmdotax 2:f873deba2305 194 m1.movespeed_2(setp2,outPID);
palmdotax 1:45f1573d65a1 195 }
palmdotax 1:45f1573d65a1 196
palmdotax 1:45f1573d65a1 197
palmdotax 2:f873deba2305 198 void RC()
palmdotax 1:45f1573d65a1 199 {
palmdotax 1:45f1573d65a1 200 myled =1;
palmdotax 1:45f1573d65a1 201 uint8_t data_array[30];
palmdotax 1:45f1573d65a1 202 uint8_t id=0;
palmdotax 1:45f1573d65a1 203 uint8_t ins=0;
palmdotax 1:45f1573d65a1 204 uint8_t status=0xFF;
palmdotax 1:45f1573d65a1 205
palmdotax 1:45f1573d65a1 206
palmdotax 1:45f1573d65a1 207
palmdotax 1:45f1573d65a1 208 status = com.ReceiveCommand(&id,data_array,&ins);
palmdotax 1:45f1573d65a1 209 PC.printf("status = 0x%02x\n\r",status);
palmdotax 1:45f1573d65a1 210 if(status == ANDANTE_ERRBIT_NONE) {
palmdotax 1:45f1573d65a1 211 CmdCheck((int16_t)id,data_array,ins);
palmdotax 5:fe76f3dae81e 212 PC.printf("RC******************************");
palmdotax 1:45f1573d65a1 213 }
palmdotax 1:45f1573d65a1 214
palmdotax 1:45f1573d65a1 215 }
palmdotax 1:45f1573d65a1 216 /*******************************************************/
palmdotax 5:fe76f3dae81e 217 int buf=0;
icyzkungz 0:84f05cd2f197 218 int main()
icyzkungz 0:84f05cd2f197 219 {
palmdotax 1:45f1573d65a1 220 PC.baud(115200);
palmdotax 5:fe76f3dae81e 221 lidar.begin(se_lidar);
palmdotax 5:fe76f3dae81e 222 tim.start();
palmdotax 5:fe76f3dae81e 223 //com1 = new COMMUNICATION(PA_9,PA_10,115200);
palmdotax 2:f873deba2305 224 encoderA_1.rise(&EncoderA_1);
palmdotax 2:f873deba2305 225 timerStart.start();
palmdotax 2:f873deba2305 226 P1.setMode(1);
palmdotax 2:f873deba2305 227 P1.setBias(0);
palmdotax 2:f873deba2305 228 // pc.printf("READY \n");
palmdotax 2:f873deba2305 229 //pc.attach(&Rx_interrupt, Serial::RxIrq);
palmdotax 5:fe76f3dae81e 230 lidar.setAngle(0,360);
palmdotax 1:45f1573d65a1 231 while(1) {
palmdotax 1:45f1573d65a1 232
palmdotax 5:fe76f3dae81e 233 VMO=1;
palmdotax 5:fe76f3dae81e 234 get_rplidar();
palmdotax 5:fe76f3dae81e 235 /* if(tim.read_ms()-buf>=1000){
palmdotax 5:fe76f3dae81e 236 for(int x=0;x<=359;x++){
palmdotax 5:fe76f3dae81e 237 printf("%d,",lidar.Data[x]);
palmdotax 5:fe76f3dae81e 238 }
palmdotax 5:fe76f3dae81e 239 buf = tim.read_ms();
palmdotax 5:fe76f3dae81e 240 }*/
palmdotax 2:f873deba2305 241 RC();
palmdotax 1:45f1573d65a1 242 //wait_ms(1);
icyzkungz 0:84f05cd2f197 243 }
icyzkungz 0:84f05cd2f197 244 }
icyzkungz 0:84f05cd2f197 245
palmdotax 1:45f1573d65a1 246
palmdotax 1:45f1573d65a1 247
icyzkungz 0:84f05cd2f197 248
palmdotax 1:45f1573d65a1 249
icyzkungz 0:84f05cd2f197 250
icyzkungz 0:84f05cd2f197 251
icyzkungz 0:84f05cd2f197 252
icyzkungz 0:84f05cd2f197 253
palmdotax 1:45f1573d65a1 254 void CmdCheck(int16_t id,uint8_t *command,uint8_t ins)
palmdotax 1:45f1573d65a1 255 {
palmdotax 1:45f1573d65a1 256 PC.printf("cmdcheck\n");
palmdotax 1:45f1573d65a1 257 if(id==MY_ID) {
palmdotax 1:45f1573d65a1 258 switch (ins) {
palmdotax 1:45f1573d65a1 259 case PING: {
palmdotax 1:45f1573d65a1 260 break;
palmdotax 1:45f1573d65a1 261 }
palmdotax 1:45f1573d65a1 262 case WRITE_DATA: {
palmdotax 1:45f1573d65a1 263 switch (command[0]) {
palmdotax 1:45f1573d65a1 264 case ID: {
palmdotax 1:45f1573d65a1 265 ///
palmdotax 1:45f1573d65a1 266 MY_ID = (int16_t)command[1];
palmdotax 1:45f1573d65a1 267 break;
palmdotax 1:45f1573d65a1 268 }
palmdotax 1:45f1573d65a1 269 case SET_VELOCITY_LEFT: {
palmdotax 1:45f1573d65a1 270 //
palmdotax 4:de5a65c17664 271 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 272 float Int,flo;
palmdotax 1:45f1573d65a1 273 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 274 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 275 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 276 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 277 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 278 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 279 VL=Int+(flo/10000);
palmdotax 1:45f1573d65a1 280 PC.printf("VL=%f /n",VL);
palmdotax 1:45f1573d65a1 281 break;
palmdotax 1:45f1573d65a1 282 }
palmdotax 1:45f1573d65a1 283 case SET_VELOCITY_RIGHT: {
palmdotax 1:45f1573d65a1 284 //
palmdotax 4:de5a65c17664 285 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 286 float Int,flo;
palmdotax 1:45f1573d65a1 287 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 288 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 289 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 290 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 291 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 292 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 293 VR=Int+flo;
palmdotax 4:de5a65c17664 294 PC.printf("VL=%f /n",VR);
palmdotax 1:45f1573d65a1 295 break;
palmdotax 1:45f1573d65a1 296 }
palmdotax 1:45f1573d65a1 297 case SET_VELOCITY_MAX_LEFT: {
palmdotax 1:45f1573d65a1 298 //
palmdotax 4:de5a65c17664 299 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 300 float Int,flo;
palmdotax 1:45f1573d65a1 301 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 302 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 303 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 304 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 305 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 306 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 307 VLmax=Int+flo;
palmdotax 4:de5a65c17664 308 PC.printf("VL=%f /n",VLmax);
palmdotax 1:45f1573d65a1 309 break;
palmdotax 1:45f1573d65a1 310 }
palmdotax 1:45f1573d65a1 311 case SET_VELOCITY_MAX_RIGHT: {
palmdotax 1:45f1573d65a1 312 //
palmdotax 4:de5a65c17664 313 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 314 float Int,flo;
palmdotax 1:45f1573d65a1 315 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 316 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 317 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 318 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 319 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 320 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 321 VRmax=Int+flo;
palmdotax 1:45f1573d65a1 322 PC.printf("VRmax = %f",VRmax);
palmdotax 4:de5a65c17664 323 // PC.printf("*****************************");
palmdotax 1:45f1573d65a1 324 break;
palmdotax 1:45f1573d65a1 325 }
palmdotax 2:f873deba2305 326 //save to rom
palmdotax 1:45f1573d65a1 327 case SET_KP_LEFT: {
palmdotax 4:de5a65c17664 328 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 329 float Int,flo;
palmdotax 1:45f1573d65a1 330 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 331 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 332 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 333 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 334 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 335 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 336
palmdotax 4:de5a65c17664 337 KP_LEFT=Int+flo;
palmdotax 4:de5a65c17664 338 PC.printf("KP_LEFT=%f /n",KP_LEFT);
palmdotax 2:f873deba2305 339 int32_t data_buff;
palmdotax 2:f873deba2305 340 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 341 memory.write(ADDRESS_LEFT_KP,data_buff);
palmdotax 2:f873deba2305 342 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 343 break;
palmdotax 1:45f1573d65a1 344 }
palmdotax 1:45f1573d65a1 345 case SET_KI_LEFT: {
palmdotax 4:de5a65c17664 346 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 347 float Int,flo;
palmdotax 1:45f1573d65a1 348 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 349 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 350 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 351 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 352 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 353 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 354
palmdotax 4:de5a65c17664 355 KI_LEFT=Int+flo;
palmdotax 4:de5a65c17664 356 PC.printf("KI_LEFT=%f /n",KI_LEFT);
palmdotax 2:f873deba2305 357 int32_t data_buff;
palmdotax 2:f873deba2305 358 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 359 memory.write(ADDRESS_LEFT_KI ,data_buff);
palmdotax 2:f873deba2305 360 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 361 break;
palmdotax 1:45f1573d65a1 362 }
palmdotax 1:45f1573d65a1 363 case SET_KD_LEFT: {
palmdotax 4:de5a65c17664 364 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 365 float Int,flo;
palmdotax 1:45f1573d65a1 366 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 367 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 368 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 369 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 370 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 371 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 5:fe76f3dae81e 372 KD_LEFT=Int+flo;
palmdotax 4:de5a65c17664 373 PC.printf("KD_LEFT=%f /n",KD_LEFT);
palmdotax 2:f873deba2305 374 int32_t data_buff;
palmdotax 2:f873deba2305 375 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 376 memory.write(ADDRESS_LEFT_KD,data_buff);
palmdotax 2:f873deba2305 377 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 378 break;
palmdotax 1:45f1573d65a1 379 }
palmdotax 1:45f1573d65a1 380 case SET_KP_RIGHT: {
palmdotax 4:de5a65c17664 381 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 382 float Int,flo;
palmdotax 1:45f1573d65a1 383 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 384 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 385 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 386 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 387 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 388 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 5:fe76f3dae81e 389 KP_RIGHT=Int+flo;
palmdotax 4:de5a65c17664 390 PC.printf("KP_RIGHT=%f /n",KP_RIGHT);
palmdotax 2:f873deba2305 391 int32_t data_buff;
palmdotax 2:f873deba2305 392 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 393 memory.write(ADDRESS_RIGHT_KP,data_buff);
palmdotax 2:f873deba2305 394 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 395 break;
palmdotax 1:45f1573d65a1 396 }
palmdotax 1:45f1573d65a1 397 case SET_KI_RIGHT: {
palmdotax 4:de5a65c17664 398 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 399 float Int,flo;
palmdotax 1:45f1573d65a1 400 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 401 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 402 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 403 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 404 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 405 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 5:fe76f3dae81e 406 KI_RIGHT=Int+flo;
palmdotax 4:de5a65c17664 407 PC.printf("KI_RIGHT=%f /n",KI_RIGHT);
palmdotax 2:f873deba2305 408 int32_t data_buff;
palmdotax 2:f873deba2305 409 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 410 memory.write(ADDRESS_RIGHT_KI,data_buff);
palmdotax 2:f873deba2305 411 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 412 break;
palmdotax 1:45f1573d65a1 413 }
palmdotax 1:45f1573d65a1 414 case SET_KD_RIGHT: {
palmdotax 4:de5a65c17664 415 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 416 float Int,flo;
palmdotax 1:45f1573d65a1 417 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 418 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 419 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 420 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 421 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 422 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 5:fe76f3dae81e 423 KD_RIGHT=Int+flo;
palmdotax 4:de5a65c17664 424 PC.printf("KD_RIGHT=%f /n",KD_RIGHT);
palmdotax 2:f873deba2305 425 int32_t data_buff;
palmdotax 2:f873deba2305 426 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
palmdotax 2:f873deba2305 427 memory.write(ADDRESS_RIGHT_KD,data_buff);
palmdotax 2:f873deba2305 428 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 429 break;
palmdotax 1:45f1573d65a1 430 }
palmdotax 1:45f1573d65a1 431 }
palmdotax 1:45f1573d65a1 432 } break;
palmdotax 5:fe76f3dae81e 433 case READ_DATA: { PC.printf("READ_DATA\n");
palmdotax 1:45f1573d65a1 434 switch (command[0]) {
palmdotax 1:45f1573d65a1 435 case GET_LIDAR: {
palmdotax 5:fe76f3dae81e 436 /* int i=0,j=1,k=0;
palmdotax 5:fe76f3dae81e 437 uint8_t intData[2]={0x00,0x01},floatData[2];
palmdotax 4:de5a65c17664 438 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 439 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 440 package.robotId = MY_ID;
palmdotax 5:fe76f3dae81e 441 package.length = 4;//122
palmdotax 4:de5a65c17664 442 package.instructionErrorId = WRITE_DATA;
palmdotax 5:fe76f3dae81e 443 PC.printf("GETDATA\n");
palmdotax 4:de5a65c17664 444 while(k<60)
palmdotax 5:fe76f3dae81e 445 { PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 446 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 447 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 448 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 449 i=i+2;
palmdotax 4:de5a65c17664 450 j=j+2;
palmdotax 4:de5a65c17664 451 k++;
palmdotax 4:de5a65c17664 452
palmdotax 4:de5a65c17664 453 }
palmdotax 5:fe76f3dae81e 454 // PC.printf("SEND\n");
palmdotax 5:fe76f3dae81e 455 //rs485_dirc1=1;
palmdotax 4:de5a65c17664 456 wait_us(RS485_DELAY);
palmdotax 5:fe76f3dae81e 457 PC.printf("SEND2\n");
palmdotax 4:de5a65c17664 458 com1->sendCommunicatePacket(&package);
palmdotax 5:fe76f3dae81e 459 PC.printf("SEND3\n");
palmdotax 4:de5a65c17664 460
palmdotax 4:de5a65c17664 461
palmdotax 4:de5a65c17664 462
palmdotax 4:de5a65c17664 463
palmdotax 5:fe76f3dae81e 464 */
palmdotax 5:fe76f3dae81e 465 com.sendlidar();
palmdotax 5:fe76f3dae81e 466 PC.printf("SEND2\n");
palmdotax 4:de5a65c17664 467 break;
palmdotax 4:de5a65c17664 468 }
palmdotax 4:de5a65c17664 469 case GET_LIDAR2: {
palmdotax 4:de5a65c17664 470 int i=0,j=1,k=60;
palmdotax 4:de5a65c17664 471 uint8_t intData[2],floatData[2];
palmdotax 4:de5a65c17664 472 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 473 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 474 package.robotId = MY_ID;
palmdotax 4:de5a65c17664 475 package.length = 122;
palmdotax 4:de5a65c17664 476 package.instructionErrorId = WRITE_DATA;
palmdotax 4:de5a65c17664 477
palmdotax 4:de5a65c17664 478 while(k<120)
palmdotax 5:fe76f3dae81e 479 {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 480 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 481 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 482 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 483 i=i+2;
palmdotax 4:de5a65c17664 484 j=j+2;
palmdotax 4:de5a65c17664 485 k++;
palmdotax 4:de5a65c17664 486
palmdotax 4:de5a65c17664 487 }
palmdotax 4:de5a65c17664 488 rs485_dirc1=1;
palmdotax 4:de5a65c17664 489 wait_us(RS485_DELAY);
palmdotax 4:de5a65c17664 490 com1->sendCommunicatePacket(&package);
palmdotax 3:edaab92dbd2f 491
palmdotax 1:45f1573d65a1 492 break;
palmdotax 1:45f1573d65a1 493 }
palmdotax 4:de5a65c17664 494 case GET_LIDAR3: {
palmdotax 4:de5a65c17664 495 int i=0,j=1,k=120;
palmdotax 4:de5a65c17664 496 uint8_t intData[2],floatData[2];
palmdotax 4:de5a65c17664 497 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 498 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 499 package.robotId = MY_ID;
palmdotax 4:de5a65c17664 500 package.length = 122;
palmdotax 4:de5a65c17664 501 package.instructionErrorId = WRITE_DATA;
palmdotax 4:de5a65c17664 502 while(k<180)
palmdotax 5:fe76f3dae81e 503 {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 504 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 505 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 506 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 507 i=i+2;
palmdotax 4:de5a65c17664 508 j=j+2;
palmdotax 4:de5a65c17664 509 k++;
palmdotax 4:de5a65c17664 510 }
palmdotax 4:de5a65c17664 511 rs485_dirc1=1;
palmdotax 4:de5a65c17664 512 wait_us(RS485_DELAY);
palmdotax 4:de5a65c17664 513 com1->sendCommunicatePacket(&package);
palmdotax 4:de5a65c17664 514
palmdotax 4:de5a65c17664 515 break;
palmdotax 4:de5a65c17664 516 }
palmdotax 4:de5a65c17664 517 case GET_LIDAR4: {
palmdotax 4:de5a65c17664 518 int i=0,j=1,k=180;
palmdotax 4:de5a65c17664 519 uint8_t intData[2],floatData[2];
palmdotax 4:de5a65c17664 520 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 521 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 522 package.robotId = MY_ID;
palmdotax 4:de5a65c17664 523 package.length = 122;
palmdotax 4:de5a65c17664 524 package.instructionErrorId = WRITE_DATA;
palmdotax 4:de5a65c17664 525 while(k<240)
palmdotax 5:fe76f3dae81e 526 {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 527 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 528 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 529 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 530 i=i+2;
palmdotax 4:de5a65c17664 531 j=j+2;
palmdotax 4:de5a65c17664 532 k++;
palmdotax 4:de5a65c17664 533 }
palmdotax 4:de5a65c17664 534 rs485_dirc1=1;
palmdotax 4:de5a65c17664 535 wait_us(RS485_DELAY);
palmdotax 4:de5a65c17664 536 com1->sendCommunicatePacket(&package);
palmdotax 4:de5a65c17664 537
palmdotax 4:de5a65c17664 538 break;
palmdotax 4:de5a65c17664 539 }
palmdotax 4:de5a65c17664 540 case GET_LIDAR5: {
palmdotax 4:de5a65c17664 541 int i=0,j=1,k=240;
palmdotax 4:de5a65c17664 542 uint8_t intData[2],floatData[2];
palmdotax 4:de5a65c17664 543 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 544 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 545 package.robotId = MY_ID;
palmdotax 4:de5a65c17664 546 package.length = 122;
palmdotax 4:de5a65c17664 547 package.instructionErrorId = WRITE_DATA;
palmdotax 4:de5a65c17664 548 while(k<300)
palmdotax 5:fe76f3dae81e 549 {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 550 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 551 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 552 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 553 i=i+2;
palmdotax 4:de5a65c17664 554 j=j+2;
palmdotax 4:de5a65c17664 555 k++;
palmdotax 4:de5a65c17664 556 }
palmdotax 5:fe76f3dae81e 557
palmdotax 4:de5a65c17664 558 rs485_dirc1=1;
palmdotax 4:de5a65c17664 559 wait_us(RS485_DELAY);
palmdotax 4:de5a65c17664 560 com1->sendCommunicatePacket(&package);
palmdotax 4:de5a65c17664 561
palmdotax 4:de5a65c17664 562 break;
palmdotax 4:de5a65c17664 563 }
palmdotax 4:de5a65c17664 564 case GET_LIDAR6: {
palmdotax 4:de5a65c17664 565 int i=0,j=1,k=300;
palmdotax 4:de5a65c17664 566 uint8_t intData[2],floatData[2];
palmdotax 4:de5a65c17664 567 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 568 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 569 package.robotId = MY_ID;
palmdotax 4:de5a65c17664 570 package.length = 122;
palmdotax 4:de5a65c17664 571 package.instructionErrorId = WRITE_DATA;
palmdotax 4:de5a65c17664 572 while(k<360)
palmdotax 5:fe76f3dae81e 573 {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
palmdotax 4:de5a65c17664 574 com.FloatSep( lidar.Data[k],intData,floatData);
palmdotax 4:de5a65c17664 575 package.parameter[i]=intData[0];
palmdotax 4:de5a65c17664 576 package.parameter[j]=intData[1];
palmdotax 4:de5a65c17664 577 i=i+2;
palmdotax 4:de5a65c17664 578 j=j+2;
palmdotax 4:de5a65c17664 579 k++;
palmdotax 4:de5a65c17664 580 }
palmdotax 4:de5a65c17664 581 rs485_dirc1=1;
palmdotax 4:de5a65c17664 582 wait_us(RS485_DELAY);
palmdotax 4:de5a65c17664 583 com1->sendCommunicatePacket(&package);
palmdotax 4:de5a65c17664 584
palmdotax 4:de5a65c17664 585 break;
palmdotax 4:de5a65c17664 586 }
palmdotax 4:de5a65c17664 587
palmdotax 1:45f1573d65a1 588 case GET_BATTERY: {
palmdotax 1:45f1573d65a1 589
palmdotax 1:45f1573d65a1 590 break;
palmdotax 1:45f1573d65a1 591 }
palmdotax 1:45f1573d65a1 592 case GET_VELOCITY_LEFT: {
palmdotax 1:45f1573d65a1 593 uint8_t intVelo_L[2],floatVelo_L[2];
palmdotax 1:45f1573d65a1 594 com.FloatSep(valocity1,intVelo_L,floatVelo_L);
palmdotax 1:45f1573d65a1 595 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 596
palmdotax 1:45f1573d65a1 597 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 598 package.length = 6;
palmdotax 1:45f1573d65a1 599 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 600 package.parameter[0]=intVelo_L[0];
palmdotax 1:45f1573d65a1 601 package.parameter[1]=intVelo_L[1];
palmdotax 1:45f1573d65a1 602 package.parameter[2]=floatVelo_L[0];
palmdotax 1:45f1573d65a1 603 package.parameter[3]=floatVelo_L[1];
palmdotax 1:45f1573d65a1 604
palmdotax 1:45f1573d65a1 605 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 606 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 607 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 608
palmdotax 1:45f1573d65a1 609
palmdotax 1:45f1573d65a1 610 break;
palmdotax 1:45f1573d65a1 611 }
palmdotax 1:45f1573d65a1 612 case GET_VELOCITY_RIGHT : {
palmdotax 1:45f1573d65a1 613 uint8_t intVelo_R[2],floatVelo_R[2];
palmdotax 1:45f1573d65a1 614 com.FloatSep(valocity2,intVelo_R,floatVelo_R);
palmdotax 1:45f1573d65a1 615
palmdotax 1:45f1573d65a1 616
palmdotax 1:45f1573d65a1 617 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 618
palmdotax 1:45f1573d65a1 619 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 620 package.length = 6;
palmdotax 1:45f1573d65a1 621 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 622 package.parameter[0]=intVelo_R[0];
palmdotax 1:45f1573d65a1 623 package.parameter[1]=intVelo_R[1];
palmdotax 1:45f1573d65a1 624 package.parameter[2]=floatVelo_R[0];
palmdotax 1:45f1573d65a1 625 package.parameter[3]=floatVelo_R[1];
palmdotax 1:45f1573d65a1 626
palmdotax 1:45f1573d65a1 627 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 628 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 629 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 630
palmdotax 1:45f1573d65a1 631 break;
palmdotax 1:45f1573d65a1 632 }
palmdotax 1:45f1573d65a1 633 case GET_KP_LEFT: {
palmdotax 2:f873deba2305 634 memory.read(ADDRESS_LEFT_KP ,KP_LEFT_BUFF);
palmdotax 1:45f1573d65a1 635 uint8_t intKPL[2],floatKPL[2];
palmdotax 2:f873deba2305 636 com.FloatSep(KP_LEFT_BUFF,intKPL,floatKPL);
palmdotax 1:45f1573d65a1 637
palmdotax 1:45f1573d65a1 638
palmdotax 1:45f1573d65a1 639 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 640
palmdotax 1:45f1573d65a1 641 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 642 package.length = 6;
palmdotax 1:45f1573d65a1 643 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 644 package.parameter[0]=intKPL[0];
palmdotax 1:45f1573d65a1 645 package.parameter[1]=intKPL[1];
palmdotax 1:45f1573d65a1 646 package.parameter[2]=floatKPL[0];
palmdotax 1:45f1573d65a1 647 package.parameter[3]=floatKPL[1];
palmdotax 1:45f1573d65a1 648
palmdotax 1:45f1573d65a1 649 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 650 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 651 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 652
palmdotax 1:45f1573d65a1 653 break;
palmdotax 1:45f1573d65a1 654 }
palmdotax 1:45f1573d65a1 655 case GET_KI_LEFT: {
palmdotax 2:f873deba2305 656 memory.read(ADDRESS_LEFT_KP ,KI_LEFT_BUFF);
palmdotax 1:45f1573d65a1 657 uint8_t intKIL[2],floatKIL[2];
palmdotax 2:f873deba2305 658 com.FloatSep(KI_LEFT_BUFF,intKIL,floatKIL);
palmdotax 1:45f1573d65a1 659
palmdotax 1:45f1573d65a1 660
palmdotax 1:45f1573d65a1 661 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 662
palmdotax 1:45f1573d65a1 663 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 664 package.length = 6;
palmdotax 1:45f1573d65a1 665 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 666 package.parameter[0]=intKIL[0];
palmdotax 1:45f1573d65a1 667 package.parameter[1]=intKIL[1];
palmdotax 1:45f1573d65a1 668 package.parameter[2]=floatKIL[0];
palmdotax 1:45f1573d65a1 669 package.parameter[3]=floatKIL[1];
palmdotax 1:45f1573d65a1 670
palmdotax 1:45f1573d65a1 671 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 672 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 673 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 674
palmdotax 1:45f1573d65a1 675 break;
palmdotax 1:45f1573d65a1 676 }
palmdotax 1:45f1573d65a1 677 case GET_KD_LEFT: {
palmdotax 2:f873deba2305 678 memory.read(ADDRESS_LEFT_KP ,KD_LEFT_BUFF);
palmdotax 1:45f1573d65a1 679 uint8_t intKDL[2],floatKDL[2];
palmdotax 2:f873deba2305 680 com.FloatSep(KD_LEFT_BUFF,intKDL,floatKDL);
palmdotax 1:45f1573d65a1 681
palmdotax 1:45f1573d65a1 682
palmdotax 1:45f1573d65a1 683 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 684
palmdotax 1:45f1573d65a1 685 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 686 package.length = 6;
palmdotax 1:45f1573d65a1 687 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 688 package.parameter[0]=intKDL[0];
palmdotax 1:45f1573d65a1 689 package.parameter[1]=intKDL[1];
palmdotax 1:45f1573d65a1 690 package.parameter[2]=floatKDL[0];
palmdotax 1:45f1573d65a1 691 package.parameter[3]=floatKDL[1];
palmdotax 1:45f1573d65a1 692
palmdotax 1:45f1573d65a1 693 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 694 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 695 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 696
palmdotax 1:45f1573d65a1 697 break;
palmdotax 1:45f1573d65a1 698 }
palmdotax 1:45f1573d65a1 699 case GET_KP_RIGHT: {
palmdotax 2:f873deba2305 700 memory.read(ADDRESS_LEFT_KP ,KP_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 701 uint8_t intKDR[2],floatKDR[2];
palmdotax 2:f873deba2305 702 com.FloatSep(KP_RIGHT_BUFF,intKDR,floatKDR);
palmdotax 1:45f1573d65a1 703
palmdotax 1:45f1573d65a1 704
palmdotax 1:45f1573d65a1 705 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 706
palmdotax 1:45f1573d65a1 707 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 708 package.length = 6;
palmdotax 1:45f1573d65a1 709 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 710 package.parameter[0]=intKDR[0];
palmdotax 1:45f1573d65a1 711 package.parameter[1]=intKDR[1];
palmdotax 1:45f1573d65a1 712 package.parameter[2]=floatKDR[0];
palmdotax 1:45f1573d65a1 713 package.parameter[3]=floatKDR[1];
palmdotax 1:45f1573d65a1 714
palmdotax 1:45f1573d65a1 715 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 716 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 717 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 718
palmdotax 1:45f1573d65a1 719 break;
palmdotax 1:45f1573d65a1 720 }
palmdotax 1:45f1573d65a1 721 case GET_KI_RIGHT: {
palmdotax 2:f873deba2305 722 memory.read(ADDRESS_LEFT_KP ,KI_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 723 uint8_t intKIR[2],floatKIR[2];
palmdotax 2:f873deba2305 724 com.FloatSep(KI_RIGHT_BUFF,intKIR,floatKIR);
palmdotax 1:45f1573d65a1 725
palmdotax 1:45f1573d65a1 726
palmdotax 1:45f1573d65a1 727 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 728
palmdotax 1:45f1573d65a1 729 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 730 package.length = 6;
palmdotax 1:45f1573d65a1 731 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 732 package.parameter[0]=intKIR[0];
palmdotax 1:45f1573d65a1 733 package.parameter[1]=intKIR[1];
palmdotax 1:45f1573d65a1 734 package.parameter[2]=floatKIR[0];
palmdotax 1:45f1573d65a1 735 package.parameter[3]=floatKIR[1];
palmdotax 1:45f1573d65a1 736
palmdotax 1:45f1573d65a1 737 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 738 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 739 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 740
palmdotax 1:45f1573d65a1 741 break;
palmdotax 1:45f1573d65a1 742 }
palmdotax 1:45f1573d65a1 743 case GET_KD_RIGHT: {
palmdotax 2:f873deba2305 744 memory.read(ADDRESS_LEFT_KP ,KD_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 745 uint8_t intKDR[2],floatKDR[2];
palmdotax 2:f873deba2305 746 com.FloatSep(KD_RIGHT_BUFF,intKDR,floatKDR);
palmdotax 1:45f1573d65a1 747
palmdotax 1:45f1573d65a1 748
palmdotax 1:45f1573d65a1 749 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 750
palmdotax 1:45f1573d65a1 751 package.robotId = MY_ID;
palmdotax 1:45f1573d65a1 752 package.length = 6;
palmdotax 1:45f1573d65a1 753 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 754 package.parameter[0]=intKDR[0];
palmdotax 1:45f1573d65a1 755 package.parameter[1]=intKDR[1];
palmdotax 1:45f1573d65a1 756 package.parameter[2]=floatKDR[0];
palmdotax 1:45f1573d65a1 757 package.parameter[3]=floatKDR[1];
palmdotax 1:45f1573d65a1 758
palmdotax 1:45f1573d65a1 759 rs485_dirc1=1;
palmdotax 1:45f1573d65a1 760 wait_us(RS485_DELAY);
palmdotax 1:45f1573d65a1 761 com1->sendCommunicatePacket(&package);
palmdotax 1:45f1573d65a1 762
palmdotax 1:45f1573d65a1 763 break;
palmdotax 1:45f1573d65a1 764 }
palmdotax 1:45f1573d65a1 765 }
palmdotax 1:45f1573d65a1 766 }break;
palmdotax 1:45f1573d65a1 767
palmdotax 1:45f1573d65a1 768 }
palmdotax 1:45f1573d65a1 769 }
palmdotax 1:45f1573d65a1 770 }