สัสชิน

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

Fork of clean_V2 by Betago

Committer:
icyzkungz
Date:
Wed Jun 08 17:19:21 2016 +0000
Revision:
8:fc70c78a443b
Parent:
7:ffd6959444ae
??????

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