Jasmine Karlsson / Mbed 2 deprecated train_rail

Dependencies:   mbed TextLCD

Revision:
29:6031227dcac9
Parent:
28:1430685f4d12
Child:
30:63a8a5cefc6b
--- a/main.cpp	Thu Jun 21 13:42:31 2018 +0000
+++ b/main.cpp	Fri Jun 22 09:55:58 2018 +0000
@@ -38,7 +38,7 @@
 //move backwards/reverse
 
 //speed dial forward
-const unsigned int slow_speed = 0x74; //step 4
+const unsigned int slow_speed = 0x76; //step 4
 //const unsigned int DCCinst_step6 = 0x68; //step 6 1/4 speed
 const unsigned int normal_speed = 0x78; //step 13 1/2 speed
 
@@ -63,8 +63,14 @@
 static const int junction511[] = {5,11};
 vector<int> junction_511 (junction511, junction511 + sizeof(junction511) / sizeof(junction511[0]) );
 
+static const int lane4[] = {4};
+vector<int> lane_4 (lane4, lane4 + sizeof(lane4) / sizeof(lane4[0]) );
+
+static const int lane10[] = {10};
+vector<int> lane_10 (lane10, lane10 + sizeof(lane10) / sizeof(lane10[0]) );
+
 int redStartVal = 10;
-int silverStartVal = 2;
+int silverStartVal = 15;
 
 /*----------------------------------------------------------------------------
 Function definitions
@@ -218,16 +224,13 @@
        Stop everytime at 2     
        */
        lcd.printf("at 2"); 
-       /*if(!dect.checkReservation(10) && !dect.checkReservation(11)){
-            
+       if(!dect.checkReservation(10) && !dect.checkReservation(11)){
             currTrain->Stop();
             lcd.printf("Stopping at 2");
        }
-       else{ */
+       else{ 
                                 
            if(!dect.checkReservation(4) && !dect.checkReservation(3)){     //Check if 4 or 3 is reserved
-                lcd.cls();
-                lcd.printf("none is reserved");
                int v1 = rand() % 100;                                       //IF NOT randomize which way to go
                if (v1 < 50){                                                //0.25 chance to enable the switch2,  reserve 3,9
                     switch2.switchOn();
@@ -235,24 +238,18 @@
                 } 
                 else {                                                      //0.75 chance to disable switch2, reserve 4
                    switch2.switchOff(); 
-                   vector<int> detectors(4);
-                   dect.makeReservation(detectors);
+                   dect.makeReservation(lane_4);
                 }        
             }else if(dect.checkReservation(4)){                             //IF 4 is reserved
                 switch2.switchOn();                                        //Enable switch2, reserve 3,9
-                lcd.cls();
-                lcd.printf("4 is reserved");
                 dect.makeReservation(junction_39);
                     
             }else{                                                          //IF 3 reserved 
-                lcd.cls();
-                lcd.printf("3 is reserved");
                 switch2.switchOff();                                         //Disable switch2, reserve 4
-                vector<int> detectors(4);
-                dect.makeReservation(detectors);
+                dect.makeReservation(lane_4);
             }
             currTrain->changeSpeed(currTrain->normalSpeed());                          //Go forward
-        //}    
+        }    
         break;}
     case 3:{
         lcd.printf("at 3");
@@ -265,24 +262,23 @@
         }   
         else{
             currTrain->Stop();
-            lcd.printf("5 is reserved");
         }                                                           
