before test

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

Fork of clean_V1 by Betago

Committer:
icyzkungz
Date:
Tue Jun 07 16:17:34 2016 +0000
Revision:
7:0dac9d4ff04f
Parent:
5:fe76f3dae81e
before test

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
icyzkungz 7:0dac9d4ff04f 38 int timer_now=0,timer_later=0;
icyzkungz 7:0dac9d4ff04f 39 int times=0,timer_buffer=0;
icyzkungz 7:0dac9d4ff04f 40
icyzkungz 7:0dac9d4ff04f 41 //encoder
icyzkungz 7:0dac9d4ff04f 42 int Encoderpos = 0;
icyzkungz 7:0dac9d4ff04f 43 int real_d=0;
icyzkungz 7:0dac9d4ff04f 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
icyzkungz 7:0dac9d4ff04f 64 void CmdCheck(int16_t id,uint8_t *command,uint8_t ins);
icyzkungz 7:0dac9d4ff04f 65 void RC();
palmdotax 1:45f1573d65a1 66
palmdotax 2:f873deba2305 67 //rplidar
icyzkungz 7:0dac9d4ff04f 68 //float distances = 0;
icyzkungz 7:0dac9d4ff04f 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;
icyzkungz 7:0dac9d4ff04f 85
palmdotax 1:45f1573d65a1 86 }
palmdotax 1:45f1573d65a1 87 void EncoderA_1()//ซ้าย
icyzkungz 7:0dac9d4ff04f 88 {
icyzkungz 7:0dac9d4ff04f 89 if(encoderB_1==0) {
icyzkungz 7:0dac9d4ff04f 90 Encoderpos = Encoderpos + 1;
icyzkungz 7:0dac9d4ff04f 91 } else {
icyzkungz 7:0dac9d4ff04f 92 Encoderpos = Encoderpos -1;
icyzkungz 7:0dac9d4ff04f 93 }
icyzkungz 7:0dac9d4ff04f 94 pulse_1+=1;
icyzkungz 7:0dac9d4ff04f 95 //Encoderpos = Encoderpos + 1;
icyzkungz 7:0dac9d4ff04f 96 //valocity+=1;
icyzkungz 7:0dac9d4ff04f 97 //pc.printf("%d \n",Encoderpos);
icyzkungz 7:0dac9d4ff04f 98 //pc.printf("pulse=%f \n",pulse);
icyzkungz 7:0dac9d4ff04f 99 //if(pulse==128)
icyzkungz 7:0dac9d4ff04f 100 //{count+=1;pulse=0; pc.printf("count=%f \n",count);}
palmdotax 1:45f1573d65a1 101 }
icyzkungz 7:0dac9d4ff04f 102 void EncoderA_2()//ขวา
icyzkungz 7:0dac9d4ff04f 103 {
icyzkungz 7:0dac9d4ff04f 104 if(encoderB_2==0) {
icyzkungz 7:0dac9d4ff04f 105 Encoderpos = Encoderpos + 1;
icyzkungz 7:0dac9d4ff04f 106 } else {
icyzkungz 7:0dac9d4ff04f 107 Encoderpos = Encoderpos -1;
icyzkungz 7:0dac9d4ff04f 108 }
palmdotax 1:45f1573d65a1 109 pulse_2+=1;
palmdotax 1:45f1573d65a1 110 //pc.printf("%d",Encoderpos);
palmdotax 1:45f1573d65a1 111 }
palmdotax 1:45f1573d65a1 112 void EncoderA_D()
icyzkungz 7:0dac9d4ff04f 113 {
icyzkungz 7:0dac9d4ff04f 114 if(encoderB_d==0) {
icyzkungz 7:0dac9d4ff04f 115 Encoderpos = Encoderpos + 1;
icyzkungz 7:0dac9d4ff04f 116 } else {
icyzkungz 7:0dac9d4ff04f 117 Encoderpos = Encoderpos -1;
icyzkungz 7:0dac9d4ff04f 118 }
palmdotax 1:45f1573d65a1 119 pulse_d+=1;
icyzkungz 7:0dac9d4ff04f 120 if(pulse_d==128) {
palmdotax 1:45f1573d65a1 121 Z_d+=1;
palmdotax 1:45f1573d65a1 122 pulse_d=0;
palmdotax 1:45f1573d65a1 123 }
icyzkungz 7:0dac9d4ff04f 124
palmdotax 1:45f1573d65a1 125 }
palmdotax 1:45f1573d65a1 126 void getvelo1()//จาก encoder
palmdotax 1:45f1573d65a1 127 {
palmdotax 1:45f1573d65a1 128 valocity1=pulse_1*((2*3.14*r)/128);
palmdotax 2:f873deba2305 129 PC.printf("valocity=%f \n",valocity1);
palmdotax 1:45f1573d65a1 130 count=0;
palmdotax 1:45f1573d65a1 131 timerStart.reset();
palmdotax 1:45f1573d65a1 132 }
palmdotax 1:45f1573d65a1 133 void getvelo2()
palmdotax 1:45f1573d65a1 134 {
palmdotax 1:45f1573d65a1 135 valocity2=pulse_2*((2*3.14*r)/128);
palmdotax 2:f873deba2305 136 PC.printf("valocity=%f \n",valocity2);
palmdotax 1:45f1573d65a1 137 count=0;
palmdotax 1:45f1573d65a1 138 timerStart.reset();
palmdotax 1:45f1573d65a1 139 }
palmdotax 1:45f1573d65a1 140 void get_d()//ระยะทาง
palmdotax 1:45f1573d65a1 141 {
palmdotax 1:45f1573d65a1 142 real_d=Z_d*(2*3.14*r);
palmdotax 1:45f1573d65a1 143 //ส่งข้อมูล
icyzkungz 7:0dac9d4ff04f 144
palmdotax 1:45f1573d65a1 145 }
palmdotax 2:f873deba2305 146 void get_rplidar()
palmdotax 2:f873deba2305 147 {
icyzkungz 7:0dac9d4ff04f 148 if (IS_OK(lidar.waitPoint())) {
icyzkungz 7:0dac9d4ff04f 149
icyzkungz 7:0dac9d4ff04f 150 } else {
icyzkungz 7:0dac9d4ff04f 151
icyzkungz 7:0dac9d4ff04f 152 lidar.startScan();
icyzkungz 7:0dac9d4ff04f 153
palmdotax 2:f873deba2305 154 }
icyzkungz 7:0dac9d4ff04f 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;
icyzkungz 7:0dac9d4ff04f 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);
icyzkungz 7:0dac9d4ff04f 166 times=timerStart.read();
icyzkungz 7:0dac9d4ff04f 167 if(times==1) { // m/s
icyzkungz 7:0dac9d4ff04f 168 getvelo1();
icyzkungz 7:0dac9d4ff04f 169 //pc.printf("TIME \n");
icyzkungz 7:0dac9d4ff04f 170 times=0;
icyzkungz 7:0dac9d4ff04f 171 pulse_1=0;
icyzkungz 7:0dac9d4ff04f 172 }
palmdotax 1:45f1573d65a1 173 P1.setProcessValue(valocity1);
palmdotax 1:45f1573d65a1 174 outPID=P1.compute();
icyzkungz 7:0dac9d4ff04f 175 //pc.printf("outPID=%f \n",outPID);
icyzkungz 7:0dac9d4ff04f 176 m1.movespeed_1(setp1,outPID);
palmdotax 1:45f1573d65a1 177 }
palmdotax 1:45f1573d65a1 178 void PID_m2()//right
palmdotax 1:45f1573d65a1 179 {
palmdotax 1:45f1573d65a1 180 setp2=map(1.0,0.0,1.094,0.0,1.0);
palmdotax 1:45f1573d65a1 181 P2.setSetPoint(setp2);
icyzkungz 7:0dac9d4ff04f 182 times=timerStart.read();
icyzkungz 7:0dac9d4ff04f 183 if(times==1) { // m/s
icyzkungz 7:0dac9d4ff04f 184 getvelo2();
icyzkungz 7:0dac9d4ff04f 185 //pc.printf("TIME \n");
icyzkungz 7:0dac9d4ff04f 186 times=0;
icyzkungz 7:0dac9d4ff04f 187 pulse_2=0;
icyzkungz 7:0dac9d4ff04f 188 }
palmdotax 1:45f1573d65a1 189 P2.setProcessValue(valocity2);
palmdotax 1:45f1573d65a1 190 outPID=P2.compute();
icyzkungz 7:0dac9d4ff04f 191 //pc.printf("outPID=%f \n",outPID);
icyzkungz 7:0dac9d4ff04f 192 m1.movespeed_2(setp2,outPID);
palmdotax 1:45f1573d65a1 193 }
palmdotax 1:45f1573d65a1 194
palmdotax 1:45f1573d65a1 195
palmdotax 2:f873deba2305 196 void RC()
palmdotax 1:45f1573d65a1 197 {
palmdotax 1:45f1573d65a1 198 myled =1;
palmdotax 1:45f1573d65a1 199 uint8_t data_array[30];
palmdotax 1:45f1573d65a1 200 uint8_t id=0;
palmdotax 1:45f1573d65a1 201 uint8_t ins=0;
palmdotax 1:45f1573d65a1 202 uint8_t status=0xFF;
palmdotax 1:45f1573d65a1 203
palmdotax 1:45f1573d65a1 204
palmdotax 1:45f1573d65a1 205
palmdotax 1:45f1573d65a1 206 status = com.ReceiveCommand(&id,data_array,&ins);
palmdotax 1:45f1573d65a1 207 PC.printf("status = 0x%02x\n\r",status);
palmdotax 1:45f1573d65a1 208 if(status == ANDANTE_ERRBIT_NONE) {
palmdotax 1:45f1573d65a1 209 CmdCheck((int16_t)id,data_array,ins);
palmdotax 5:fe76f3dae81e 210 PC.printf("RC******************************");
palmdotax 1:45f1573d65a1 211 }
palmdotax 1:45f1573d65a1 212
palmdotax 1:45f1573d65a1 213 }
palmdotax 1:45f1573d65a1 214 /*******************************************************/
palmdotax 5:fe76f3dae81e 215 int buf=0;
icyzkungz 7:0dac9d4ff04f 216 float lidar_angle_max=360,lidar_angle_min=0;
icyzkungz 0:84f05cd2f197 217 int main()
icyzkungz 0:84f05cd2f197 218 {
palmdotax 1:45f1573d65a1 219 PC.baud(115200);
palmdotax 5:fe76f3dae81e 220 lidar.begin(se_lidar);
palmdotax 5:fe76f3dae81e 221 tim.start();
palmdotax 5:fe76f3dae81e 222 //com1 = new COMMUNICATION(PA_9,PA_10,115200);
icyzkungz 7:0dac9d4ff04f 223 encoderA_1.rise(&EncoderA_1);
icyzkungz 7:0dac9d4ff04f 224 timerStart.start();
icyzkungz 7:0dac9d4ff04f 225 P1.setMode(1);
icyzkungz 7:0dac9d4ff04f 226 P1.setBias(0);
icyzkungz 7:0dac9d4ff04f 227 // pc.printf("READY \n");
palmdotax 2:f873deba2305 228 //pc.attach(&Rx_interrupt, Serial::RxIrq);
icyzkungz 7:0dac9d4ff04f 229 lidar.setAngle(lidar_angle_min,lidar_angle_max);
palmdotax 1:45f1573d65a1 230 while(1) {
palmdotax 1:45f1573d65a1 231
palmdotax 5:fe76f3dae81e 232 VMO=1;
palmdotax 5:fe76f3dae81e 233 get_rplidar();
icyzkungz 7:0dac9d4ff04f 234 /* if(tim.read_ms()-buf>=1000){
icyzkungz 7:0dac9d4ff04f 235 for(int x=0;x<=359;x++){
icyzkungz 7:0dac9d4ff04f 236 printf("%d,",lidar.Data[x]);
icyzkungz 7:0dac9d4ff04f 237 }
icyzkungz 7:0dac9d4ff04f 238 buf = tim.read_ms();
icyzkungz 7:0dac9d4ff04f 239 }*/
palmdotax 2:f873deba2305 240 RC();
palmdotax 1:45f1573d65a1 241 //wait_ms(1);
icyzkungz 0:84f05cd2f197 242 }
icyzkungz 0:84f05cd2f197 243 }
icyzkungz 0:84f05cd2f197 244
palmdotax 1:45f1573d65a1 245
palmdotax 1:45f1573d65a1 246
icyzkungz 0:84f05cd2f197 247
palmdotax 1:45f1573d65a1 248
icyzkungz 0:84f05cd2f197 249
icyzkungz 0:84f05cd2f197 250
icyzkungz 0:84f05cd2f197 251
icyzkungz 0:84f05cd2f197 252
palmdotax 1:45f1573d65a1 253 void CmdCheck(int16_t id,uint8_t *command,uint8_t ins)
palmdotax 1:45f1573d65a1 254 {
icyzkungz 7:0dac9d4ff04f 255 PC.printf("cmdcheck\n");
icyzkungz 7:0dac9d4ff04f 256 if(id==MY_ID) {
palmdotax 1:45f1573d65a1 257 switch (ins) {
palmdotax 1:45f1573d65a1 258 case PING: {
palmdotax 1:45f1573d65a1 259 break;
palmdotax 1:45f1573d65a1 260 }
palmdotax 1:45f1573d65a1 261 case WRITE_DATA: {
palmdotax 1:45f1573d65a1 262 switch (command[0]) {
icyzkungz 7:0dac9d4ff04f 263 case SET_MAX_LIDAR_DEGREE: {
icyzkungz 7:0dac9d4ff04f 264 uint8_t int_buffer[2],float_buffer[2];
icyzkungz 7:0dac9d4ff04f 265 uint8_t int_buffer2[2],float_buffer2[2];
icyzkungz 7:0dac9d4ff04f 266 float Int,flo;
icyzkungz 7:0dac9d4ff04f 267 int_buffer[0]=command[1];
icyzkungz 7:0dac9d4ff04f 268 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 269 float_buffer[0]=command[3];
icyzkungz 7:0dac9d4ff04f 270 float_buffer[1]=command[4];
icyzkungz 7:0dac9d4ff04f 271 int_buffer2[0]=command[5];
icyzkungz 7:0dac9d4ff04f 272 int_buffer2[1]=command[6];
icyzkungz 7:0dac9d4ff04f 273 float_buffer2[0]=command[7];
icyzkungz 7:0dac9d4ff04f 274 float_buffer2[1]=command[8];
icyzkungz 7:0dac9d4ff04f 275 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 276 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
icyzkungz 7:0dac9d4ff04f 277 lidar_angle_max=Int+(flo/10000);
icyzkungz 7:0dac9d4ff04f 278
icyzkungz 7:0dac9d4ff04f 279 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer2);
icyzkungz 7:0dac9d4ff04f 280 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer2);
icyzkungz 7:0dac9d4ff04f 281 lidar_angle_max=Int+(flo/10000);
icyzkungz 7:0dac9d4ff04f 282 PC.printf("Min,Max Degree of Lidar : %f %f/n",lidar_angle_min,lidar_angle_max);
palmdotax 1:45f1573d65a1 283 break;
palmdotax 1:45f1573d65a1 284 }
icyzkungz 7:0dac9d4ff04f 285
palmdotax 1:45f1573d65a1 286 case SET_VELOCITY_LEFT: {
palmdotax 4:de5a65c17664 287 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 288 float Int,flo;
palmdotax 1:45f1573d65a1 289 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 290 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 291 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 292 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 293 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 294 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 295 VL=Int+(flo/10000);
palmdotax 1:45f1573d65a1 296 PC.printf("VL=%f /n",VL);
palmdotax 1:45f1573d65a1 297 break;
palmdotax 1:45f1573d65a1 298 }
palmdotax 1:45f1573d65a1 299 case SET_VELOCITY_RIGHT: {
palmdotax 1:45f1573d65a1 300 //
palmdotax 4:de5a65c17664 301 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 302 float Int,flo;
palmdotax 1:45f1573d65a1 303 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 304 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 305 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 306 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 307 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 308 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 309 VR=Int+flo;
palmdotax 4:de5a65c17664 310 PC.printf("VL=%f /n",VR);
palmdotax 1:45f1573d65a1 311 break;
palmdotax 1:45f1573d65a1 312 }
palmdotax 1:45f1573d65a1 313 case SET_VELOCITY_MAX_LEFT: {
palmdotax 1:45f1573d65a1 314 //
palmdotax 4:de5a65c17664 315 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 316 float Int,flo;
palmdotax 1:45f1573d65a1 317 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 318 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 319 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 320 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 321 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 322 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 323 VLmax=Int+flo;
palmdotax 4:de5a65c17664 324 PC.printf("VL=%f /n",VLmax);
palmdotax 1:45f1573d65a1 325 break;
palmdotax 1:45f1573d65a1 326 }
palmdotax 1:45f1573d65a1 327 case SET_VELOCITY_MAX_RIGHT: {
palmdotax 1:45f1573d65a1 328 //
palmdotax 4:de5a65c17664 329 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 330 float Int,flo;
palmdotax 1:45f1573d65a1 331 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 332 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 333 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 334 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 335 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 336 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 337 VRmax=Int+flo;
palmdotax 1:45f1573d65a1 338 PC.printf("VRmax = %f",VRmax);
icyzkungz 7:0dac9d4ff04f 339 // PC.printf("*****************************");
palmdotax 1:45f1573d65a1 340 break;
palmdotax 1:45f1573d65a1 341 }
palmdotax 2:f873deba2305 342 //save to rom
palmdotax 1:45f1573d65a1 343 case SET_KP_LEFT: {
palmdotax 4:de5a65c17664 344 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 345 float Int,flo;
palmdotax 1:45f1573d65a1 346 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 347 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 348 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 349 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 350 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 351 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 352
icyzkungz 7:0dac9d4ff04f 353 KP_LEFT=Int+flo;
icyzkungz 7:0dac9d4ff04f 354 PC.printf("KP_LEFT=%f /n",KP_LEFT);
icyzkungz 7:0dac9d4ff04f 355 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 356 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 357 memory.write(ADDRESS_LEFT_KP,data_buff);
icyzkungz 7:0dac9d4ff04f 358 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 359 break;
palmdotax 1:45f1573d65a1 360 }
palmdotax 1:45f1573d65a1 361 case SET_KI_LEFT: {
icyzkungz 7:0dac9d4ff04f 362 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 363 float Int,flo;
palmdotax 1:45f1573d65a1 364 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 365 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 366 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 367 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 368 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
palmdotax 4:de5a65c17664 369 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
palmdotax 4:de5a65c17664 370
icyzkungz 7:0dac9d4ff04f 371 KI_LEFT=Int+flo;
icyzkungz 7:0dac9d4ff04f 372 PC.printf("KI_LEFT=%f /n",KI_LEFT);
icyzkungz 7:0dac9d4ff04f 373 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 374 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 375 memory.write(ADDRESS_LEFT_KI ,data_buff);
icyzkungz 7:0dac9d4ff04f 376 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 377 break;
palmdotax 1:45f1573d65a1 378 }
palmdotax 1:45f1573d65a1 379 case SET_KD_LEFT: {
palmdotax 4:de5a65c17664 380 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 381 float Int,flo;
palmdotax 1:45f1573d65a1 382 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 383 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 384 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 385 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 386 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 387 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
icyzkungz 7:0dac9d4ff04f 388 KD_LEFT=Int+flo;
icyzkungz 7:0dac9d4ff04f 389 PC.printf("KD_LEFT=%f /n",KD_LEFT);
icyzkungz 7:0dac9d4ff04f 390 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 391 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 392 memory.write(ADDRESS_LEFT_KD,data_buff);
icyzkungz 7:0dac9d4ff04f 393 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 394 break;
palmdotax 1:45f1573d65a1 395 }
palmdotax 1:45f1573d65a1 396 case SET_KP_RIGHT: {
palmdotax 4:de5a65c17664 397 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 398 float Int,flo;
palmdotax 1:45f1573d65a1 399 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 400 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 401 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 402 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 403 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 404 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
icyzkungz 7:0dac9d4ff04f 405 KP_RIGHT=Int+flo;
icyzkungz 7:0dac9d4ff04f 406 PC.printf("KP_RIGHT=%f /n",KP_RIGHT);
icyzkungz 7:0dac9d4ff04f 407 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 408 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 409 memory.write(ADDRESS_RIGHT_KP,data_buff);
icyzkungz 7:0dac9d4ff04f 410 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 411 break;
palmdotax 1:45f1573d65a1 412 }
palmdotax 1:45f1573d65a1 413 case SET_KI_RIGHT: {
icyzkungz 7:0dac9d4ff04f 414 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 415 float Int,flo;
palmdotax 1:45f1573d65a1 416 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 417 int_buffer[1]=command[2];
icyzkungz 7:0dac9d4ff04f 418 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 419 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 420 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 421 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
icyzkungz 7:0dac9d4ff04f 422 KI_RIGHT=Int+flo;
icyzkungz 7:0dac9d4ff04f 423 PC.printf("KI_RIGHT=%f /n",KI_RIGHT);
icyzkungz 7:0dac9d4ff04f 424 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 425 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 426 memory.write(ADDRESS_RIGHT_KI,data_buff);
icyzkungz 7:0dac9d4ff04f 427 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 428 break;
palmdotax 1:45f1573d65a1 429 }
palmdotax 1:45f1573d65a1 430 case SET_KD_RIGHT: {
palmdotax 4:de5a65c17664 431 uint8_t int_buffer[2],float_buffer[2];
palmdotax 4:de5a65c17664 432 float Int,flo;
palmdotax 1:45f1573d65a1 433 int_buffer[0]=command[1];
palmdotax 1:45f1573d65a1 434 int_buffer[1]=command[2];
palmdotax 4:de5a65c17664 435 float_buffer[0]=command[3];
palmdotax 4:de5a65c17664 436 float_buffer[1]=command[4];
palmdotax 1:45f1573d65a1 437 Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer);
icyzkungz 7:0dac9d4ff04f 438 flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer);
icyzkungz 7:0dac9d4ff04f 439 KD_RIGHT=Int+flo;
icyzkungz 7:0dac9d4ff04f 440 PC.printf("KD_RIGHT=%f /n",KD_RIGHT);
icyzkungz 7:0dac9d4ff04f 441 int32_t data_buff;
icyzkungz 7:0dac9d4ff04f 442 data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer);
icyzkungz 7:0dac9d4ff04f 443 memory.write(ADDRESS_RIGHT_KD,data_buff);
icyzkungz 7:0dac9d4ff04f 444 wait_ms(EEPROM_DELAY);
palmdotax 1:45f1573d65a1 445 break;
palmdotax 1:45f1573d65a1 446 }
icyzkungz 7:0dac9d4ff04f 447 }
icyzkungz 7:0dac9d4ff04f 448 }
icyzkungz 7:0dac9d4ff04f 449 break;
icyzkungz 7:0dac9d4ff04f 450 case READ_DATA: {
icyzkungz 7:0dac9d4ff04f 451 PC.printf("READ_DATA\n");
palmdotax 1:45f1573d65a1 452 switch (command[0]) {
icyzkungz 7:0dac9d4ff04f 453 /*case GET_LIDAR1: {
icyzkungz 7:0dac9d4ff04f 454 uint8_t IntArray[2],FloatArray[2];
icyzkungz 7:0dac9d4ff04f 455 int numberK=0;
icyzkungz 7:0dac9d4ff04f 456 ANDANTE_PROTOCOL_PACKET package;
icyzkungz 7:0dac9d4ff04f 457
icyzkungz 7:0dac9d4ff04f 458 package.robotId = ID;
icyzkungz 7:0dac9d4ff04f 459 package.length = 362;
palmdotax 4:de5a65c17664 460 package.instructionErrorId = WRITE_DATA;
icyzkungz 7:0dac9d4ff04f 461
icyzkungz 7:0dac9d4ff04f 462 for(int i=1; i<=360; i++) {
icyzkungz 7:0dac9d4ff04f 463 if(i==2) {
icyzkungz 7:0dac9d4ff04f 464 com.FloatSep(lidar.Data[numberK],IntArray,FloatArray);
icyzkungz 7:0dac9d4ff04f 465 package.parameter[i-1]=IntArray[0];
icyzkungz 7:0dac9d4ff04f 466 package.parameter[i]=IntArray[1];
icyzkungz 7:0dac9d4ff04f 467 numberK++;
icyzkungz 7:0dac9d4ff04f 468 }
palmdotax 4:de5a65c17664 469 }
icyzkungz 7:0dac9d4ff04f 470 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 471 com1->sendCommunicatePacket(&package);
palmdotax 4:de5a65c17664 472 break;
icyzkungz 7:0dac9d4ff04f 473 }*/
icyzkungz 7:0dac9d4ff04f 474 case GET_LIDAR2: {
palmdotax 4:de5a65c17664 475 int i=0,j=1,k=60;
icyzkungz 7:0dac9d4ff04f 476 uint8_t intData[2],floatData[2];
icyzkungz 7:0dac9d4ff04f 477 ANDANTE_PROTOCOL_PACKET package;
palmdotax 4:de5a65c17664 478 //BUFFER_SIZE=143
palmdotax 4:de5a65c17664 479 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 480 package.length = 122;
palmdotax 4:de5a65c17664 481 package.instructionErrorId = WRITE_DATA;
icyzkungz 7:0dac9d4ff04f 482
icyzkungz 7:0dac9d4ff04f 483 while(k<120) {
icyzkungz 7:0dac9d4ff04f 484 //PC.printf("i= %d,j= %d,k = %d\n",i,j,k);
icyzkungz 7:0dac9d4ff04f 485 com.FloatSep( lidar.Data[k],intData,floatData);
icyzkungz 7:0dac9d4ff04f 486 package.parameter[i]=intData[0];
icyzkungz 7:0dac9d4ff04f 487 package.parameter[j]=intData[1];
icyzkungz 7:0dac9d4ff04f 488 i=i+2;
icyzkungz 7:0dac9d4ff04f 489 j=j+2;
icyzkungz 7:0dac9d4ff04f 490 k++;
icyzkungz 7:0dac9d4ff04f 491
palmdotax 4:de5a65c17664 492 }
icyzkungz 7:0dac9d4ff04f 493 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 494 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 495 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 496
icyzkungz 7:0dac9d4ff04f 497 break;
icyzkungz 7:0dac9d4ff04f 498 }
palmdotax 1:45f1573d65a1 499 case GET_BATTERY: {
icyzkungz 7:0dac9d4ff04f 500
palmdotax 1:45f1573d65a1 501 break;
icyzkungz 7:0dac9d4ff04f 502 }
palmdotax 1:45f1573d65a1 503 case GET_VELOCITY_LEFT: {
palmdotax 1:45f1573d65a1 504 uint8_t intVelo_L[2],floatVelo_L[2];
palmdotax 1:45f1573d65a1 505 com.FloatSep(valocity1,intVelo_L,floatVelo_L);
icyzkungz 7:0dac9d4ff04f 506 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 507
palmdotax 1:45f1573d65a1 508 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 509 package.length = 6;
palmdotax 1:45f1573d65a1 510 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 511 package.parameter[0]=intVelo_L[0];
palmdotax 1:45f1573d65a1 512 package.parameter[1]=intVelo_L[1];
icyzkungz 7:0dac9d4ff04f 513 package.parameter[2]=floatVelo_L[0];
palmdotax 1:45f1573d65a1 514 package.parameter[3]=floatVelo_L[1];
palmdotax 1:45f1573d65a1 515
icyzkungz 7:0dac9d4ff04f 516 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 517 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 518 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 519
icyzkungz 7:0dac9d4ff04f 520
palmdotax 1:45f1573d65a1 521 break;
icyzkungz 7:0dac9d4ff04f 522 }
palmdotax 1:45f1573d65a1 523 case GET_VELOCITY_RIGHT : {
palmdotax 1:45f1573d65a1 524 uint8_t intVelo_R[2],floatVelo_R[2];
palmdotax 1:45f1573d65a1 525 com.FloatSep(valocity2,intVelo_R,floatVelo_R);
icyzkungz 7:0dac9d4ff04f 526
icyzkungz 7:0dac9d4ff04f 527
icyzkungz 7:0dac9d4ff04f 528 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 529
palmdotax 1:45f1573d65a1 530 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 531 package.length = 6;
palmdotax 1:45f1573d65a1 532 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 533 package.parameter[0]=intVelo_R[0];
palmdotax 1:45f1573d65a1 534 package.parameter[1]=intVelo_R[1];
icyzkungz 7:0dac9d4ff04f 535 package.parameter[2]=floatVelo_R[0];
palmdotax 1:45f1573d65a1 536 package.parameter[3]=floatVelo_R[1];
palmdotax 1:45f1573d65a1 537
icyzkungz 7:0dac9d4ff04f 538 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 539 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 540 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 541
palmdotax 1:45f1573d65a1 542 break;
icyzkungz 7:0dac9d4ff04f 543 }
palmdotax 1:45f1573d65a1 544 case GET_KP_LEFT: {
icyzkungz 7:0dac9d4ff04f 545 memory.read(ADDRESS_LEFT_KP ,KP_LEFT);
icyzkungz 7:0dac9d4ff04f 546 memory.read(ADDRESS_LEFT_KP ,KI_LEFT);
icyzkungz 7:0dac9d4ff04f 547 memory.read(ADDRESS_LEFT_KP ,KD_LEFT);
icyzkungz 7:0dac9d4ff04f 548
icyzkungz 7:0dac9d4ff04f 549 com.sendKpKiKdLeft(KP_LEFT,KI_LEFT,KD_LEFT);
palmdotax 1:45f1573d65a1 550
icyzkungz 7:0dac9d4ff04f 551 /*uint8_t IntKp[2],FloatKp[2];
icyzkungz 7:0dac9d4ff04f 552 uint8_t IntKi[2],FloatKi[2];
icyzkungz 7:0dac9d4ff04f 553 uint8_t IntKd[2],FloatKd[2];
icyzkungz 7:0dac9d4ff04f 554
icyzkungz 7:0dac9d4ff04f 555 com.FloatSep(KP_LEFT_BUFF,IntKp,FloatKp);
icyzkungz 7:0dac9d4ff04f 556 com.FloatSep(KI_LEFT_BUFF,IntKi,FloatKi);
icyzkungz 7:0dac9d4ff04f 557 com.FloatSep(KD_LEFT_BUFF,IntKd,FloatKd);
icyzkungz 7:0dac9d4ff04f 558
palmdotax 1:45f1573d65a1 559
icyzkungz 7:0dac9d4ff04f 560 ANDANTE_PROTOCOL_PACKET package;
icyzkungz 7:0dac9d4ff04f 561
icyzkungz 7:0dac9d4ff04f 562 package.robotId = ID;
icyzkungz 7:0dac9d4ff04f 563 package.length = 14;
palmdotax 1:45f1573d65a1 564 package.instructionErrorId = WRITE_DATA;
icyzkungz 7:0dac9d4ff04f 565 package.parameter[0]=IntKp[0];
icyzkungz 7:0dac9d4ff04f 566 package.parameter[1]=IntKp[1];
icyzkungz 7:0dac9d4ff04f 567 package.parameter[2]=FloatKp[0];
icyzkungz 7:0dac9d4ff04f 568 package.parameter[3]=FloatKp[1];
icyzkungz 7:0dac9d4ff04f 569 package.parameter[4]=IntKi[0];
icyzkungz 7:0dac9d4ff04f 570 package.parameter[5]=IntKi[1];
icyzkungz 7:0dac9d4ff04f 571 package.parameter[6]=FloatKi[0];
icyzkungz 7:0dac9d4ff04f 572 package.parameter[7]=FloatKi[1];
icyzkungz 7:0dac9d4ff04f 573 package.parameter[8]=IntKd[0];
icyzkungz 7:0dac9d4ff04f 574 package.parameter[9]=IntKd[1];
icyzkungz 7:0dac9d4ff04f 575 package.parameter[10]=FloatKd[0];
icyzkungz 7:0dac9d4ff04f 576 package.parameter[11]=FloatKd[1];
palmdotax 1:45f1573d65a1 577
palmdotax 1:45f1573d65a1 578
icyzkungz 7:0dac9d4ff04f 579 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 580 com1->sendCommunicatePacket(&package);*/
palmdotax 1:45f1573d65a1 581 break;
icyzkungz 7:0dac9d4ff04f 582 }
palmdotax 1:45f1573d65a1 583 case GET_KI_LEFT: {
palmdotax 2:f873deba2305 584 memory.read(ADDRESS_LEFT_KP ,KI_LEFT_BUFF);
palmdotax 1:45f1573d65a1 585 uint8_t intKIL[2],floatKIL[2];
palmdotax 2:f873deba2305 586 com.FloatSep(KI_LEFT_BUFF,intKIL,floatKIL);
icyzkungz 7:0dac9d4ff04f 587
icyzkungz 7:0dac9d4ff04f 588
icyzkungz 7:0dac9d4ff04f 589 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 590
palmdotax 1:45f1573d65a1 591 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 592 package.length = 6;
palmdotax 1:45f1573d65a1 593 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 594 package.parameter[0]=intKIL[0];
palmdotax 1:45f1573d65a1 595 package.parameter[1]=intKIL[1];
icyzkungz 7:0dac9d4ff04f 596 package.parameter[2]=floatKIL[0];
palmdotax 1:45f1573d65a1 597 package.parameter[3]=floatKIL[1];
palmdotax 1:45f1573d65a1 598
icyzkungz 7:0dac9d4ff04f 599 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 600 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 601 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 602
palmdotax 1:45f1573d65a1 603 break;
icyzkungz 7:0dac9d4ff04f 604 }
palmdotax 1:45f1573d65a1 605 case GET_KD_LEFT: {
palmdotax 2:f873deba2305 606 memory.read(ADDRESS_LEFT_KP ,KD_LEFT_BUFF);
palmdotax 1:45f1573d65a1 607 uint8_t intKDL[2],floatKDL[2];
palmdotax 2:f873deba2305 608 com.FloatSep(KD_LEFT_BUFF,intKDL,floatKDL);
icyzkungz 7:0dac9d4ff04f 609
icyzkungz 7:0dac9d4ff04f 610
icyzkungz 7:0dac9d4ff04f 611 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 612
palmdotax 1:45f1573d65a1 613 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 614 package.length = 6;
palmdotax 1:45f1573d65a1 615 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 616 package.parameter[0]=intKDL[0];
palmdotax 1:45f1573d65a1 617 package.parameter[1]=intKDL[1];
icyzkungz 7:0dac9d4ff04f 618 package.parameter[2]=floatKDL[0];
palmdotax 1:45f1573d65a1 619 package.parameter[3]=floatKDL[1];
palmdotax 1:45f1573d65a1 620
icyzkungz 7:0dac9d4ff04f 621 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 622 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 623 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 624
palmdotax 1:45f1573d65a1 625 break;
icyzkungz 7:0dac9d4ff04f 626 }
palmdotax 1:45f1573d65a1 627 case GET_KP_RIGHT: {
palmdotax 2:f873deba2305 628 memory.read(ADDRESS_LEFT_KP ,KP_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 629 uint8_t intKDR[2],floatKDR[2];
palmdotax 2:f873deba2305 630 com.FloatSep(KP_RIGHT_BUFF,intKDR,floatKDR);
icyzkungz 7:0dac9d4ff04f 631
icyzkungz 7:0dac9d4ff04f 632
icyzkungz 7:0dac9d4ff04f 633 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 634
palmdotax 1:45f1573d65a1 635 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 636 package.length = 6;
palmdotax 1:45f1573d65a1 637 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 638 package.parameter[0]=intKDR[0];
palmdotax 1:45f1573d65a1 639 package.parameter[1]=intKDR[1];
icyzkungz 7:0dac9d4ff04f 640 package.parameter[2]=floatKDR[0];
palmdotax 1:45f1573d65a1 641 package.parameter[3]=floatKDR[1];
palmdotax 1:45f1573d65a1 642
icyzkungz 7:0dac9d4ff04f 643 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 644 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 645 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 646
palmdotax 1:45f1573d65a1 647 break;
icyzkungz 7:0dac9d4ff04f 648 }
palmdotax 1:45f1573d65a1 649 case GET_KI_RIGHT: {
palmdotax 2:f873deba2305 650 memory.read(ADDRESS_LEFT_KP ,KI_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 651 uint8_t intKIR[2],floatKIR[2];
palmdotax 2:f873deba2305 652 com.FloatSep(KI_RIGHT_BUFF,intKIR,floatKIR);
icyzkungz 7:0dac9d4ff04f 653
icyzkungz 7:0dac9d4ff04f 654
icyzkungz 7:0dac9d4ff04f 655 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 656
palmdotax 1:45f1573d65a1 657 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 658 package.length = 6;
palmdotax 1:45f1573d65a1 659 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 660 package.parameter[0]=intKIR[0];
palmdotax 1:45f1573d65a1 661 package.parameter[1]=intKIR[1];
icyzkungz 7:0dac9d4ff04f 662 package.parameter[2]=floatKIR[0];
palmdotax 1:45f1573d65a1 663 package.parameter[3]=floatKIR[1];
palmdotax 1:45f1573d65a1 664
icyzkungz 7:0dac9d4ff04f 665 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 666 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 667 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 668
palmdotax 1:45f1573d65a1 669 break;
icyzkungz 7:0dac9d4ff04f 670 }
palmdotax 1:45f1573d65a1 671 case GET_KD_RIGHT: {
palmdotax 2:f873deba2305 672 memory.read(ADDRESS_LEFT_KP ,KD_RIGHT_BUFF);
palmdotax 1:45f1573d65a1 673 uint8_t intKDR[2],floatKDR[2];
palmdotax 2:f873deba2305 674 com.FloatSep(KD_RIGHT_BUFF,intKDR,floatKDR);
icyzkungz 7:0dac9d4ff04f 675
icyzkungz 7:0dac9d4ff04f 676
icyzkungz 7:0dac9d4ff04f 677 ANDANTE_PROTOCOL_PACKET package;
palmdotax 1:45f1573d65a1 678
palmdotax 1:45f1573d65a1 679 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 680 package.length = 6;
palmdotax 1:45f1573d65a1 681 package.instructionErrorId = WRITE_DATA;
palmdotax 1:45f1573d65a1 682 package.parameter[0]=intKDR[0];
palmdotax 1:45f1573d65a1 683 package.parameter[1]=intKDR[1];
icyzkungz 7:0dac9d4ff04f 684 package.parameter[2]=floatKDR[0];
palmdotax 1:45f1573d65a1 685 package.parameter[3]=floatKDR[1];
palmdotax 1:45f1573d65a1 686
icyzkungz 7:0dac9d4ff04f 687 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 688 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 689 com1->sendCommunicatePacket(&package);
icyzkungz 7:0dac9d4ff04f 690
palmdotax 1:45f1573d65a1 691 break;
icyzkungz 7:0dac9d4ff04f 692 }
icyzkungz 7:0dac9d4ff04f 693 case GET_MAX_LIDAR_DEGREE: {
icyzkungz 7:0dac9d4ff04f 694 com.sendMaxMinLidarDegree(lidar_angle_max,lidar_angle_min);
icyzkungz 7:0dac9d4ff04f 695 /*uint8_t intMax[2],floatMax[2];
icyzkungz 7:0dac9d4ff04f 696 uint8_t intMin[2],floatMin[2];
icyzkungz 7:0dac9d4ff04f 697 com.FloatSep(lidar_angle_max,intMax,floatMax);
icyzkungz 7:0dac9d4ff04f 698 com.FloatSep(lidar_angle_min,intMin,floatMin);
icyzkungz 7:0dac9d4ff04f 699 ANDANTE_PROTOCOL_PACKET package;
icyzkungz 7:0dac9d4ff04f 700
icyzkungz 7:0dac9d4ff04f 701 package.robotId = MY_ID;
icyzkungz 7:0dac9d4ff04f 702 package.length = 10;
icyzkungz 7:0dac9d4ff04f 703 package.instructionErrorId = WRITE_DATA;
icyzkungz 7:0dac9d4ff04f 704 package.parameter[0]=intMax[0];
icyzkungz 7:0dac9d4ff04f 705 package.parameter[1]=intMax[1];
icyzkungz 7:0dac9d4ff04f 706 package.parameter[2]=floatMax[0];
icyzkungz 7:0dac9d4ff04f 707 package.parameter[3]=floatMax[1];
icyzkungz 7:0dac9d4ff04f 708 package.parameter[4]=intMin[0];
icyzkungz 7:0dac9d4ff04f 709 package.parameter[5]=intMin[1];
icyzkungz 7:0dac9d4ff04f 710 package.parameter[6]=floatMin[0];
icyzkungz 7:0dac9d4ff04f 711 package.parameter[7]=floatMin[1];
icyzkungz 7:0dac9d4ff04f 712
icyzkungz 7:0dac9d4ff04f 713 ////rs485_dirc1=1;
icyzkungz 7:0dac9d4ff04f 714 wait_us(RS485_DELAY);
icyzkungz 7:0dac9d4ff04f 715 com1->sendCommunicatePacket(&package);*/
icyzkungz 7:0dac9d4ff04f 716 }
icyzkungz 7:0dac9d4ff04f 717 case GET_LIDAR1: {
icyzkungz 7:0dac9d4ff04f 718 com.sendSensorDataAll1(lidar.Data);
icyzkungz 7:0dac9d4ff04f 719 }
icyzkungz 7:0dac9d4ff04f 720 }
icyzkungz 7:0dac9d4ff04f 721 }
icyzkungz 7:0dac9d4ff04f 722 break;
icyzkungz 7:0dac9d4ff04f 723
icyzkungz 7:0dac9d4ff04f 724 }
palmdotax 1:45f1573d65a1 725 }
palmdotax 1:45f1573d65a1 726 }