publish

Dependencies:   ESC Motordriver PS_PAD Ping hadah mbed

Fork of Ultimate_Hybrid_LF by KRAI 2016

Committer:
rizqicahyo
Date:
Sat Feb 10 04:24:23 2018 +0000
Revision:
7:59a513681663
Parent:
5:256f6eac0358
publish;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rizqicahyo 0:edddd373a163 1 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 2 /** FILE HEADER **/
rizqicahyo 0:edddd373a163 3 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 4 #include "mbed.h"
rizqicahyo 7:59a513681663 5 #include "motordriver.h"
rizqicahyo 0:edddd373a163 6 #include "PS_PAD.h"
rizqicahyo 0:edddd373a163 7 #include "esc.h"
rizqicahyo 0:edddd373a163 8 #include "Servo.h"
rizqicahyo 4:7a7a8aa33fd5 9 #include "Ping.h"
rizqicahyo 0:edddd373a163 10
rizqicahyo 0:edddd373a163 11 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 12 /** DEKLARASI INPUT OUTPUT **/
rizqicahyo 0:edddd373a163 13 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 14 //serial
rizqicahyo 7:59a513681663 15 Serial pc(USBTX,USBRX); //debug
rizqicahyo 7:59a513681663 16 Serial com1(PA_0,PA_1); //sensor depan
rizqicahyo 7:59a513681663 17 Serial com2(PC_6, PC_7); //sensor belakang
rizqicahyo 0:edddd373a163 18
rizqicahyo 0:edddd373a163 19 //joystick PS2
rizqicahyo 0:edddd373a163 20 PS_PAD ps2(PB_15,PB_14,PB_13, PC_4); //(mosi, miso, sck, ss)
rizqicahyo 0:edddd373a163 21
rizqicahyo 0:edddd373a163 22 //motor (PWM, forward, reverse)
rizqicahyo 7:59a513681663 23 Motor motor3(PA_8, PB_0, PC_15, 1); //motor1
rizqicahyo 7:59a513681663 24 Motor motor1(PA_11, PA_6, PA_5, 1); //motor2
rizqicahyo 7:59a513681663 25 Motor motor4(PA_9, PC_2, PC_3, 1); //motor_slider
rizqicahyo 7:59a513681663 26 Motor motor2(PA_10, PB_5, PB_4, 1); //motor_griper
rizqicahyo 7:59a513681663 27 Motor motorC1(PB_7, PA_14, PA_15 , 1); //motor4
rizqicahyo 7:59a513681663 28 Motor motorC2(PB_9, PA_12, PC_5, 1); //motor6
rizqicahyo 7:59a513681663 29 Motor motorS(PB_8, PA_13, PB_1, 1); //motor5
rizqicahyo 3:43d4cb3ece1b 30 //Motor motor4(PB_6, PA_7, PB_12);
Najib_irvani 1:fc1535231c0d 31
rizqicahyo 7:59a513681663 32 //pnuematik
rizqicahyo 0:edddd373a163 33 DigitalOut pnuematik1(PC_11);
rizqicahyo 0:edddd373a163 34 DigitalOut pnuematik2(PC_10);
rizqicahyo 0:edddd373a163 35 DigitalOut pnuematik3(PD_2);
rizqicahyo 0:edddd373a163 36 DigitalOut pnuematik4(PC_12);
rizqicahyo 0:edddd373a163 37
rizqicahyo 0:edddd373a163 38 //Limit Switch
rizqicahyo 0:edddd373a163 39 DigitalIn limit1(PC_13 ,PullUp);
rizqicahyo 0:edddd373a163 40 DigitalIn limit2(PC_14 ,PullUp);
rizqicahyo 0:edddd373a163 41 DigitalIn limit3(PC_1 ,PullUp);
rizqicahyo 0:edddd373a163 42 DigitalIn limit4(PC_0 ,PullUp);
rizqicahyo 0:edddd373a163 43
rizqicahyo 3:43d4cb3ece1b 44 DigitalIn field(PB_10 ,PullUp);
rizqicahyo 3:43d4cb3ece1b 45
rizqicahyo 3:43d4cb3ece1b 46 //laser pointer
rizqicahyo 7:59a513681663 47 DigitalIn IR(PB_3 ,PullUp);
rizqicahyo 0:edddd373a163 48
rizqicahyo 0:edddd373a163 49 //servo(PWM)
rizqicahyo 0:edddd373a163 50 Servo servoEDF(PC_8);
rizqicahyo 0:edddd373a163 51
rizqicahyo 0:edddd373a163 52 //EDF(PWM, timer)
rizqicahyo 7:59a513681663 53 ESC edf(PC_9,20);
rizqicahyo 0:edddd373a163 54
rizqicahyo 3:43d4cb3ece1b 55 //Timer
rizqicahyo 3:43d4cb3ece1b 56 Ticker timer;
rizqicahyo 7:59a513681663 57 Timer timer_linetracer;
rizqicahyo 2:df6c49846367 58
rizqicahyo 4:7a7a8aa33fd5 59 //Sensor Ping
rizqicahyo 4:7a7a8aa33fd5 60 Ping ping(PB_2);
rizqicahyo 0:edddd373a163 61
rizqicahyo 0:edddd373a163 62 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 63 /** DEKLARASI VARIABEL, PROSEDUR, DAN FUNGSI **/
rizqicahyo 0:edddd373a163 64 /*********************************************************************************************/
rizqicahyo 3:43d4cb3ece1b 65 const float gMax_speed = 0.85;
rizqicahyo 3:43d4cb3ece1b 66 //const float gMin_speed = 0.1;
rizqicahyo 3:43d4cb3ece1b 67 const float v0 = 0.4;
rizqicahyo 7:59a513681663 68 const float ax = 0.0005;
rizqicahyo 7:59a513681663 69 float vcurr_base = v0;
rizqicahyo 7:59a513681663 70 float vcurr_slider = v0;
rizqicahyo 2:df6c49846367 71
rizqicahyo 7:59a513681663 72 const float tuning1 = 0.03;
rizqicahyo 7:59a513681663 73 const float tuning2 = 0.06;
rizqicahyo 7:59a513681663 74 const float tuning3 = 0.03;
rizqicahyo 7:59a513681663 75 const float tuning4 = 0.0 ;
rizqicahyo 2:df6c49846367 76
rizqicahyo 7:59a513681663 77 const float driver1_0 = 1;
rizqicahyo 7:59a513681663 78 const float driver1_1 = 0.91;
rizqicahyo 7:59a513681663 79 const float driver1_2 = 0.78;
rizqicahyo 7:59a513681663 80 const float driver1_3 = 0.55;
rizqicahyo 0:edddd373a163 81
rizqicahyo 0:edddd373a163 82 // inisialisasi pwm awal servo
rizqicahyo 0:edddd373a163 83 double pwm = 0.00;
rizqicahyo 0:edddd373a163 84
rizqicahyo 0:edddd373a163 85 // inisialisasi sudut awal
rizqicahyo 0:edddd373a163 86 double sudut = -85;
rizqicahyo 0:edddd373a163 87
rizqicahyo 7:59a513681663 88 // variabel counting
rizqicahyo 7:59a513681663 89 unsigned long int g = 0;
rizqicahyo 0:edddd373a163 90
rizqicahyo 2:df6c49846367 91 //slider auto
rizqicahyo 2:df6c49846367 92 int c =0;
rizqicahyo 7:59a513681663 93 int batas_delay = 340;
rizqicahyo 7:59a513681663 94 int flag_river;
rizqicahyo 2:df6c49846367 95
rizqicahyo 2:df6c49846367 96 //data sensor garis dan line following
rizqicahyo 7:59a513681663 97 int datasensor1[6];
rizqicahyo 7:59a513681663 98 int datasensor2[6];
rizqicahyo 2:df6c49846367 99 int over;
rizqicahyo 7:59a513681663 100 int g_flag1;
rizqicahyo 7:59a513681663 101 int g_flag2;
rizqicahyo 2:df6c49846367 102
rizqicahyo 4:7a7a8aa33fd5 103
rizqicahyo 3:43d4cb3ece1b 104 void aktuator(int f);
rizqicahyo 0:edddd373a163 105 void edf_servo();
rizqicahyo 4:7a7a8aa33fd5 106
rizqicahyo 2:df6c49846367 107 void init_sensor();
rizqicahyo 3:43d4cb3ece1b 108 void linetracer(float speed);
rizqicahyo 3:43d4cb3ece1b 109 void flag_sensor();
rizqicahyo 7:59a513681663 110 void putar(float speed);
rizqicahyo 2:df6c49846367 111
rizqicahyo 4:7a7a8aa33fd5 112 float read_jarak();
rizqicahyo 4:7a7a8aa33fd5 113
rizqicahyo 0:edddd373a163 114 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 115 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 116 /** PROGRAM UTAMA **/
rizqicahyo 0:edddd373a163 117 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 118 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 119 int main() {
rizqicahyo 0:edddd373a163 120 //inisiasi serial
rizqicahyo 0:edddd373a163 121 pc.baud(115200);
rizqicahyo 7:59a513681663 122 com1.baud(115200);
rizqicahyo 7:59a513681663 123 com2.baud(115200);
rizqicahyo 0:edddd373a163 124
rizqicahyo 3:43d4cb3ece1b 125 if(field == 1) sudut = -85;
rizqicahyo 7:59a513681663 126 else sudut = 85;
rizqicahyo 7:59a513681663 127
rizqicahyo 7:59a513681663 128 //inisisasi flag river
rizqicahyo 7:59a513681663 129 flag_river = 0;
rizqicahyo 3:43d4cb3ece1b 130
rizqicahyo 0:edddd373a163 131 //inisiasi joystick
rizqicahyo 0:edddd373a163 132 ps2.init();
rizqicahyo 0:edddd373a163 133
rizqicahyo 0:edddd373a163 134 //set inisiasi servo pada posisi 0
rizqicahyo 0:edddd373a163 135 servoEDF.position(sudut);
rizqicahyo 0:edddd373a163 136
rizqicahyo 0:edddd373a163 137 //set edf pada posisi bukan kalibrasi, yaitu set edf 0
rizqicahyo 0:edddd373a163 138 edf.setThrottle(0);
rizqicahyo 0:edddd373a163 139 edf.pulse();
rizqicahyo 7:59a513681663 140
rizqicahyo 0:edddd373a163 141 //inisiasi pnuematik
rizqicahyo 0:edddd373a163 142 pnuematik1 = 1;
rizqicahyo 0:edddd373a163 143 pnuematik2 = 1;
rizqicahyo 4:7a7a8aa33fd5 144 pnuematik3 = 1;
rizqicahyo 4:7a7a8aa33fd5 145 pnuematik4 = 1;
rizqicahyo 0:edddd373a163 146
rizqicahyo 0:edddd373a163 147 //inisisasi TIMER
rizqicahyo 7:59a513681663 148 //timer.attach(&flag_sensor,0.0005);
rizqicahyo 7:59a513681663 149 //timer.detach();
rizqicahyo 7:59a513681663 150 timer_linetracer.reset();
rizqicahyo 0:edddd373a163 151
rizqicahyo 0:edddd373a163 152 //kondisi robot
rizqicahyo 2:df6c49846367 153 bool manual=true;
rizqicahyo 3:43d4cb3ece1b 154 bool pool= false;
rizqicahyo 4:7a7a8aa33fd5 155
rizqicahyo 4:7a7a8aa33fd5 156 //running manual
rizqicahyo 0:edddd373a163 157 while(manual){
rizqicahyo 0:edddd373a163 158
rizqicahyo 0:edddd373a163 159 ps2.poll();
rizqicahyo 0:edddd373a163 160
rizqicahyo 3:43d4cb3ece1b 161 aktuator(field);
rizqicahyo 0:edddd373a163 162 edf_servo();
rizqicahyo 0:edddd373a163 163
rizqicahyo 4:7a7a8aa33fd5 164 if(limit4==0) manual = false;
rizqicahyo 0:edddd373a163 165
rizqicahyo 0:edddd373a163 166 }
rizqicahyo 0:edddd373a163 167
rizqicahyo 4:7a7a8aa33fd5 168 //running otomatis
rizqicahyo 3:43d4cb3ece1b 169 timer.attach(&flag_sensor,0.0005);
rizqicahyo 7:59a513681663 170 timer_linetracer.start();
rizqicahyo 7:59a513681663 171 vcurr_base = v0;
rizqicahyo 3:43d4cb3ece1b 172
rizqicahyo 3:43d4cb3ece1b 173 while(!pool){
rizqicahyo 3:43d4cb3ece1b 174 init_sensor();
rizqicahyo 3:43d4cb3ece1b 175
rizqicahyo 7:59a513681663 176 if(vcurr_base > (float)1) vcurr_base = (float) 1;
rizqicahyo 7:59a513681663 177 //else if (vcurr_base < 0.2) vcurr_base = (float) 0.2;
rizqicahyo 7:59a513681663 178
rizqicahyo 7:59a513681663 179 linetracer(vcurr_base);
rizqicahyo 3:43d4cb3ece1b 180
rizqicahyo 7:59a513681663 181
rizqicahyo 7:59a513681663 182 if(timer_linetracer.read_ms() >= 2500){
rizqicahyo 7:59a513681663 183 vcurr_base = 0.4;
rizqicahyo 7:59a513681663 184 }
rizqicahyo 7:59a513681663 185 else{
rizqicahyo 7:59a513681663 186 vcurr_base += 0.002;
rizqicahyo 7:59a513681663 187 }
rizqicahyo 5:256f6eac0358 188
rizqicahyo 5:256f6eac0358 189 for(int i=0; i<6; i++){
rizqicahyo 7:59a513681663 190 printf("%d ",datasensor1[i]);
rizqicahyo 5:256f6eac0358 191 }
rizqicahyo 7:59a513681663 192 for(int i=5; i>=0; i--){
rizqicahyo 7:59a513681663 193 printf("%d ",datasensor2[i]);
rizqicahyo 7:59a513681663 194 }
rizqicahyo 7:59a513681663 195 printf("%d %d %lf \n",g_flag1, g_flag2, read_jarak());
rizqicahyo 5:256f6eac0358 196
rizqicahyo 7:59a513681663 197 if((limit3==0) || (read_jarak() <= (float)5.0)) pool=true;
rizqicahyo 3:43d4cb3ece1b 198 }
rizqicahyo 7:59a513681663 199 putar(0.2);
rizqicahyo 0:edddd373a163 200
rizqicahyo 3:43d4cb3ece1b 201 timer.detach();
rizqicahyo 7:59a513681663 202 timer_linetracer.stop();
rizqicahyo 7:59a513681663 203
rizqicahyo 7:59a513681663 204 motor1.stop(1);
rizqicahyo 7:59a513681663 205 motor2.stop(1);
rizqicahyo 7:59a513681663 206 motor3.stop(1);
rizqicahyo 7:59a513681663 207 motor4.stop(1);
rizqicahyo 7:59a513681663 208
rizqicahyo 7:59a513681663 209 wait_ms(200);
rizqicahyo 0:edddd373a163 210 pnuematik1=0;
rizqicahyo 7:59a513681663 211
rizqicahyo 7:59a513681663 212 wait_ms(1000);
rizqicahyo 4:7a7a8aa33fd5 213
rizqicahyo 0:edddd373a163 214 while(limit4!=0){
rizqicahyo 7:59a513681663 215 motorC1.speed(1);
rizqicahyo 0:edddd373a163 216 motorC2.speed(-1);
rizqicahyo 7:59a513681663 217
rizqicahyo 7:59a513681663 218 /* if(g < 600000){
rizqicahyo 7:59a513681663 219 motor1.speed(-(1-tuning1));
rizqicahyo 7:59a513681663 220 motor2.speed(-(1-tuning2));
rizqicahyo 7:59a513681663 221 motor3.speed(-(1-tuning3));
rizqicahyo 7:59a513681663 222 motor4.speed(-(1-tuning4));
rizqicahyo 7:59a513681663 223
rizqicahyo 7:59a513681663 224 g++;
rizqicahyo 7:59a513681663 225 }
rizqicahyo 7:59a513681663 226 else{
rizqicahyo 7:59a513681663 227 motor1.stop(1);
rizqicahyo 7:59a513681663 228 motor2.stop(1);
rizqicahyo 7:59a513681663 229 motor3.stop(1);
rizqicahyo 7:59a513681663 230 motor4.stop(1);
rizqicahyo 7:59a513681663 231 }*/
rizqicahyo 0:edddd373a163 232 }
rizqicahyo 0:edddd373a163 233
rizqicahyo 7:59a513681663 234 motorC1.stop(1);
rizqicahyo 7:59a513681663 235 motorC2.stop(1);
rizqicahyo 0:edddd373a163 236
rizqicahyo 3:43d4cb3ece1b 237 if(field==1){
rizqicahyo 3:43d4cb3ece1b 238 pnuematik3 = 0;
rizqicahyo 7:59a513681663 239 wait_ms(1300);
rizqicahyo 7:59a513681663 240 pnuematik2 = 0;
rizqicahyo 3:43d4cb3ece1b 241 wait_ms(1500);
rizqicahyo 3:43d4cb3ece1b 242 pnuematik3 = 1;
rizqicahyo 3:43d4cb3ece1b 243 }
rizqicahyo 3:43d4cb3ece1b 244 else{
rizqicahyo 3:43d4cb3ece1b 245 pnuematik4 = 0;
rizqicahyo 7:59a513681663 246 wait_ms(1300);
rizqicahyo 7:59a513681663 247 pnuematik2 = 0;
rizqicahyo 3:43d4cb3ece1b 248 wait_ms(1500);
rizqicahyo 3:43d4cb3ece1b 249 pnuematik4 = 1;
rizqicahyo 3:43d4cb3ece1b 250 }
rizqicahyo 0:edddd373a163 251
rizqicahyo 0:edddd373a163 252 return 0;
rizqicahyo 0:edddd373a163 253 }
rizqicahyo 0:edddd373a163 254
rizqicahyo 0:edddd373a163 255 /*********************************************************************************************/
rizqicahyo 0:edddd373a163 256 /** ALGORITMA PROSEDUR DAN FUNGSI **/
rizqicahyo 0:edddd373a163 257 /*********************************************************************************************/
rizqicahyo 3:43d4cb3ece1b 258 void aktuator(int f){
rizqicahyo 7:59a513681663 259 float speed = vcurr_base;
rizqicahyo 2:df6c49846367 260
rizqicahyo 7:59a513681663 261 if(vcurr_base >= gMax_speed) vcurr_base = gMax_speed;
rizqicahyo 7:59a513681663 262 if(vcurr_slider >= 1) vcurr_slider = 1;
Najib_irvani 1:fc1535231c0d 263
rizqicahyo 3:43d4cb3ece1b 264 if(f == 1){
rizqicahyo 0:edddd373a163 265 if((ps2.read(PS_PAD::PAD_L1)==1) && (ps2.read(PS_PAD::PAD_R1)==0)){
rizqicahyo 0:edddd373a163 266 //pivot kiri
rizqicahyo 3:43d4cb3ece1b 267 motor2.speed((float)0.5*(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 268 motor4.speed((float)-0.5*(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 269 motor1.speed((float)0.5*(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 270 motor3.speed((float)-0.5*(speed-tuning3));
rizqicahyo 0:edddd373a163 271 pc.printf("pivot kiri \n");
rizqicahyo 0:edddd373a163 272
rizqicahyo 7:59a513681663 273 vcurr_base += ax;
rizqicahyo 0:edddd373a163 274 }
rizqicahyo 0:edddd373a163 275 else if((ps2.read(PS_PAD::PAD_R1)==1) && (ps2.read(PS_PAD::PAD_L1)==0)){
rizqicahyo 0:edddd373a163 276 //pivot kanan
rizqicahyo 3:43d4cb3ece1b 277 motor2.speed((float)-0.5*(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 278 motor4.speed((float)0.5*(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 279 motor1.speed((float)-0.5*(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 280 motor3.speed((float)0.5*(speed-tuning3));
rizqicahyo 0:edddd373a163 281 pc.printf("pivot kanan \n");
rizqicahyo 0:edddd373a163 282
rizqicahyo 7:59a513681663 283 vcurr_base += ax;
rizqicahyo 0:edddd373a163 284 }
rizqicahyo 0:edddd373a163 285 else if((ps2.read(PS_PAD::PAD_RIGHT)==1) && (ps2.read(PS_PAD::PAD_TOP)==1)){
rizqicahyo 0:edddd373a163 286 //serong atas kanan
Najib_irvani 1:fc1535231c0d 287 motor2.speed(speed-tuning2);
rizqicahyo 7:59a513681663 288 motor4.stop(1);
rizqicahyo 7:59a513681663 289 motor1.stop(1);
Najib_irvani 1:fc1535231c0d 290 motor3.speed(speed-tuning3);
rizqicahyo 0:edddd373a163 291 pc.printf("serong atas kanan \n");
rizqicahyo 0:edddd373a163 292
rizqicahyo 7:59a513681663 293 vcurr_base += ax;
rizqicahyo 0:edddd373a163 294 }
rizqicahyo 0:edddd373a163 295 else if((ps2.read(PS_PAD::PAD_TOP)==1) && (ps2.read(PS_PAD::PAD_LEFT)==1)){
rizqicahyo 0:edddd373a163 296 //serong atas kiri
rizqicahyo 7:59a513681663 297 motor2.stop(1);
Najib_irvani 1:fc1535231c0d 298 motor4.speed(-(speed-tuning4));
Najib_irvani 1:fc1535231c0d 299 motor1.speed(-(speed-tuning1));
rizqicahyo 7:59a513681663 300 motor3.stop(1);
rizqicahyo 0:edddd373a163 301 pc.printf("serong atas kiri \n");
rizqicahyo 0:edddd373a163 302
rizqicahyo 7:59a513681663 303 vcurr_base += ax;
rizqicahyo 0:edddd373a163 304 }
rizqicahyo 0:edddd373a163 305 else if((ps2.read(PS_PAD::PAD_LEFT)==1) && (ps2.read(PS_PAD::PAD_BOTTOM)==1)){
rizqicahyo 0:edddd373a163 306 //serong bawah kiri
Najib_irvani 1:fc1535231c0d 307 motor2.speed(-(speed-tuning2));
rizqicahyo 7:59a513681663 308 motor4.stop(1);
rizqicahyo 7:59a513681663 309 motor1.stop(1);
Najib_irvani 1:fc1535231c0d 310 motor3.speed(-(speed-tuning3));
rizqicahyo 0:edddd373a163 311 pc.printf("serong bawah kiri \n");
rizqicahyo 0:edddd373a163 312
rizqicahyo 7:59a513681663 313 vcurr_base += ax;
rizqicahyo 0:edddd373a163 314 }
rizqicahyo 0:edddd373a163 315 else if((ps2.read(PS_PAD::PAD_BOTTOM)==1) && (ps2.read(PS_PAD::PAD_RIGHT)==1)){
rizqicahyo 0:edddd373a163 316 //serong bawah kanan
rizqicahyo 7:59a513681663 317 motor2.stop(1);
Najib_irvani 1:fc1535231c0d 318 motor4.speed(speed-tuning4);
Najib_irvani 1:fc1535231c0d 319 motor1.speed(speed-tuning1);
rizqicahyo 7:59a513681663 320 motor3.stop(1);
rizqicahyo 0:edddd373a163 321 pc.printf("serong bawah kanan \n");
rizqicahyo 0:edddd373a163 322
rizqicahyo 7:59a513681663 323 vcurr_base += ax;
rizqicahyo 0:edddd373a163 324 }
rizqicahyo 0:edddd373a163 325 else if((ps2.read(PS_PAD::PAD_TOP)==1) && (ps2.read(PS_PAD::PAD_BOTTOM)==0)){
rizqicahyo 0:edddd373a163 326 //maju
Najib_irvani 1:fc1535231c0d 327 motor1.speed(-(speed-tuning1));
Najib_irvani 1:fc1535231c0d 328 motor3.speed(speed-tuning3);
Najib_irvani 1:fc1535231c0d 329 motor2.speed(speed-tuning2);
Najib_irvani 1:fc1535231c0d 330 motor4.speed(-(speed-tuning4));
rizqicahyo 0:edddd373a163 331 pc.printf("maju \n");
rizqicahyo 0:edddd373a163 332
rizqicahyo 7:59a513681663 333 vcurr_base += ax;
rizqicahyo 0:edddd373a163 334 }
rizqicahyo 0:edddd373a163 335 else if((ps2.read(PS_PAD::PAD_BOTTOM)==1) && (ps2.read(PS_PAD::PAD_TOP)==0)){
rizqicahyo 0:edddd373a163 336 //mundur
Najib_irvani 1:fc1535231c0d 337 motor1.speed(speed-tuning1);
Najib_irvani 1:fc1535231c0d 338 motor3.speed(-(speed-tuning3));
Najib_irvani 1:fc1535231c0d 339 motor2.speed(-(speed-tuning2));
Najib_irvani 1:fc1535231c0d 340 motor4.speed(speed-tuning4);
rizqicahyo 0:edddd373a163 341 pc.printf("mundur \n");
rizqicahyo 0:edddd373a163 342
rizqicahyo 7:59a513681663 343 vcurr_base += ax;
rizqicahyo 0:edddd373a163 344 }
rizqicahyo 0:edddd373a163 345 else if((ps2.read(PS_PAD::PAD_RIGHT)==1) && (ps2.read(PS_PAD::PAD_LEFT)==0)){
rizqicahyo 0:edddd373a163 346 //kanan
Najib_irvani 1:fc1535231c0d 347 motor2.speed(speed-tuning2);
Najib_irvani 1:fc1535231c0d 348 motor4.speed(speed-tuning4);
Najib_irvani 1:fc1535231c0d 349 motor1.speed(speed-tuning1);
Najib_irvani 1:fc1535231c0d 350 motor3.speed(speed-tuning3);
rizqicahyo 0:edddd373a163 351 pc.printf("kanan \n");
rizqicahyo 0:edddd373a163 352
rizqicahyo 7:59a513681663 353 vcurr_base += ax;
rizqicahyo 0:edddd373a163 354 }
rizqicahyo 0:edddd373a163 355 else if((ps2.read(PS_PAD::PAD_RIGHT)==0) && (ps2.read(PS_PAD::PAD_LEFT)==1)){
rizqicahyo 0:edddd373a163 356 //kiri
Najib_irvani 1:fc1535231c0d 357 motor2.speed(-(speed-tuning2));
Najib_irvani 1:fc1535231c0d 358 motor4.speed(-(speed-tuning4));
Najib_irvani 1:fc1535231c0d 359 motor1.speed(-(speed-tuning1));
Najib_irvani 1:fc1535231c0d 360 motor3.speed(-(speed-tuning3));
rizqicahyo 0:edddd373a163 361 pc.printf("kiri \n");
rizqicahyo 0:edddd373a163 362
rizqicahyo 7:59a513681663 363 vcurr_base += ax;
rizqicahyo 0:edddd373a163 364 }
rizqicahyo 0:edddd373a163 365 else{
rizqicahyo 7:59a513681663 366 motor1.stop(1);
rizqicahyo 7:59a513681663 367 motor3.stop(1);
rizqicahyo 7:59a513681663 368 motor2.stop(1);
rizqicahyo 7:59a513681663 369 motor4.stop(1);
rizqicahyo 0:edddd373a163 370 pc.printf("diam \n");
rizqicahyo 0:edddd373a163 371
rizqicahyo 7:59a513681663 372 vcurr_base = v0;
rizqicahyo 0:edddd373a163 373 }
rizqicahyo 3:43d4cb3ece1b 374 }
rizqicahyo 3:43d4cb3ece1b 375 else{
rizqicahyo 3:43d4cb3ece1b 376 if((ps2.read(PS_PAD::PAD_L1)==1) && (ps2.read(PS_PAD::PAD_R1)==0)){
rizqicahyo 3:43d4cb3ece1b 377 //pivot kiri
rizqicahyo 3:43d4cb3ece1b 378 motor2.speed((float)0.5*(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 379 motor4.speed((float)-0.5*(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 380 motor1.speed((float)0.5*(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 381 motor3.speed((float)-0.5*(speed-tuning3));
rizqicahyo 3:43d4cb3ece1b 382 pc.printf("pivot kiri \n");
rizqicahyo 3:43d4cb3ece1b 383
rizqicahyo 7:59a513681663 384 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 385 }
rizqicahyo 3:43d4cb3ece1b 386 else if((ps2.read(PS_PAD::PAD_R1)==1) && (ps2.read(PS_PAD::PAD_L1)==0)){
rizqicahyo 3:43d4cb3ece1b 387 //pivot kanan
rizqicahyo 3:43d4cb3ece1b 388 motor2.speed((float)-0.5*(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 389 motor4.speed((float)0.5*(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 390 motor1.speed((float)-0.5*(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 391 motor3.speed((float)0.5*(speed-tuning3));
rizqicahyo 3:43d4cb3ece1b 392 pc.printf("pivot kanan \n");
rizqicahyo 2:df6c49846367 393
rizqicahyo 7:59a513681663 394 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 395 }
rizqicahyo 3:43d4cb3ece1b 396 else if((ps2.read(PS_PAD::PAD_RIGHT)==1) && (ps2.read(PS_PAD::PAD_TOP)==1)){
rizqicahyo 3:43d4cb3ece1b 397 //serong atas kanan
rizqicahyo 3:43d4cb3ece1b 398 motor2.speed(-(speed-tuning2));
rizqicahyo 7:59a513681663 399 motor4.stop(1);
rizqicahyo 7:59a513681663 400 motor1.stop(1);
rizqicahyo 3:43d4cb3ece1b 401 motor3.speed(-(speed-tuning3));
rizqicahyo 3:43d4cb3ece1b 402 pc.printf("serong atas kanan \n");
rizqicahyo 2:df6c49846367 403
rizqicahyo 7:59a513681663 404 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 405 }
rizqicahyo 3:43d4cb3ece1b 406 else if((ps2.read(PS_PAD::PAD_TOP)==1) && (ps2.read(PS_PAD::PAD_LEFT)==1)){
rizqicahyo 3:43d4cb3ece1b 407 //serong atas kiri
rizqicahyo 7:59a513681663 408 motor2.stop(1);
rizqicahyo 3:43d4cb3ece1b 409 motor4.speed(speed-tuning4);
rizqicahyo 3:43d4cb3ece1b 410 motor1.speed(speed-tuning1);
rizqicahyo 7:59a513681663 411 motor3.stop(1);
rizqicahyo 3:43d4cb3ece1b 412 pc.printf("serong atas kiri \n");
rizqicahyo 3:43d4cb3ece1b 413
rizqicahyo 7:59a513681663 414 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 415 }
rizqicahyo 3:43d4cb3ece1b 416 else if((ps2.read(PS_PAD::PAD_LEFT)==1) && (ps2.read(PS_PAD::PAD_BOTTOM)==1)){
rizqicahyo 3:43d4cb3ece1b 417 //serong bawah kiri
rizqicahyo 3:43d4cb3ece1b 418 motor2.speed(speed-tuning2);
rizqicahyo 7:59a513681663 419 motor4.stop(1);
rizqicahyo 7:59a513681663 420 motor1.stop(1);
rizqicahyo 3:43d4cb3ece1b 421 motor3.speed(speed-tuning3);
rizqicahyo 3:43d4cb3ece1b 422 pc.printf("serong bawah kiri \n");
rizqicahyo 2:df6c49846367 423
rizqicahyo 7:59a513681663 424 vcurr_base += ax;
rizqicahyo 0:edddd373a163 425 }
rizqicahyo 3:43d4cb3ece1b 426 else if((ps2.read(PS_PAD::PAD_BOTTOM)==1) && (ps2.read(PS_PAD::PAD_RIGHT)==1)){
rizqicahyo 3:43d4cb3ece1b 427 //serong bawah kanan
rizqicahyo 7:59a513681663 428 motor2.stop(1);
rizqicahyo 3:43d4cb3ece1b 429 motor4.speed(-(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 430 motor1.speed(-(speed-tuning1));
rizqicahyo 7:59a513681663 431 motor3.stop(1);
rizqicahyo 3:43d4cb3ece1b 432 pc.printf("serong bawah kanan \n");
rizqicahyo 3:43d4cb3ece1b 433
rizqicahyo 7:59a513681663 434 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 435 }
rizqicahyo 3:43d4cb3ece1b 436 else if((ps2.read(PS_PAD::PAD_TOP)==1) && (ps2.read(PS_PAD::PAD_BOTTOM)==0)){
rizqicahyo 3:43d4cb3ece1b 437 //maju
rizqicahyo 3:43d4cb3ece1b 438 motor1.speed(speed-tuning1);
rizqicahyo 3:43d4cb3ece1b 439 motor3.speed(-(speed-tuning3));
rizqicahyo 3:43d4cb3ece1b 440 motor2.speed(-(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 441 motor4.speed(speed-tuning4);
rizqicahyo 3:43d4cb3ece1b 442 pc.printf("maju \n");
rizqicahyo 2:df6c49846367 443
rizqicahyo 7:59a513681663 444 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 445 }
rizqicahyo 3:43d4cb3ece1b 446 else if((ps2.read(PS_PAD::PAD_BOTTOM)==1) && (ps2.read(PS_PAD::PAD_TOP)==0)){
rizqicahyo 3:43d4cb3ece1b 447 //mundur
rizqicahyo 3:43d4cb3ece1b 448 motor1.speed(-(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 449 motor3.speed(speed-tuning3);
rizqicahyo 3:43d4cb3ece1b 450 motor2.speed(speed-tuning2);
rizqicahyo 3:43d4cb3ece1b 451 motor4.speed(-(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 452 pc.printf("mundur \n");
rizqicahyo 2:df6c49846367 453
rizqicahyo 7:59a513681663 454 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 455 }
rizqicahyo 3:43d4cb3ece1b 456 else if((ps2.read(PS_PAD::PAD_RIGHT)==1) && (ps2.read(PS_PAD::PAD_LEFT)==0)){
rizqicahyo 3:43d4cb3ece1b 457 //kanan
rizqicahyo 3:43d4cb3ece1b 458 motor2.speed(-(speed-tuning2));
rizqicahyo 3:43d4cb3ece1b 459 motor4.speed(-(speed-tuning4));
rizqicahyo 3:43d4cb3ece1b 460 motor1.speed(-(speed-tuning1));
rizqicahyo 3:43d4cb3ece1b 461 motor3.speed(-(speed-tuning3));
rizqicahyo 3:43d4cb3ece1b 462 pc.printf("kanan \n");
rizqicahyo 3:43d4cb3ece1b 463
rizqicahyo 7:59a513681663 464 vcurr_base += ax;
rizqicahyo 3:43d4cb3ece1b 465 }
rizqicahyo 3:43d4cb3ece1b 466 else if((ps2.read(PS_PAD::PAD_RIGHT)==0) && (ps2.read(PS_PAD::PAD_LEFT)==1)){
rizqicahyo 3:43d4cb3ece1b 467 //kiri
rizqicahyo 3:43d4cb3ece1b 468 motor2.speed(speed-tuning2);
rizqicahyo 3:43d4cb3ece1b 469 motor4.speed(speed-tuning4);
rizqicahyo 3:43d4cb3ece1b 470 motor1.speed(speed-tuning1);
rizqicahyo 3:43d4cb3ece1b 471 motor3.speed(speed-tuning3);
rizqicahyo 3:43d4cb3ece1b 472 pc.printf("kiri \n");
rizqicahyo 3:43d4cb3ece1b 473
rizqicahyo 7:59a513681663 474 vcurr_base += ax;
rizqicahyo 0:edddd373a163 475 }
rizqicahyo 0:edddd373a163 476 else{
rizqicahyo 7:59a513681663 477 motor1.stop(1);
rizqicahyo 7:59a513681663 478 motor3.stop(1);
rizqicahyo 7:59a513681663 479 motor2.stop(1);
rizqicahyo 7:59a513681663 480 motor4.stop(1);
rizqicahyo 3:43d4cb3ece1b 481 pc.printf("diam \n");
rizqicahyo 0:edddd373a163 482
rizqicahyo 7:59a513681663 483 vcurr_base = v0;
rizqicahyo 3:43d4cb3ece1b 484 }
rizqicahyo 3:43d4cb3ece1b 485
rizqicahyo 3:43d4cb3ece1b 486 }
rizqicahyo 3:43d4cb3ece1b 487
rizqicahyo 7:59a513681663 488 if(((ps2.read(PS_PAD::PAD_CIRCLE)==0) && (ps2.read(PS_PAD::PAD_TRIANGLE)==1))|| (IR == 0)){
rizqicahyo 3:43d4cb3ece1b 489 //POWER WINDOW ATAS
rizqicahyo 7:59a513681663 490 motorS.speed(vcurr_slider);
rizqicahyo 3:43d4cb3ece1b 491 if (limit1 == 0){
rizqicahyo 7:59a513681663 492 motorS.stop(1);
rizqicahyo 3:43d4cb3ece1b 493 }
rizqicahyo 3:43d4cb3ece1b 494
rizqicahyo 3:43d4cb3ece1b 495
rizqicahyo 3:43d4cb3ece1b 496 pc.printf("up \n");
rizqicahyo 3:43d4cb3ece1b 497 c++;
rizqicahyo 7:59a513681663 498
rizqicahyo 7:59a513681663 499 vcurr_slider += ax;
rizqicahyo 3:43d4cb3ece1b 500 }
rizqicahyo 3:43d4cb3ece1b 501 else if((ps2.read(PS_PAD::PAD_CIRCLE)==1) && (ps2.read(PS_PAD::PAD_TRIANGLE)==0)){
rizqicahyo 3:43d4cb3ece1b 502 //POWER WINDOW BAWAH
rizqicahyo 7:59a513681663 503 motorS.speed(-vcurr_slider);
rizqicahyo 3:43d4cb3ece1b 504
rizqicahyo 3:43d4cb3ece1b 505 if (limit2 ==0){
rizqicahyo 7:59a513681663 506 motorS.stop(1);
rizqicahyo 2:df6c49846367 507 }
rizqicahyo 3:43d4cb3ece1b 508
rizqicahyo 3:43d4cb3ece1b 509 pc.printf("down \n");
rizqicahyo 7:59a513681663 510 c--;
rizqicahyo 7:59a513681663 511
rizqicahyo 7:59a513681663 512 vcurr_slider += ax;
rizqicahyo 3:43d4cb3ece1b 513 }
rizqicahyo 3:43d4cb3ece1b 514 else{
rizqicahyo 7:59a513681663 515 vcurr_slider = v0;
rizqicahyo 7:59a513681663 516 motorS.stop(1);
rizqicahyo 3:43d4cb3ece1b 517 if ((c <= batas_delay) && (c>=-batas_delay)){
rizqicahyo 3:43d4cb3ece1b 518 c=0;
rizqicahyo 2:df6c49846367 519 }
rizqicahyo 3:43d4cb3ece1b 520
rizqicahyo 3:43d4cb3ece1b 521 pc.printf("diam \n");
rizqicahyo 3:43d4cb3ece1b 522 }
rizqicahyo 3:43d4cb3ece1b 523
rizqicahyo 3:43d4cb3ece1b 524 if((c > batas_delay) && (limit1 == 0)){
rizqicahyo 3:43d4cb3ece1b 525 c = 0;
rizqicahyo 7:59a513681663 526 motorS.stop(1);
rizqicahyo 3:43d4cb3ece1b 527 }
rizqicahyo 3:43d4cb3ece1b 528 else if((c < -batas_delay) && (limit2 == 0)){
rizqicahyo 3:43d4cb3ece1b 529 c = 0;
rizqicahyo 7:59a513681663 530 motorS.stop(1);
rizqicahyo 3:43d4cb3ece1b 531 }
rizqicahyo 3:43d4cb3ece1b 532 else if( (c > batas_delay) && (limit1 != 0)){
rizqicahyo 3:43d4cb3ece1b 533 motorS.speed(1);
rizqicahyo 3:43d4cb3ece1b 534 }
rizqicahyo 3:43d4cb3ece1b 535 else if ((c<-batas_delay) && (limit2 != 0)){
rizqicahyo 3:43d4cb3ece1b 536 motorS.speed(-0.7);
rizqicahyo 3:43d4cb3ece1b 537 }
rizqicahyo 2:df6c49846367 538
rizqicahyo 0:edddd373a163 539
rizqicahyo 3:43d4cb3ece1b 540 if ((ps2.read(PS_PAD::PAD_SELECT)==1))
rizqicahyo 3:43d4cb3ece1b 541 {
rizqicahyo 0:edddd373a163 542 //mekanisme ambil gripper
rizqicahyo 0:edddd373a163 543 pc.printf("mekanisme gripper");
rizqicahyo 7:59a513681663 544 /* if (g==1){
rizqicahyo 0:edddd373a163 545 pc.printf("ambil 1");
rizqicahyo 0:edddd373a163 546 pnuematik2 = 0;
rizqicahyo 0:edddd373a163 547 g=2;
rizqicahyo 0:edddd373a163 548 wait_ms(400);
rizqicahyo 0:edddd373a163 549 }
rizqicahyo 0:edddd373a163 550 else
rizqicahyo 0:edddd373a163 551 {
rizqicahyo 0:edddd373a163 552 pnuematik2 = 1;
rizqicahyo 0:edddd373a163 553 wait_ms(400);
rizqicahyo 0:edddd373a163 554 g=1;
rizqicahyo 7:59a513681663 555 }*/
rizqicahyo 7:59a513681663 556 pc.printf("ambil 1");
rizqicahyo 7:59a513681663 557 pnuematik2 = !pnuematik2;
rizqicahyo 7:59a513681663 558 //g=2;
rizqicahyo 7:59a513681663 559 wait_ms(400);
rizqicahyo 7:59a513681663 560
rizqicahyo 3:43d4cb3ece1b 561 }
rizqicahyo 0:edddd373a163 562 }
rizqicahyo 0:edddd373a163 563
rizqicahyo 0:edddd373a163 564 void edf_servo(){
rizqicahyo 0:edddd373a163 565 if(ps2.read(PS_PAD::PAD_X)==1){
rizqicahyo 0:edddd373a163 566 //PWM ++
rizqicahyo 7:59a513681663 567
rizqicahyo 7:59a513681663 568 if( flag_river == 1){
rizqicahyo 7:59a513681663 569 pwm += 0.0007;
rizqicahyo 7:59a513681663 570 }
rizqicahyo 7:59a513681663 571 else{
rizqicahyo 7:59a513681663 572 pwm = 0.378;
rizqicahyo 7:59a513681663 573 }
rizqicahyo 7:59a513681663 574
rizqicahyo 4:7a7a8aa33fd5 575 if( pwm > 0.8) pwm = 0.8;
rizqicahyo 7:59a513681663 576 pc.printf(" %f gaspol \n", pwm);
rizqicahyo 0:edddd373a163 577 }
rizqicahyo 0:edddd373a163 578 else if(ps2.read(PS_PAD::PAD_SQUARE)==1){
rizqicahyo 0:edddd373a163 579 //PWM--
rizqicahyo 2:df6c49846367 580 pwm -= 0.0007;
rizqicahyo 0:edddd373a163 581
rizqicahyo 0:edddd373a163 582 if(pwm < 0) pwm = 0.0;
rizqicahyo 7:59a513681663 583 pc.printf("%f rem ndeng \n", pwm);
rizqicahyo 0:edddd373a163 584 }
rizqicahyo 0:edddd373a163 585
rizqicahyo 0:edddd373a163 586 if(ps2.read(PS_PAD::PAD_R2)==1){
rizqicahyo 0:edddd373a163 587 //SERVO --
rizqicahyo 0:edddd373a163 588 sudut += 0.5;
rizqicahyo 0:edddd373a163 589
rizqicahyo 0:edddd373a163 590 if(sudut > 90) sudut = 90;
rizqicahyo 0:edddd373a163 591 pc.printf("servo max \n");
rizqicahyo 0:edddd373a163 592 }
rizqicahyo 0:edddd373a163 593 else if(ps2.read(PS_PAD::PAD_L2)==1){
rizqicahyo 0:edddd373a163 594 //SERVO ++
rizqicahyo 0:edddd373a163 595 sudut -= 0.5;
rizqicahyo 0:edddd373a163 596
rizqicahyo 0:edddd373a163 597 if(sudut < -90) sudut = -90;
rizqicahyo 0:edddd373a163 598 pc.printf("servo min \n");
rizqicahyo 0:edddd373a163 599 }
rizqicahyo 0:edddd373a163 600
rizqicahyo 0:edddd373a163 601 if(ps2.read(PS_PAD::PAD_START)==1){
rizqicahyo 0:edddd373a163 602
rizqicahyo 7:59a513681663 603 flag_river = 1;
rizqicahyo 0:edddd373a163 604 sudut = 0;
rizqicahyo 7:59a513681663 605 pwm = 0.295;
rizqicahyo 0:edddd373a163 606 }
rizqicahyo 3:43d4cb3ece1b 607
rizqicahyo 3:43d4cb3ece1b 608
rizqicahyo 0:edddd373a163 609 servoEDF.position((float)sudut);
rizqicahyo 0:edddd373a163 610 edf.setThrottle((float)pwm);
rizqicahyo 0:edddd373a163 611 edf.pulse();
rizqicahyo 2:df6c49846367 612 }
rizqicahyo 2:df6c49846367 613
rizqicahyo 4:7a7a8aa33fd5 614 /////////////////////////////////////////LINE FOLLOWER/////////////////////////
rizqicahyo 3:43d4cb3ece1b 615
rizqicahyo 2:df6c49846367 616 void init_sensor(){
rizqicahyo 2:df6c49846367 617 char data;
rizqicahyo 7:59a513681663 618 if(com1.readable()){
rizqicahyo 7:59a513681663 619 data = com1.getc();
rizqicahyo 2:df6c49846367 620
rizqicahyo 2:df6c49846367 621 for(int i=0; i<6; i++){
rizqicahyo 7:59a513681663 622 datasensor1[i] = (data >> i) & 1;
rizqicahyo 7:59a513681663 623 }
rizqicahyo 7:59a513681663 624 }
rizqicahyo 7:59a513681663 625
rizqicahyo 7:59a513681663 626 if(com2.readable()){
rizqicahyo 7:59a513681663 627 data = com2.getc();
rizqicahyo 7:59a513681663 628
rizqicahyo 7:59a513681663 629 for(int i=0; i<6; i++){
rizqicahyo 7:59a513681663 630 datasensor2[i] = (data >> i) & 1;
rizqicahyo 2:df6c49846367 631 }
rizqicahyo 2:df6c49846367 632 }
rizqicahyo 2:df6c49846367 633 }
rizqicahyo 2:df6c49846367 634
rizqicahyo 3:43d4cb3ece1b 635 void linetracer(float speed){
rizqicahyo 2:df6c49846367 636 float speed1,speed2,speed3,speed4;
rizqicahyo 3:43d4cb3ece1b 637
rizqicahyo 7:59a513681663 638 //////////////////logic dari PV (present Value)/////////////////////////
rizqicahyo 7:59a513681663 639 if(datasensor1[2] && datasensor1[3]) { speed1 = speed*driver1_0; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 640 else if(datasensor1[2]) { speed1 = speed*driver1_1; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_1; }
rizqicahyo 7:59a513681663 641 else if(datasensor1[3]) { speed1 = speed*driver1_0; speed2 = speed*driver1_1; speed3 = speed*driver1_1; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 642 else if(datasensor1[1]) { speed1 = speed*driver1_2; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_2; }
rizqicahyo 7:59a513681663 643 else if(datasensor1[4]) { speed1 = speed*driver1_0; speed2 = speed*driver1_2; speed3 = speed*driver1_2; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 644 else if(datasensor1[0]) { speed1 = speed*driver1_3; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_3; }
rizqicahyo 7:59a513681663 645 else if(datasensor1[5]) { speed1 = speed*driver1_0; speed2 = speed*driver1_3; speed3 = speed*driver1_3; speed4 = speed*driver1_0; }
rizqicahyo 2:df6c49846367 646 else
rizqicahyo 2:df6c49846367 647 {
rizqicahyo 7:59a513681663 648 if(g_flag1 == 0) { speed1 = speed*driver1_0; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 649 else if(g_flag1 == 3) { speed1 = speed*driver1_1; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_1; }
rizqicahyo 7:59a513681663 650 else if(g_flag1 == 4) { speed1 = speed*driver1_0; speed2 = speed*driver1_1; speed3 = speed*driver1_1; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 651 else if(g_flag1 == 2) { speed1 = speed*driver1_2; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_2; }
rizqicahyo 7:59a513681663 652 else if(g_flag1 == 5) { speed1 = speed*driver1_0; speed2 = speed*driver1_2; speed3 = speed*driver1_2; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 653 else if(g_flag1 == 1) { speed1 = 0; speed2 = speed*driver1_2; speed3 = speed*driver1_2; speed4 = 0; }
rizqicahyo 7:59a513681663 654 else if(g_flag1 == 6) { speed1 = speed*driver1_2; speed2 = 0; speed3 = 0; speed4 = speed*driver1_2; }
rizqicahyo 2:df6c49846367 655 }
rizqicahyo 7:59a513681663 656
rizqicahyo 7:59a513681663 657 motor1.speed(-(float)(speed1-tuning1-0.04));
rizqicahyo 7:59a513681663 658 motor2.speed(-(float)(speed2-tuning2-0.04));
rizqicahyo 7:59a513681663 659 motor3.speed(-(float)(speed3-tuning3));
rizqicahyo 7:59a513681663 660 motor4.speed(-(float)(speed4-tuning4));
rizqicahyo 3:43d4cb3ece1b 661
rizqicahyo 3:43d4cb3ece1b 662 }
rizqicahyo 3:43d4cb3ece1b 663
rizqicahyo 3:43d4cb3ece1b 664 void flag_sensor(){
rizqicahyo 7:59a513681663 665 if((datasensor1[2] == 1) && (datasensor1[3] == 1)) g_flag1 = 0;
rizqicahyo 7:59a513681663 666 else if(datasensor1[2] == 1) g_flag1 = 3;
rizqicahyo 7:59a513681663 667 else if(datasensor1[3] == 1) g_flag1 = 4;
rizqicahyo 7:59a513681663 668 else if(datasensor1[1] == 1) g_flag1 = 2;
rizqicahyo 7:59a513681663 669 else if(datasensor1[4] == 1) g_flag1 = 5;
rizqicahyo 7:59a513681663 670 else if(datasensor1[0] == 1) g_flag1 = 1;
rizqicahyo 7:59a513681663 671 else if(datasensor1[5] == 1) g_flag1 = 6;
rizqicahyo 7:59a513681663 672
rizqicahyo 7:59a513681663 673 if((datasensor2[2] == 1) && (datasensor2[3] == 1)) g_flag2 = 0;
rizqicahyo 7:59a513681663 674 else if(datasensor2[2] == 1) g_flag2 = 3;
rizqicahyo 7:59a513681663 675 else if(datasensor2[3] == 1) g_flag2 = 4;
rizqicahyo 7:59a513681663 676 else if(datasensor2[1] == 1) g_flag2 = 2;
rizqicahyo 7:59a513681663 677 else if(datasensor2[4] == 1) g_flag2 = 5;
rizqicahyo 7:59a513681663 678 else if(datasensor2[0] == 1) g_flag2 = 1;
rizqicahyo 7:59a513681663 679 else if(datasensor2[5] == 1) g_flag2 = 6;
rizqicahyo 4:7a7a8aa33fd5 680 }
rizqicahyo 4:7a7a8aa33fd5 681
rizqicahyo 4:7a7a8aa33fd5 682
rizqicahyo 4:7a7a8aa33fd5 683 ////////////////////////SENSOR PING///////////////////////////////////////
rizqicahyo 4:7a7a8aa33fd5 684 float read_jarak() {
rizqicahyo 4:7a7a8aa33fd5 685 float jarak;
rizqicahyo 4:7a7a8aa33fd5 686
rizqicahyo 4:7a7a8aa33fd5 687 ping.Send();
rizqicahyo 4:7a7a8aa33fd5 688 wait_ms(45);
rizqicahyo 4:7a7a8aa33fd5 689 jarak = ping.Read_cm()/2;
rizqicahyo 4:7a7a8aa33fd5 690 return jarak;
rizqicahyo 7:59a513681663 691 }
rizqicahyo 7:59a513681663 692
rizqicahyo 7:59a513681663 693
rizqicahyo 7:59a513681663 694 void putar(float speed){
rizqicahyo 7:59a513681663 695 float speed1, speed2, speed3, speed4;
rizqicahyo 7:59a513681663 696
rizqicahyo 7:59a513681663 697 while(!((datasensor2[2] == 1) || (datasensor2[3] == 1))){
rizqicahyo 7:59a513681663 698 init_sensor();
rizqicahyo 7:59a513681663 699
rizqicahyo 7:59a513681663 700 if(datasensor2[2] && datasensor2[3]) { speed1 = 0; speed2 = 0; speed3 = 0; speed4 = 0; }
rizqicahyo 7:59a513681663 701 else if(datasensor2[3]) { speed1 = -speed*driver1_3; speed2 = -speed*driver1_3; speed3 = -speed*driver1_3; speed4 = -speed*driver1_3; }
rizqicahyo 7:59a513681663 702 else if(datasensor2[2]) { speed1 = speed*driver1_3; speed2 = speed*driver1_3; speed3 = speed*driver1_3; speed4 = speed*driver1_3; }
rizqicahyo 7:59a513681663 703 else if(datasensor2[4]) { speed1 = -speed*driver1_1; speed2 = -speed*driver1_1; speed3 = -speed*driver1_1; speed4 = -speed*driver1_1; }
rizqicahyo 7:59a513681663 704 else if(datasensor2[1]) { speed1 = speed*driver1_1; speed2 = speed*driver1_1; speed3 = speed*driver1_1; speed4 = speed*driver1_1; }
rizqicahyo 7:59a513681663 705 else if(datasensor2[5]) { speed1 = -speed*driver1_0; speed2 = -speed*driver1_0; speed3 = -speed*driver1_0; speed4 = -speed*driver1_0; }
rizqicahyo 7:59a513681663 706 else if(datasensor2[0]) { speed1 = speed*driver1_0; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 707 else
rizqicahyo 7:59a513681663 708 {
rizqicahyo 7:59a513681663 709 if(g_flag2 == 0) { speed1 = speed*driver1_3; speed2 = speed*driver1_3; speed3 = speed*driver1_3; speed4 = speed*driver1_3; }
rizqicahyo 7:59a513681663 710 else if(g_flag2 == 3) { speed1 = -speed*driver1_2; speed2 = -speed*driver1_2; speed3 = -speed*driver1_2; speed4 = -speed*driver1_2; }
rizqicahyo 7:59a513681663 711 else if(g_flag2 == 4) { speed1 = speed*driver1_2; speed2 = speed*driver1_2; speed3 = speed*driver1_2; speed4 = speed*driver1_2; }
rizqicahyo 7:59a513681663 712 else if(g_flag2 == 2) { speed1 = -speed*driver1_1; speed2 = -speed*driver1_1; speed3 = -speed*driver1_1; speed4 = -speed*driver1_1; }
rizqicahyo 7:59a513681663 713 else if(g_flag2 == 5) { speed1 = speed*driver1_1; speed2 = speed*driver1_1; speed3 = speed*driver1_1; speed4 = speed*driver1_1; }
rizqicahyo 7:59a513681663 714 else if(g_flag2 == 1) { speed1 = -speed*driver1_0; speed2 = -speed*driver1_0; speed3 = -speed*driver1_0; speed4 = -speed*driver1_0; }
rizqicahyo 7:59a513681663 715 else if(g_flag2 == 6) { speed1 = speed*driver1_0; speed2 = speed*driver1_0; speed3 = speed*driver1_0; speed4 = speed*driver1_0; }
rizqicahyo 7:59a513681663 716 }
rizqicahyo 7:59a513681663 717
rizqicahyo 7:59a513681663 718 motor1.speed((float)(speed1));
rizqicahyo 7:59a513681663 719 motor2.speed((float)(speed2));
rizqicahyo 7:59a513681663 720 motor3.speed(-(float)(speed3));
rizqicahyo 7:59a513681663 721 motor4.speed(-(float)(speed4));
rizqicahyo 7:59a513681663 722 }
rizqicahyo 7:59a513681663 723
rizqicahyo 7:59a513681663 724 motor1.speed(-(0.35-tuning1));
rizqicahyo 7:59a513681663 725 motor2.speed(-(0.35-tuning2));
rizqicahyo 7:59a513681663 726 motor3.speed(-(0.35-tuning3));
rizqicahyo 7:59a513681663 727 motor4.speed(-(0.35-tuning4));
rizqicahyo 7:59a513681663 728
rizqicahyo 7:59a513681663 729 wait_ms(300);
rizqicahyo 7:59a513681663 730
rizqicahyo 7:59a513681663 731 motor1.stop(1);
rizqicahyo 7:59a513681663 732 motor2.stop(1);
rizqicahyo 7:59a513681663 733 motor3.stop(1);
rizqicahyo 7:59a513681663 734 motor4.stop(1);
rizqicahyo 0:edddd373a163 735 }