PES 2 - Gruppe 1 / Mbed 2 deprecated Robocode_Random

Dependencies:   mbed

Fork of Robocode by PES 2 - Gruppe 1

Committer:
aeschsim
Date:
Tue May 16 15:24:23 2017 +0000
Revision:
135:644346924339
Parent:
133:0046d2224e39
Child:
136:b35f2d9b7402
coding is shit; fixed some bugs! think break;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cittecla 38:3526c36e4c73 1 #include "Main.h"
cittecla 18:a82994e67297 2
cittecla 18:a82994e67297 3
aeschsim 81:a6f0f827dcb0 4 int state = 10;
cittecla 127:6bde4483ce7b 5 int old_state = 0;
cittecla 32:777976c4d733 6 bool positioning_state = 0;
cittecla 32:777976c4d733 7 bool mapping_state = 0;
cittecla 31:51f52ffa4b51 8
cittecla 131:8ae08f41bb43 9
cittecla 131:8ae08f41bb43 10
cittecla 71:ddf4eb5c3081 11 Timer game_timer;
cittecla 71:ddf4eb5c3081 12
cittecla 93:837a13760026 13
cittecla 32:777976c4d733 14 int main()
cittecla 32:777976c4d733 15 {
cittecla 61:b57577b0072f 16 printf("start...\r\n");
cittecla 94:0381e8b1beda 17 disable_servos();
cittecla 71:ddf4eb5c3081 18 while (game_timer.read() < 300) {
cittecla 64:c2fcf3b349e9 19 wait(0.01f);
cittecla 34:40d8d29b44b8 20 // 5min
cittecla 33:8a98f8b9d859 21 //*******************************************************************************
cittecla 33:8a98f8b9d859 22 //Non_state machine driven function
cittecla 33:8a98f8b9d859 23 //This functions will be called every cycle, use for safety and sensor functipons
cittecla 33:8a98f8b9d859 24 //*******************************************************************************
cittecla 32:777976c4d733 25
aeschsim 135:644346924339 26 //state = safety(state);
cittecla 31:51f52ffa4b51 27
cittecla 38:3526c36e4c73 28
cittecla 32:777976c4d733 29
cittecla 32:777976c4d733 30 if(positioning_state) {
cittecla 38:3526c36e4c73 31 positioning();
cittecla 32:777976c4d733 32 }
cittecla 32:777976c4d733 33 if(mapping_state) {
cittecla 38:3526c36e4c73 34 mapping();
cittecla 32:777976c4d733 35 }
cittecla 18:a82994e67297 36
cittecla 33:8a98f8b9d859 37 //*******************************************************************************
cittecla 33:8a98f8b9d859 38 //state machine driven function
cittecla 33:8a98f8b9d859 39 //This functions will only be called when their state is active.
cittecla 33:8a98f8b9d859 40 //The state machine will be in the same state until this action is completed or
cittecla 33:8a98f8b9d859 41 //a safty function kicks in and stops the current function.
cittecla 33:8a98f8b9d859 42 //Every function will return the next active state upon its transition table.
cittecla 33:8a98f8b9d859 43 //State and Transition Table can be found in the State_Machine.xlsx
cittecla 33:8a98f8b9d859 44 //*******************************************************************************
cittecla 113:c8ea0cd9b20c 45
aeschsim 135:644346924339 46 if(state != old_state) {
cittecla 127:6bde4483ce7b 47 printf("state: %d\r\n",state);
cittecla 127:6bde4483ce7b 48 old_state = state;
cittecla 127:6bde4483ce7b 49 }
cittecla 32:777976c4d733 50 switch (state) {
cittecla 38:3526c36e4c73 51 case 0:
cittecla 38:3526c36e4c73 52 state = emergency_shutdown();
cittecla 38:3526c36e4c73 53 break;
cittecla 38:3526c36e4c73 54 case 1:
cittecla 38:3526c36e4c73 55 state = colision_detected();
cittecla 38:3526c36e4c73 56 break;
cittecla 38:3526c36e4c73 57 case 2:
cittecla 38:3526c36e4c73 58 state = current_to_high();
cittecla 38:3526c36e4c73 59 break;
cittecla 38:3526c36e4c73 60 case 3:
cittecla 38:3526c36e4c73 61 state = overheating();
cittecla 38:3526c36e4c73 62 break;
cittecla 31:51f52ffa4b51 63
cittecla 38:3526c36e4c73 64 case 10:
cittecla 71:ddf4eb5c3081 65 state = idle();
cittecla 38:3526c36e4c73 66 break;
cittecla 38:3526c36e4c73 67 case 11:
cittecla 71:ddf4eb5c3081 68 state = idle2();
cittecla 38:3526c36e4c73 69 break;
cittecla 38:3526c36e4c73 70
cittecla 38:3526c36e4c73 71 case 15:
aeschsim 78:d9138c6f82a8 72 state = initialisation(); //init servo is included
cittecla 38:3526c36e4c73 73 break;
cittecla 38:3526c36e4c73 74 case 16:
cittecla 79:92b9d083322d 75 state = inital_arm_positioning();
cittecla 38:3526c36e4c73 76 break;
aeschsim 135:644346924339 77 /*case 17:
aeschsim 135:644346924339 78 state = initial_positioning();
aeschsim 135:644346924339 79 break;*/
cittecla 31:51f52ffa4b51 80
cittecla 38:3526c36e4c73 81 case 25:
aeschsim 133:0046d2224e39 82 state = 28;
cittecla 71:ddf4eb5c3081 83 game_timer.start();
cittecla 38:3526c36e4c73 84 break;
aeschsim 135:644346924339 85 /*case 26:
aeschsim 135:644346924339 86 state = 27;
aeschsim 135:644346924339 87 positioning_state = 1;
aeschsim 135:644346924339 88 break;
aeschsim 135:644346924339 89 case 27:
aeschsim 135:644346924339 90 state = 28;
aeschsim 135:644346924339 91 //mapping_state = 1;
aeschsim 135:644346924339 92 break;*/
cittecla 71:ddf4eb5c3081 93 case 28:
cittecla 38:3526c36e4c73 94 state = initial_turn();
cittecla 38:3526c36e4c73 95 break;
cittecla 38:3526c36e4c73 96
aeschsim 135:644346924339 97 /*
aeschsim 135:644346924339 98 case 35:
aeschsim 135:644346924339 99 state = select_target();
aeschsim 135:644346924339 100 break;
aeschsim 135:644346924339 101 case 36:
aeschsim 135:644346924339 102 state = pathfinding();
aeschsim 135:644346924339 103 break;
aeschsim 135:644346924339 104 case 37:
aeschsim 135:644346924339 105 state = switch_target_red();
aeschsim 135:644346924339 106 break;
cittecla 31:51f52ffa4b51 107
cittecla 31:51f52ffa4b51 108
aeschsim 135:644346924339 109 case 40:
aeschsim 135:644346924339 110 state = moving();
aeschsim 135:644346924339 111 break;
cittecla 54:453f24775644 112
cittecla 38:3526c36e4c73 113
aeschsim 135:644346924339 114 case 45:
aeschsim 135:644346924339 115 state = move_to_brick_by_coordlist();
aeschsim 135:644346924339 116 break;
aeschsim 135:644346924339 117 */
cittecla 38:3526c36e4c73 118 case 47:
cittecla 38:3526c36e4c73 119 state = move_in_search_for_brick();
cittecla 38:3526c36e4c73 120 break;
aeschsim 135:644346924339 121
aeschsim 135:644346924339 122 /*
aeschsim 135:644346924339 123 case 48:
aeschsim 135:644346924339 124 state = generate_fake_target();
aeschsim 135:644346924339 125 break;
aeschsim 135:644346924339 126 */
cittecla 31:51f52ffa4b51 127
cittecla 38:3526c36e4c73 128 case 50:
cittecla 38:3526c36e4c73 129 state = grabbing();
cittecla 38:3526c36e4c73 130 break;
aeschsim 135:644346924339 131
aeschsim 133:0046d2224e39 132 case 60:
aeschsim 133:0046d2224e39 133 state = move_random();
aeschsim 135:644346924339 134 break;
aeschsim 133:0046d2224e39 135 case 61:
aeschsim 133:0046d2224e39 136 state = swerve_go();
aeschsim 135:644346924339 137 break;
cittecla 87:df8c869a5a52 138
cittecla 87:df8c869a5a52 139 /******************************************************************************/
aeschsim 80:956f65714207 140 //Testtools
aeschsim 135:644346924339 141 /*
aeschsim 135:644346924339 142 case 100: //Testtool for IR sensors
aeschsim 135:644346924339 143 //printf("sensor 0: %f \r\n", getDistanceIR(0));
aeschsim 135:644346924339 144 // printf("sensor 1: %f \r\n", getDistanceIR(1));
aeschsim 135:644346924339 145 printf("sensor oben: %f \r\n", getDistanceIR(2));
aeschsim 135:644346924339 146 printf("sensor unten: %f \r\n\n", getDistanceIR(3));
aeschsim 135:644346924339 147 // printf("sensor 4: %f \r\n", getDistanceIR(4));
aeschsim 135:644346924339 148 // printf("sensor 5: %f \r\n\n", getDistanceIR(5));
aeschsim 135:644346924339 149 wait(0.1f);
aeschsim 135:644346924339 150 state = 100;
aeschsim 135:644346924339 151 break;
aeschsim 135:644346924339 152 case 101: //Testtool for get_color
aeschsim 135:644346924339 153 char str1[] = "GREEN";
aeschsim 135:644346924339 154 char str2[] = "RED";
aeschsim 135:644346924339 155 printf("Color: %s\r\n",get_color()? str1 : str2);
aeschsim 135:644346924339 156 wait_ms(500);
aeschsim 135:644346924339 157 state = 101;
aeschsim 135:644346924339 158 break;
aeschsim 135:644346924339 159 case 102:
aeschsim 135:644346924339 160 move_for_distance_with_radius(0.5f,-0.4);
aeschsim 135:644346924339 161 state = 103;
aeschsim 135:644346924339 162 break;
aeschsim 135:644346924339 163 case 103:
aeschsim 135:644346924339 164 float distance = move_for_distance_with_radius(0,0);
aeschsim 135:644346924339 165 if(distance < 0) {
aeschsim 135:644346924339 166 //printf("remaining deg %f\r\n", deg);
aeschsim 135:644346924339 167 stop_turn();
aeschsim 135:644346924339 168 state = 104;
aeschsim 135:644346924339 169 }
aeschsim 135:644346924339 170 break;
aeschsim 135:644346924339 171 case 104:
aeschsim 135:644346924339 172 move_for_distance_with_radius(0.5f,0.4);
aeschsim 135:644346924339 173 state = 105;
aeschsim 135:644346924339 174 break;
aeschsim 135:644346924339 175 case 105:
aeschsim 135:644346924339 176 float distance2 = move_for_distance_with_radius(0,0);
aeschsim 135:644346924339 177 if(distance2 < 0) {
aeschsim 135:644346924339 178 //printf("remaining deg %f\r\n", deg);
aeschsim 135:644346924339 179 stop_turn();
aeschsim 135:644346924339 180 state = 106;
aeschsim 135:644346924339 181 }
aeschsim 135:644346924339 182 break;
aeschsim 135:644346924339 183 case 106:
aeschsim 135:644346924339 184 coordinates co = get_current_coord();
aeschsim 135:644346924339 185 printf("current_coord: %f || %f\r\n", co.x, co.y);
aeschsim 135:644346924339 186 */
cittecla 32:777976c4d733 187 }
cittecla 32:777976c4d733 188 }
cittecla 71:ddf4eb5c3081 189 }