Formula Student / Mbed 2 deprecated final_code_v1

Dependencies:   mbed

Fork of final_code_v1 by wouter koenene

Files at this revision

API Documentation at this revision

Comitter:
wouterkoenen
Date:
Fri Jan 12 10:57:25 2018 +0000
Parent:
4:c154ba84b582
Commit message:
final

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Dec 06 09:46:46 2017 +0000
+++ b/main.cpp	Fri Jan 12 10:57:25 2018 +0000
@@ -13,7 +13,8 @@
 DigitalIn safety(PB_1);
 DigitalOut buzzer(PB_0);
 
-AnalogIn analog_value(PA_0);
+AnalogIn analog_value(PA_1);
+AnalogIn analog_steer(PA_0);
 
  
 /* Structures to help pack and unpack the 8 CAN data bytes */
@@ -33,8 +34,12 @@
     bytes_64 bytes;
 } data_packed;
  
-int send_id = 513;     
-data_packed send_data;
+int ID_left = 0x0500;
+int ID_right = 0x0600;
+ 
+//int send_id = 513;     
+data_packed send_dataL;
+data_packed send_dataR;
 int reg = 0x31;                                                                                                   //Id motorcontroller   0x201 -> 513                                                                                                               //Voor moving average te berekenen
     
     
@@ -44,39 +49,65 @@
 }
 
 
-void MOTOR_Calculate_Power(int speed)
+void MOTOR_Calculate_Power(int speedL, int speedR)
 {
    
-    send_data.data = (speed << 8) + reg;                                                                       //shiften en optellen
-    can.write(CANMessage(send_id, (char*) &send_data, 3));
+    send_dataL.data = (speedL << 8) + reg;   
+    send_dataR.data = (speedR << 8) + reg;                                                                        //shiften en optellen
+    can.write(CANMessage(ID_left, (char*) &send_dataL, 3));
+    can.write(CANMessage(ID_right, (char*) &send_dataR, 3));
 }
  
 int main() {
     
     printf("\r\n---Start---\r\n");
  
-    data_packed send_data;                                                                                                  //struct for send message
+    //data_packed send_data;                                                                                                  //struct for send message
     data_packed receive_data;                                                                                               //struct for rcv message
     CANMessage msg;                                                                                                         //message object for rcv
-    int send_id = 513;                                                                                                      //Id motorcontroller   0x201 -> 513                                                                                                               //Voor moving average te berekenen
+    //int send_id = 513;                                                                                                      //Id motorcontroller   0x201 -> 513                                                                                                               //Voor moving average te berekenen
     canEN = 0;                                                                                                              //Voor de tranceiver
     
     //send_data.data = 0x0CCD31;                                                                                            //0CCD snelheid motor, 31 register in controller.             WERKT
-    send_data.data = 0;
+    send_dataL.data = 0;
+    send_dataR.data = 0;
     can.frequency(1000000);                                                                                                 //1m freq
     can.mode(CAN::LocalTest);
     //can.mode(CAN::Normal);                                                                                                //1vd2 comment
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-    int speed = 0;                                                                                                          //Snelheid naar de motor
+    int speedL = 0;                                                                                                         //Snelheid naar de motor
+    int speedR = 0;
     int reg = 0x31;                                                                                                         //register in de controller
     float meas_r;
+    float steerPerL = 100;
+    float steerPerR = 100;
+    float steerVal;
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    buzzer = 1;
+    wait(2);
+    buzzer = 0;
+    
     while (true) {
-        meas_r = analog_value.read() * 100;
-        speed = map(meas_r, 0, 100, 0, 0x7FFF);                                                                             //waarde schommelt niet
+        steerVal = analog_steer.read()* 100;
+        if( steerVal < 47 ){                                                                                                //stuurwaarde berekenen begin
+            steerPerL = 25 + ((steerVal + 3) * 1.5 );
+            steerPerR = 100;
+        }
+        else if ( steerVal >= 47 && steerVal <= 53 ){
+            steerPerL = 100;
+            steerPerR = 100;
+        }
+        else if ( steerVal > 53 ){
+            steerPerL = 100;
+            steerPerR = 175 - ((steerVal - 3) * 1.5 ); 
+        }                                                                                                                   //Stuurwaarde berekenen einde
         
-               
-        MOTOR_Calculate_Power(speed);
+        meas_r = (analog_value.read() * 100) ;
+        
+        speedL = map(meas_r * (steerPerL / 100), 0, 100, 0, 0x7FFF);
+        speedR = map(meas_r * (steerPerR / 100), 0, 100, 0, 0x7FFF);                                                        //waarde schommelt niet
+              
+        MOTOR_Calculate_Power(speedL, speedR);