-        break;}
+        break;
+        }
     case 4:{
         lcd.printf("At 4");
         dect.clearReservation(C_left);   //free nr 0,1,2,12,13
         switch3.switchOn();                 //Turn on switch3
         dect.showReservation();
         if(dect.checkReservation(6)){   //Check if 6 is reserved
-            lcd.printf("6 is reserved");
             currTrain->Stop();           //IF yes STOP
         }
         else{
             dect.makeReservation(C_right);  //else reserve 6,7,8 and go forward
             currTrain->changeSpeed(currTrain->normalSpeed());
         }
-        
-        break;  }    
+         break;  
+        }    
     case 5:{
         lcd.printf("at 5");
         
@@ -291,28 +287,28 @@
         dect.clearReservation(C_right);              //free nr 6,7,8
         
         if(!dect.checkReservation(3)){
-            lcd.printf("3 is reserved");
             currTrain->changeSpeed(currTrain->normalSpeed());     //go forward 
         }   
         else{
             currTrain->Stop();
         }                                                                
         
-        break;}
+        break;
+        }
     case 6:{
         lcd.printf("At 6");
         if(!currTrain->isClockwise())        //IF CC goes towards 7
         {
             switch3.switchOn();                                             //Enable switch3
-            int arr [3] = {4,5,11};
-            vector<int> detectors(arr, arr + sizeof(arr) / sizeof(int));
-            dect.clearReservation(detectors);                               //free nr 4,5,11
+            //int arr [3] = {4,5,11};
+            //vector<int> detectors(arr, arr + sizeof(arr) / sizeof(int));
+            dect.clearReservation(lane_4); 
+            dect.clearReservation(junction_511);                              //free nr 4,5,11
             currTrain->changeSpeed(currTrain->normalSpeed());                          //Move forward
         }
         else{                           
            if(dect.checkReservation(5)){                           //IF 5 is reserved
                 currTrain->Stop();
-                lcd.printf("5 is reserved");
                     
             }else{                                                          //else 5 reserved
                 switch3.switchOff();                                         //Enable switch3, reserve 4
@@ -321,7 +317,8 @@
             }
             currTrain->changeSpeed(currTrain->normalSpeed());                          //Go forward
         }         
-        break;}
+        break;
+        }
     case 7:{
         lcd.printf("At 7");        
         currTrain->changeSpeed(currTrain->normalSpeed());
@@ -336,16 +333,15 @@
         }
        else{                                                               //IF CC        if 10 is reserved stop
             if(dect.checkReservation(10)){
-                lcd.printf("10 is reserved");
                 currTrain->Stop();
             }else{                
                 switch4.switchOff();                                         //Disable switch4, reserve 10
-                vector<int> detectors(10);
-                dect.makeReservation(detectors);
+                dect.makeReservation(lane_10);
                 currTrain->changeSpeed(currTrain->slowlySpeed());                          //Go forward
             }
         }         
-        break;}
+        break;
+        }
     case 9:{
         lcd.printf("at 9");         
         if(!dect.checkReservation(8)){
@@ -358,13 +354,13 @@
             lcd.printf("8 is reserved");         
             currTrain->Stop();       
         }
-        break;}
+        break;
+        }
     case 10:{
         lcd.printf("At 10");        
 
         dect.clearReservation(C_right); //free nr 6, 7, 8, 9
         if(dect.checkReservation(12)){   //Check if 12 is reserved
-            lcd.printf("12 is reserved");
             currTrain->Stop();           //IF yes STOP
         }
         else{     
@@ -372,7 +368,8 @@
             dect.makeReservation(C_left);
             currTrain->changeSpeed(currTrain->normalSpeed());      //go forward
         }     
-        break;}
+        break;
+        }
         
     case 11:{
         lcd.printf("at 11");        
@@ -385,35 +382,40 @@
         }
         else{
             currTrain->Stop();   
-            lcd.printf("12 is reserved");    
         }                                                             
-        
         break;
-    case 12: 
+        }
+    case 12: {
         lcd.printf("at 12");        
         switch1.switchOff();               //Turn of switch1
-        int arr2 [3] = {5,10,11};
-        vector<int> detectors2(arr2, arr2 + sizeof(arr2) / sizeof(int));
-        dect.clearReservation(detectors2); //free nr 5, 10, 11
+        //int arr2 [3] = {5,10,11};
+        //vector<int> detectors2(arr2, arr2 + sizeof(arr2) / sizeof(int));
+        dect.clearReservation(lane_10); //free nr 5, 10, 11
+        dect.clearReservation(junction_511);
         currTrain->changeSpeed(currTrain->normalSpeed());                          //Move forward
         
-        break;}
+        break;
+        }
     case 13: {
         lcd.printf("at 13");
         currTrain->changeSpeed(currTrain->normalSpeed());
-        break;}
+        break;
+        }
     case 14:{
         lcd.printf("at 21");            
         currTrain->changeSpeed(currTrain->slowlySpeed());
-        break;}
+        break;
+        }
     case 15:{
         lcd.printf("at 22");
         currTrain->changeSpeed(currTrain->normalSpeed());
-        break;}
+        break;
+        }
     default:   {
         lcd.printf("Not in a valid case");
         currTrain->Stop(); 
-        break; }
+        break; 
+        }
     }
     
     mcp->_read(GPIOA);
@@ -445,11 +447,10 @@
 
 bool readSwitch(DigitalIn theSwitch){
     int val = theSwitch.read();
-    //lcd.printf("%d", val);
     if(val == 1)
-    return true;
+        return true;
     else
-    return false;
+        return false;
 }
 
 void init_mcp() {