The project is not done yet

Dependencies:   USBHost USBHostXpad mbed-rtos mbed

Fork of Totaleprogramma by jordy morsinkhof

Committer:
juliandekker
Date:
Mon Mar 02 10:58:30 2015 +0000
Revision:
1:da390b3b1330
Parent:
0:345f76c72b9a
xbox controller robot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
347467 0:345f76c72b9a 1 #define DEBUG 0
347467 0:345f76c72b9a 2 #include "mbed.h"
347467 0:345f76c72b9a 3 #include "rtos.h"
347467 0:345f76c72b9a 4 #include "USBHostXpad.h"
347467 0:345f76c72b9a 5 #include "utils.h"
347467 0:345f76c72b9a 6 #include <cmath>
347467 0:345f76c72b9a 7
juliandekker 1:da390b3b1330 8 Serial pc (USBTX, USBRX);
juliandekker 1:da390b3b1330 9 I2C i2cMod (p28, p27);
juliandekker 1:da390b3b1330 10 DigitalOut handmode(p5); // hand moet 1 worden (niet connected
juliandekker 1:da390b3b1330 11 DigitalIn automode(p6); // auto
juliandekker 1:da390b3b1330 12 DigitalIn externemode(p7); // extern
juliandekker 1:da390b3b1330 13 DigitalIn aanuit(p8); // aan uit
juliandekker 1:da390b3b1330 14 DigitalOut motorLeftFrontDirAV(p9); //motor lv 1= vooruit
juliandekker 1:da390b3b1330 15 DigitalOut motorRightFrontDirAV(p10); //MOTOR rv 1= vooruit
juliandekker 1:da390b3b1330 16 DigitalOut motorLeftRearDirAV(p11); //motor la 1= vooruit
juliandekker 1:da390b3b1330 17 DigitalOut motorRightRearDirAV(p12); //MOTOR ra 1= vooruit
juliandekker 1:da390b3b1330 18 PwmOut motorLeftFrontVelAV(p21); //motor lv
juliandekker 1:da390b3b1330 19 PwmOut motorRightFrontVelAV (p22); //Motor rv
juliandekker 1:da390b3b1330 20 PwmOut motorLeftRearVelAV(p23); //motor la
juliandekker 1:da390b3b1330 21 PwmOut motorRightRearVelAV (p24); //Motor ra
juliandekker 1:da390b3b1330 22 AnalogIn pot(p19); //potmeter
juliandekker 1:da390b3b1330 23 AnalogIn laserLeft(p15); //lasersensorwaarde lv2
juliandekker 1:da390b3b1330 24 AnalogIn laserRight(p16); //lasersensorwaarde rv2
juliandekker 1:da390b3b1330 25 DigitalOut led1(LED1);
juliandekker 1:da390b3b1330 26 DigitalOut led2(LED2);
juliandekker 1:da390b3b1330 27 DigitalOut led3(LED3);
juliandekker 1:da390b3b1330 28 DigitalOut led4(LED4);
juliandekker 1:da390b3b1330 29
347467 0:345f76c72b9a 30
juliandekker 1:da390b3b1330 31 float SonarLeft; // afstandswaarde ultrasoon sensor 1(links?)
juliandekker 1:da390b3b1330 32 float SonarRight; // afstandswaarde ultrasoon sensor 2 (rechts?)
juliandekker 1:da390b3b1330 33 float AS = 0.5; // actuele snelheid
juliandekker 1:da390b3b1330 34 float z = 0.5; // percentage voor het draaien van de motoren
juliandekker 1:da390b3b1330 35 float j = 0.75; // persentage voor het draaien van de motoren
juliandekker 1:da390b3b1330 36 float Q = 300; // De afstand vanaf waar de ultrasonesensor iets moet detecteren in CM. // groter dan een waarde 300 = 3 meter detecteerd de sensor iets
juliandekker 1:da390b3b1330 37 float I = 1.5; // de afstand vanaf waar de infraroodsensor iets moet detecteren.
juliandekker 1:da390b3b1330 38 float x = 0.5; // persentage voor het draaien van de motoren
juliandekker 1:da390b3b1330 39 float y = 0.25; // persentage voor het draaien van de motoren
juliandekker 1:da390b3b1330 40 float motorAcc = 0.3; // Motor versnelling pwm per seconde
juliandekker 1:da390b3b1330 41 float motorDec = 0.5; // Motor vertraging pwm per seconde
juliandekker 1:da390b3b1330 42 bool motorLeftFrontDirSP = 0; //motordirection leftfront setpoint
juliandekker 1:da390b3b1330 43 bool motorRightFrontDirSP = 0; //motordirection leftfront setpoint
juliandekker 1:da390b3b1330 44 bool motorLeftRearDirSP = 0; //motordirection leftfront setpoint
juliandekker 1:da390b3b1330 45 bool motorRightRearDirSP = 0; //motordirection leftfront setpoint
juliandekker 1:da390b3b1330 46 float motorLeftFrontVelSP =0; // motor snelheid leftfront setpoint
juliandekker 1:da390b3b1330 47 float motorRightFrontVelSP =0; // motor snelheid leftfront setpoint
juliandekker 1:da390b3b1330 48 float motorLeftRearVelSP =0; // motor snelheid leftfront setpoint
juliandekker 1:da390b3b1330 49 float motorRightRearVelSP =0; // motor snelheid leftfront setpoint
347467 0:345f76c72b9a 50
347467 0:345f76c72b9a 51 Xbox360ControllerState controlState;
juliandekker 1:da390b3b1330 52
juliandekker 1:da390b3b1330 53 // Turn right program
juliandekker 1:da390b3b1330 54 void turnRight(){
juliandekker 1:da390b3b1330 55 led3 = 1; //rechts
juliandekker 1:da390b3b1330 56 motorLeftFrontDirSP = 1; //lv
juliandekker 1:da390b3b1330 57 motorRightFrontDirSP = 0; //rv
juliandekker 1:da390b3b1330 58 motorLeftRearDirSP = 1; //la
juliandekker 1:da390b3b1330 59 motorRightRearDirSP = 0; //Ra
juliandekker 1:da390b3b1330 60 motorLeftFrontVelSP = AS*j;
juliandekker 1:da390b3b1330 61 motorRightFrontVelSP = AS*z;
juliandekker 1:da390b3b1330 62 motorLeftRearVelSP = AS*j;
juliandekker 1:da390b3b1330 63 motorRightRearVelSP = AS*z;
juliandekker 1:da390b3b1330 64 pc.printf("rechts\r\n");
juliandekker 1:da390b3b1330 65 }
juliandekker 1:da390b3b1330 66
juliandekker 1:da390b3b1330 67 // Turn Left program
juliandekker 1:da390b3b1330 68 void turnLeft(){
juliandekker 1:da390b3b1330 69 motorLeftFrontDirSP = 1; //lv
juliandekker 1:da390b3b1330 70 motorRightFrontDirSP = 1; //rv
juliandekker 1:da390b3b1330 71 motorLeftRearDirSP = 1; //La
juliandekker 1:da390b3b1330 72 motorRightRearDirSP = 1; //Ra
juliandekker 1:da390b3b1330 73 motorLeftFrontVelSP = AS*x;
juliandekker 1:da390b3b1330 74 motorRightFrontVelSP = AS*y;
juliandekker 1:da390b3b1330 75 motorLeftRearVelSP = AS*x;
juliandekker 1:da390b3b1330 76 motorRightRearVelSP = AS*y;
juliandekker 1:da390b3b1330 77 pc.printf("links\r\n");
juliandekker 1:da390b3b1330 78 }
juliandekker 1:da390b3b1330 79
juliandekker 1:da390b3b1330 80 void forward (){
juliandekker 1:da390b3b1330 81 motorLeftFrontDirSP = 1; //lv
juliandekker 1:da390b3b1330 82 motorRightFrontDirSP = 1; //rv
juliandekker 1:da390b3b1330 83 motorLeftRearDirSP = 1; //La
juliandekker 1:da390b3b1330 84 motorRightRearDirSP = 1; //Ra
juliandekker 1:da390b3b1330 85 motorLeftFrontVelSP = AS;
juliandekker 1:da390b3b1330 86 motorRightFrontVelSP = AS;
juliandekker 1:da390b3b1330 87 motorLeftRearVelSP = AS;
juliandekker 1:da390b3b1330 88 motorRightRearVelSP = AS;
juliandekker 1:da390b3b1330 89 pc.printf("rechtsvooruit\r\n");
juliandekker 1:da390b3b1330 90 }
juliandekker 1:da390b3b1330 91
juliandekker 1:da390b3b1330 92 void reverse(){
juliandekker 1:da390b3b1330 93 motorLeftFrontDirSP = 0; //lv
juliandekker 1:da390b3b1330 94 motorRightFrontDirSP = 0; //rv
juliandekker 1:da390b3b1330 95 motorLeftRearDirSP = 0; //La
juliandekker 1:da390b3b1330 96 motorRightRearDirSP = 0; //Ra
juliandekker 1:da390b3b1330 97 motorLeftFrontVelSP = AS;
juliandekker 1:da390b3b1330 98 motorRightFrontVelSP = AS;
juliandekker 1:da390b3b1330 99 motorLeftRearVelSP = AS;
juliandekker 1:da390b3b1330 100 motorRightRearVelSP = AS;
juliandekker 1:da390b3b1330 101 pc.printf("achteruit\r\n");
juliandekker 1:da390b3b1330 102 }
347467 0:345f76c72b9a 103
juliandekker 1:da390b3b1330 104 void halt(){
juliandekker 1:da390b3b1330 105 motorLeftFrontDirSP = 0; //lv
juliandekker 1:da390b3b1330 106 motorRightFrontDirSP = 0; //rv
juliandekker 1:da390b3b1330 107 motorLeftRearDirSP = 0; //La
juliandekker 1:da390b3b1330 108 motorRightRearDirSP = 0; //Ra
juliandekker 1:da390b3b1330 109 motorLeftFrontVelSP = 0;
juliandekker 1:da390b3b1330 110 motorRightFrontVelSP = 0;
juliandekker 1:da390b3b1330 111 motorLeftRearVelSP = 0;
juliandekker 1:da390b3b1330 112 motorRightRearVelSP = 0;
juliandekker 1:da390b3b1330 113 pc.printf("stop\r\n");
juliandekker 1:da390b3b1330 114 }
juliandekker 1:da390b3b1330 115 ///todo nul moet nog stilstaan worden
juliandekker 1:da390b3b1330 116 //Thread MotorController
juliandekker 1:da390b3b1330 117 void thread_motorControl(void const* arg){
juliandekker 1:da390b3b1330 118 int controlInterval = 100;// was100
juliandekker 1:da390b3b1330 119 while(1){
juliandekker 1:da390b3b1330 120 Thread::wait(controlInterval);
juliandekker 1:da390b3b1330 121 //MotorLeftFront
juliandekker 1:da390b3b1330 122 if(motorLeftFrontDirSP == motorLeftFrontDirAV){
juliandekker 1:da390b3b1330 123 if (motorLeftFrontVelSP > motorLeftFrontVelAV){
juliandekker 1:da390b3b1330 124 motorLeftFrontVelAV=motorLeftFrontVelAV+(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 125 }
juliandekker 1:da390b3b1330 126 else if(motorLeftFrontVelSP < motorLeftFrontVelAV){
juliandekker 1:da390b3b1330 127 motorLeftFrontVelAV=motorLeftFrontVelAV-(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 128 }
juliandekker 1:da390b3b1330 129 }
juliandekker 1:da390b3b1330 130 else {
juliandekker 1:da390b3b1330 131 //regel naar nul
juliandekker 1:da390b3b1330 132 if ((motorLeftFrontVelAV-(motorDec/controlInterval*10))> 0){
juliandekker 1:da390b3b1330 133 motorLeftFrontVelAV= motorLeftFrontVelAV-(motorDec/controlInterval*10);
juliandekker 1:da390b3b1330 134 }
juliandekker 1:da390b3b1330 135 else{
juliandekker 1:da390b3b1330 136 motorLeftFrontDirAV = not motorLeftFrontDirAV;
juliandekker 1:da390b3b1330 137 }
juliandekker 1:da390b3b1330 138 }
juliandekker 1:da390b3b1330 139 //MotorRightFront
juliandekker 1:da390b3b1330 140 if(motorRightFrontDirSP == motorRightFrontDirAV){
juliandekker 1:da390b3b1330 141 if (motorRightFrontVelSP > motorRightFrontVelAV){
juliandekker 1:da390b3b1330 142 motorRightFrontVelAV=motorRightFrontVelAV+(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 143 }
juliandekker 1:da390b3b1330 144 else if(motorRightFrontVelSP < motorRightFrontVelAV){
juliandekker 1:da390b3b1330 145 motorRightFrontVelAV=motorRightFrontVelAV-(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 146 }
juliandekker 1:da390b3b1330 147 }
juliandekker 1:da390b3b1330 148 else {
juliandekker 1:da390b3b1330 149 //regel naar nul
juliandekker 1:da390b3b1330 150 if ((motorRightFrontVelAV-(motorDec/controlInterval*10))> 0){
juliandekker 1:da390b3b1330 151 motorRightFrontVelAV= motorRightFrontVelAV-(motorDec/controlInterval*10);
juliandekker 1:da390b3b1330 152 }
juliandekker 1:da390b3b1330 153 else{
juliandekker 1:da390b3b1330 154 motorRightFrontDirAV = not motorRightFrontDirAV;
juliandekker 1:da390b3b1330 155 }
juliandekker 1:da390b3b1330 156 }
juliandekker 1:da390b3b1330 157 //motorLeftRear
juliandekker 1:da390b3b1330 158 if(motorLeftRearDirSP == motorLeftRearDirAV){
juliandekker 1:da390b3b1330 159 if (motorLeftRearVelSP > motorLeftRearVelAV){
juliandekker 1:da390b3b1330 160 motorLeftRearVelAV=motorLeftRearVelAV+(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 161 }
juliandekker 1:da390b3b1330 162 else if(motorLeftRearVelSP < motorLeftRearVelAV){
juliandekker 1:da390b3b1330 163 motorLeftRearVelAV=motorLeftRearVelAV-(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 164 }
juliandekker 1:da390b3b1330 165 }
juliandekker 1:da390b3b1330 166 else {
juliandekker 1:da390b3b1330 167 //regel naar nul
juliandekker 1:da390b3b1330 168 if ((motorLeftRearVelAV-(motorDec/controlInterval*10))> 0){
juliandekker 1:da390b3b1330 169 motorLeftRearVelAV= motorLeftRearVelAV-(motorDec/controlInterval*10);
juliandekker 1:da390b3b1330 170 }
juliandekker 1:da390b3b1330 171 else{
juliandekker 1:da390b3b1330 172 motorLeftRearDirAV = not motorLeftRearDirAV;
juliandekker 1:da390b3b1330 173 }
juliandekker 1:da390b3b1330 174 }
juliandekker 1:da390b3b1330 175 //motorRightRear
juliandekker 1:da390b3b1330 176 if(motorRightRearDirSP == motorRightRearDirAV){
juliandekker 1:da390b3b1330 177 if (motorRightRearVelSP > motorRightRearVelAV){
juliandekker 1:da390b3b1330 178 motorRightRearVelAV=motorRightRearVelAV+(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 179 }
juliandekker 1:da390b3b1330 180 else if(motorRightRearVelSP < motorRightRearVelAV){
juliandekker 1:da390b3b1330 181 motorRightRearVelAV=motorRightRearVelAV-(motorAcc/controlInterval*10);
juliandekker 1:da390b3b1330 182 }
juliandekker 1:da390b3b1330 183 }
juliandekker 1:da390b3b1330 184 else {
juliandekker 1:da390b3b1330 185 //regel naar nul
juliandekker 1:da390b3b1330 186 if ((motorRightRearVelAV-(motorDec/controlInterval*10))> 0){
juliandekker 1:da390b3b1330 187 motorRightRearVelAV= motorRightRearVelAV-(motorDec/controlInterval*10);
juliandekker 1:da390b3b1330 188 }
juliandekker 1:da390b3b1330 189 else{
juliandekker 1:da390b3b1330 190 motorRightRearDirAV = not motorRightRearDirAV;
juliandekker 1:da390b3b1330 191 }
juliandekker 1:da390b3b1330 192 }
juliandekker 1:da390b3b1330 193 pc.printf ("dirAV : %d ", motorLeftFrontDirAV.read());
juliandekker 1:da390b3b1330 194 pc.printf ("velocityAV :%F", motorLeftFrontVelAV.read());
juliandekker 1:da390b3b1330 195 pc.printf ("dirSP : %d ", motorLeftFrontDirSP);
juliandekker 1:da390b3b1330 196 pc.printf ("velocitySP :%F\r\n", motorLeftFrontVelSP);
juliandekker 1:da390b3b1330 197 }
juliandekker 1:da390b3b1330 198 }
juliandekker 1:da390b3b1330 199
juliandekker 1:da390b3b1330 200 // programma tbv uitlezen ultasoon sensoren
347467 0:345f76c72b9a 201 int i2cAddress1 = 0xF2;
347467 0:345f76c72b9a 202 int i2cAddress2 = 0xE0;
347467 0:345f76c72b9a 203
347467 0:345f76c72b9a 204 void sendStartRangingCommand1(void){
347467 0:345f76c72b9a 205 const char command[] = {0x00, 0x51};
347467 0:345f76c72b9a 206 i2cMod.write(i2cAddress1, command, 2);
347467 0:345f76c72b9a 207 }
347467 0:345f76c72b9a 208 void sendStartRangingCommand2(void){
347467 0:345f76c72b9a 209 const char command[] = {0x00, 0x51};
347467 0:345f76c72b9a 210 i2cMod.write(i2cAddress2, command, 2);
347467 0:345f76c72b9a 211 }
347467 0:345f76c72b9a 212 int readRange1(void){
347467 0:345f76c72b9a 213 const char command[] = {0x02}; //Address of range register
347467 0:345f76c72b9a 214 char response[] = {0x00, 0x00};
347467 0:345f76c72b9a 215 i2cMod.write(i2cAddress1, command, 1, 1); //Send command
347467 0:345f76c72b9a 216 i2cMod.read(i2cAddress1, response, 2); //Read 16bits result
347467 0:345f76c72b9a 217 int range = (response[0]<<8)+response[1]; //Shift two bytes into int
347467 0:345f76c72b9a 218 return range;
347467 0:345f76c72b9a 219 }
347467 0:345f76c72b9a 220
347467 0:345f76c72b9a 221 int readRange2(void){
347467 0:345f76c72b9a 222 const char command[] = {0x02}; //Address of range register
347467 0:345f76c72b9a 223 char response[] = {0x00, 0x00};
347467 0:345f76c72b9a 224 i2cMod.write(i2cAddress2, command, 1, 1); //Send command
347467 0:345f76c72b9a 225 i2cMod.read(i2cAddress2, response, 2); //Read 16bits result
347467 0:345f76c72b9a 226 int range = (response[0]<<8)+response[1]; //Shift two bytes into int
347467 0:345f76c72b9a 227 return range;
347467 0:345f76c72b9a 228 }
347467 0:345f76c72b9a 229
juliandekker 1:da390b3b1330 230 // Thread Sonar ranging
juliandekker 1:da390b3b1330 231 void thread_sonarControl(void const* arg){
juliandekker 1:da390b3b1330 232 while (1){
juliandekker 1:da390b3b1330 233 // sensoren automatisch
juliandekker 1:da390b3b1330 234 sendStartRangingCommand1();
juliandekker 1:da390b3b1330 235 Thread::wait(0.07);
juliandekker 1:da390b3b1330 236 SonarLeft = readRange1();
juliandekker 1:da390b3b1330 237 Thread::wait (0.2);
juliandekker 1:da390b3b1330 238 sendStartRangingCommand2();
juliandekker 1:da390b3b1330 239 Thread::wait(0.07);
juliandekker 1:da390b3b1330 240 SonarRight = readRange2();
juliandekker 1:da390b3b1330 241 }
347467 0:345f76c72b9a 242 }
347467 0:345f76c72b9a 243
juliandekker 1:da390b3b1330 244 // Programm tbv xbox controller
juliandekker 1:da390b3b1330 245 void onControlInput(int buttons, int stick_lx, int stick_ly, int stick_rx, int stick_ry, int trigger_l, int trigger_r){
juliandekker 1:da390b3b1330 246 controlState = Xbox360ControllerState(buttons, stick_lx, stick_ly, stick_rx, stick_ry, trigger_l, trigger_r);
juliandekker 1:da390b3b1330 247 }
347467 0:345f76c72b9a 248
juliandekker 1:da390b3b1330 249 // programma tbv xbox controller
347467 0:345f76c72b9a 250 void thread_controller(void const* arg){
347467 0:345f76c72b9a 251 USBHostXpad controller;
347467 0:345f76c72b9a 252 controller.attachEvent(&onControlInput);
347467 0:345f76c72b9a 253
juliandekker 1:da390b3b1330 254 while(1){
juliandekker 1:da390b3b1330 255 // connect programma
347467 0:345f76c72b9a 256 bool wasdisconnected = true;
347467 0:345f76c72b9a 257 //acts as a failsafe
juliandekker 1:da390b3b1330 258 while(controller.connected()){
juliandekker 1:da390b3b1330 259 if(wasdisconnected){
347467 0:345f76c72b9a 260 controller.led( USBHostXpad::LED1_ON );
juliandekker 1:da390b3b1330 261 //stop, wait for controller to reconnect for a second.
347467 0:345f76c72b9a 262 wasdisconnected = false;
347467 0:345f76c72b9a 263 }
juliandekker 1:da390b3b1330 264 if( controlState.buttons & USBHostXpad::XPAD_PAD_X){
347467 0:345f76c72b9a 265 //Stoppen
juliandekker 1:da390b3b1330 266 halt();
juliandekker 1:da390b3b1330 267 }
juliandekker 1:da390b3b1330 268 //dpad xbox controller
juliandekker 1:da390b3b1330 269 if(controlState.buttons & (USBHostXpad::XPAD_HAT_UP | USBHostXpad::XPAD_HAT_DOWN | USBHostXpad::XPAD_HAT_LEFT | USBHostXpad::XPAD_HAT_RIGHT | USBHostXpad::XPAD_PAD_Y)& automode == 0 & externemode == 0 & aanuit == 1){
juliandekker 1:da390b3b1330 270 //vooruit
juliandekker 1:da390b3b1330 271 pc.printf (" handmatig \n ");
juliandekker 1:da390b3b1330 272 if(controlState.buttons & USBHostXpad::XPAD_HAT_UP){
juliandekker 1:da390b3b1330 273 forward();
juliandekker 1:da390b3b1330 274 }
juliandekker 1:da390b3b1330 275 //Achteruit
juliandekker 1:da390b3b1330 276 else if(controlState.buttons & USBHostXpad::XPAD_HAT_DOWN){
juliandekker 1:da390b3b1330 277 reverse();
juliandekker 1:da390b3b1330 278 }
juliandekker 1:da390b3b1330 279 //links
juliandekker 1:da390b3b1330 280 else if(controlState.buttons & USBHostXpad::XPAD_HAT_LEFT){
juliandekker 1:da390b3b1330 281 turnLeft();
juliandekker 1:da390b3b1330 282 }
juliandekker 1:da390b3b1330 283 //rechts
juliandekker 1:da390b3b1330 284 else if(controlState.buttons & USBHostXpad::XPAD_HAT_RIGHT){
juliandekker 1:da390b3b1330 285 turnRight();
juliandekker 1:da390b3b1330 286 }
347467 0:345f76c72b9a 287 }
347467 0:345f76c72b9a 288 }
juliandekker 1:da390b3b1330 289 //stop, wait for controller to reconnect for a second.
juliandekker 1:da390b3b1330 290 Thread::wait(500); /// was 500
347467 0:345f76c72b9a 291 controller.connect();
347467 0:345f76c72b9a 292 }
347467 0:345f76c72b9a 293 }
347467 0:345f76c72b9a 294
juliandekker 1:da390b3b1330 295 //////////////////////////////////////////////////////////////////
juliandekker 1:da390b3b1330 296 int main() {
juliandekker 1:da390b3b1330 297 Thread t_controller(thread_controller);
juliandekker 1:da390b3b1330 298 Thread t_motorControl(thread_motorControl);
juliandekker 1:da390b3b1330 299 Thread t_sonarControl(thread_sonarControl);
347467 0:345f76c72b9a 300 while(1) {
juliandekker 1:da390b3b1330 301 if (aanuit == 1 & automode == 0 & externemode == 0){
juliandekker 1:da390b3b1330 302 handmode = 1;
juliandekker 1:da390b3b1330 303 pc.printf (" handmode \r\n ");
juliandekker 1:da390b3b1330 304
juliandekker 1:da390b3b1330 305 }
juliandekker 1:da390b3b1330 306 if(aanuit == 1 & automode ==1){
juliandekker 1:da390b3b1330 307 //AS =pot*3.3; aanzetten weer
juliandekker 1:da390b3b1330 308 //alles iets detecteerd dus draaien
juliandekker 1:da390b3b1330 309 if (SonarLeft<=Q && SonarRight<=Q && laserLeft>=I && laserRight>=I){
juliandekker 1:da390b3b1330 310 turnRight();
juliandekker 1:da390b3b1330 311 }
juliandekker 1:da390b3b1330 312 //rv1 rv2 en lv1 iets gedetecteerd hebben, naar links draaien
juliandekker 1:da390b3b1330 313 else if (SonarLeft<=Q && SonarRight<=Q && laserLeft<=I && laserRight>=I){
juliandekker 1:da390b3b1330 314 turnLeft();
juliandekker 1:da390b3b1330 315 }
juliandekker 1:da390b3b1330 316 //lv1 lv2 en rv1 iets gedetecteerd hebben, naar rechts draaien)
juliandekker 1:da390b3b1330 317 else if (SonarLeft<=Q && SonarRight<=Q && laserLeft>=I && laserRight<=I){
juliandekker 1:da390b3b1330 318 turnRight();
juliandekker 1:da390b3b1330 319 }
juliandekker 1:da390b3b1330 320 //rv1 rv2 iets gedetecteerd hebben, naar links draaien)
juliandekker 1:da390b3b1330 321 else if (SonarLeft>Q && SonarRight<Q && laserLeft<I && laserRight>I){
juliandekker 1:da390b3b1330 322 turnLeft();
juliandekker 1:da390b3b1330 323 }
juliandekker 1:da390b3b1330 324 //lv1 lv2 iets gedetecteerd hebben, naar rechts draaien)
juliandekker 1:da390b3b1330 325 else if (SonarLeft<Q && SonarRight>Q && laserLeft>I && laserRight<I){
juliandekker 1:da390b3b1330 326 turnRight();
juliandekker 1:da390b3b1330 327 }
juliandekker 1:da390b3b1330 328 //lv1 rv1 iets gedetecteerd hebben, naar links of rechts draaien)
juliandekker 1:da390b3b1330 329 else if (SonarLeft<Q && SonarRight>Q && laserLeft<I && laserRight<I){
juliandekker 1:da390b3b1330 330 if ( laserLeft>=laserRight){
juliandekker 1:da390b3b1330 331 turnLeft();
juliandekker 1:da390b3b1330 332 }
juliandekker 1:da390b3b1330 333 else if ( laserLeft<=laserRight ){
juliandekker 1:da390b3b1330 334 turnRight();
347467 0:345f76c72b9a 335 }
347467 0:345f76c72b9a 336 }
juliandekker 1:da390b3b1330 337 //lv1 iets gedetecteerd heeft, naar rechts draaien)
juliandekker 1:da390b3b1330 338 else if (SonarLeft<Q && SonarRight>Q && laserLeft<I && laserRight<I){
juliandekker 1:da390b3b1330 339 turnRight();
347467 0:345f76c72b9a 340 }
juliandekker 1:da390b3b1330 341 }
juliandekker 1:da390b3b1330 342 else if (externemode == 1 & aanuit == 1){
juliandekker 1:da390b3b1330 343 halt(); ///still todo
347467 0:345f76c72b9a 344 }
juliandekker 1:da390b3b1330 345 /* else {
juliandekker 1:da390b3b1330 346 pc.printf (" hallo \n ");
juliandekker 1:da390b3b1330 347 halt();
juliandekker 1:da390b3b1330 348 }*/
juliandekker 1:da390b3b1330 349 }
juliandekker 1:da390b3b1330 350 }
347467 0:345f76c72b9a 351
347467 0:345f76c72b9a 352
347467 0:345f76c72b9a 353
347467 0:345f76c72b9a 354
347467 0:345f76c72b9a 355