Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of final_code_v1 by
Revision 5:6570a35b5e57, committed 2018-01-12
- 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);
