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: HIDScope MODSERIAL QEI mbed
Fork of WearealltogetherEMGboi by
Diff: main.cpp
- Revision:
- 29:b6d7bcb26f47
- Parent:
- 28:d265c64d2bca
- Child:
- 30:492595db0fc3
diff -r d265c64d2bca -r b6d7bcb26f47 main.cpp
--- a/main.cpp Tue Nov 01 09:18:30 2016 +0000
+++ b/main.cpp Tue Nov 01 14:05:14 2016 +0000
@@ -57,6 +57,8 @@
Ticker sample_timer;
Ticker sample_timer2;
Ticker printinfo;
+Ticker checkSetpointTranslation;
+Ticker checkSetpointRotation;
HIDScope scope( 2 );
DigitalOut led(LED1);
const double a1 = -1.6475;
@@ -79,6 +81,8 @@
double lowpassFilterRight = 0;
//setpoints
+volatile float setpointRotation;
+volatile float setpointTranslation;
const double Setpoint_Translation = -200;
const double Setpoint_Back = 0;
const double Setpoint_Rotation = pi;
@@ -86,7 +90,8 @@
double M2_ControlSpeed = 0;
double SetpointError_Translation = 0;
double SetpointError_Rotation = 0;
-
+double theta_translation;
+double theta_rotation;
//booleans for control
bool booltranslate = false;
bool boolrotate = false;
@@ -220,11 +225,17 @@
return radians3;
}
-void motorRotation(double setpoint)
+void CheckErrorRotation(){
+ theta_rotation = GetRotationM3();
+ SetpointError_Rotation = setpointRotation -theta_rotation;
+}
+void CheckErrorTranslation(){
+ theta_translation = GetPositionM2();
+ SetpointError_Translation = setpointTranslation -theta_translation;
+}
+void motorRotation()
{
- double theta_rotation = GetRotationM3();
- SetpointError_Rotation = setpoint - theta_rotation;
-
+ printf("setpoint = %f \n\r", setpointRotation);
//set direction
if (SetpointError_Rotation > 0) {
M3_Rotate = 0;
@@ -242,10 +253,10 @@
boolrotate = false;
M3_Speed = M3_ControlSpeed;
}
-void motorTranslation(double setpoint)
+void motorTranslation()
{
- double theta_translation = GetPositionM2();
- SetpointError_Translation = setpoint - theta_translation;
+ theta_translation = GetPositionM2();
+ SetpointError_Translation = setpointTranslation - theta_translation;
//set direction
if (SetpointError_Translation < 0) {
@@ -267,62 +278,29 @@
}
void GoBack()
{
- motorTranslation(Setpoint_Back);
+ setpointTranslation = Setpoint_Back;
+ motorTranslation();
if (booltranslate == false) {
- motorRotation(Setpoint_Back);
+ setpointRotation = Setpoint_Back;
+ motorRotation();
}
if (boolrotate == false) {
turn = 0;
}
led_r = 1;
led_b = 0;
-
- /* while (GetPositionM2() < 0) {
- M3_Speed = 0;
- M2_Speed = 1;
- M2_Rotate = 1;
- pc.printf("rotation %f translation %f \n \r ", GetRotationM3(), GetPositionM2());
- led_r = 0;
- }
- M2_Speed = 0;
-
-
- while (GetRotationM3() > 0) {
- M3_Rotate = 1;
- M3_Speed = 0.2;
- led_r = 1;
- led_b = 0;
- pc.printf("rotation %f translation %f \n \r ", GetRotationM3(), GetPositionM2());
-
- }
- M3_Speed = 0;
-
- turn = 0; */
}
void Burgerflip()
{
led_r = 0;
led_b = 1;
- motorTranslation(Setpoint_Translation);
+ setpointTranslation = Setpoint_Translation;
+ motorTranslation();
if (booltranslate == true) {
- motorRotation(Setpoint_Rotation);
+ setpointRotation = Setpoint_Rotation;
+ motorRotation();
}
- /*
- pc.printf("get position %f, get rotation %f \n \r", GetPositionM2(), GetRotationM3());
- if (GetPositionM2()< afstand) {
- M3_Speed = 0.2;
- M3_Rotate = 0;
- M2_Speed = 0;
- } else if (GetPositionM2() > afstand) {
- M2_Speed = 1;
- M2_Rotate = 0;
-
- }
- if (GetRotationM3() > setpoint_Rotation) {
- GoBack();
- }
- */
}
void BurgerflipActie()
{
@@ -348,6 +326,8 @@
//sample_timer.attach(&sample, 0.001953125);
sample_timer2.attach(&filterSampleLeft, Ts); //512 Hz
sample_timer.attach(&filterSampleRight, Ts);
+ checkSetpointTranslation.attach(&CheckErrorTranslation,Ts);
+ checkSetpointRotation.attach(&CheckErrorRotation,Ts);
//printinfo.attach(&print, Ts);
pc.baud(115200);
pc.printf("please push the button to calibrate \n \r");
@@ -356,11 +336,11 @@
calibrate = true;
threshold_Left = lowpassFilterLeft*0.7;
threshold_Right = lowpassFilterRight*0.7;
-
}
if (calibrate == true) {
- //pc.printf("calibration complete, left = %f, right = %f \n \r", threshold_Left, threshold_Right);
- pc.printf("rotation is %f error = %f en translation = %f en de error %f \n \r", GetRotationM3(), SetpointError_Rotation, GetPositionM2(), SetpointError_Translation);
+
+ pc.printf("calibration complete, left = %f, right = %f \n \r", threshold_Left, threshold_Right);
+ //pc.printf("rotation is %f, setpoint %f, error = %f en translation = %f en de error %f \n \r", GetRotationM3(), Setpoint_Back, SetpointError_Rotation, GetPositionM2(), SetpointError_Translation);
GetDirections();
if (draairechts == true) {
M1_Speed = 0.2;
@@ -369,10 +349,6 @@
M1_Speed = 0.2;
M1_Rotate = 1;
} else if (turn == 1) {
- /*M2_Speed = 0.5;
- M2_Rotate = 1;
- M3_Speed = 0.5;
- M3_Rotate = 1;*/
BurgerflipActie();
} else if (turn == 0) {
M2_Speed = 0;
@@ -381,9 +357,6 @@
if ((draailinks == false) && (draairechts == false)) {
M1_Speed = 0;
}
- //pc.printf("rotation %f translation %f \n \r ", GetRotationM3(), GetPositionM2());
- /* pulses = 8400 */
- /*empty loop, sample() is executed periodically*/
}
}
}
\ No newline at end of file
