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: Encoder HIDScope MODSERIAL TextLCD mbed-dsp mbed
Revision 4:527e5b5283c2, committed 2014-10-31
- Comitter:
- DominiqueC
- Date:
- Fri Oct 31 16:52:26 2014 +0000
- Parent:
- 3:b06ada67fa4f
- Child:
- 5:5085197c02be
- Commit message:
- Eindscript nog hangend in Home case;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Oct 31 15:34:56 2014 +0000
+++ b/main.cpp Fri Oct 31 16:52:26 2014 +0000
@@ -10,16 +10,15 @@
/* -Marjolein Thijssen */
/***************************************/
#include "mbed.h"
-#include "HIDScope.h"
#include "arm_math.h"
#include "encoder.h"
#include "MODSERIAL.h"
//include "TextLCD.h"
-#define M2_PWM PTC8 //blauw
-#define M2_DIR PTC9 //groen
-#define M1_PWM PTA5 //kleine motor
-#define M1_DIR PTA4 //kleine motor
+#define M2_PWM PTC8 //kleine motor
+#define M2_DIR PTC9 //kleine motor
+#define M1_PWM PTA5 //grote motor
+#define M1_DIR PTA4 //grote motor
#define TSAMP 0.005 // Sampletijd, 200Hz
#define K_P_KM (0.01)
#define K_I_KM (0.0003 *TSAMP)
@@ -43,7 +42,6 @@
DigitalOut motordir1(M1_DIR);
AnalogIn emg0(PTB0); //Biceps
AnalogIn emg1(PTB1); //Triceps
-HIDScope scope(6);
MODSERIAL pc(USBTX,USBRX,64,1024);
@@ -183,35 +181,36 @@
max_value_biceps=0;
max_value_triceps=0;
//maximale inspanning biceps
- pc.printf("Kalibratie. 1:BICEPS MAX"); //pc scherm
- wait(1);
+ pc.printf("Kalibratie1: Span Biceps!"); //pc scherm
+ wait(5);
+ pc.printf("Meting loopt"); //pc scherm
+ tijdtimer.reset();
tijdtimer.start();
- pc.printf("Biceps meting, meting loopt"); //pc scherm
- while (tijdtimer <= 3) {
- if (envelop_emg0 > max_value_biceps);
- {
+ while (tijdtimer.read() <= 3) {
+ if (envelop_emg0 > max_value_biceps) {
max_value_biceps = envelop_emg0;
}
}
tijdtimer.stop();
tijdtimer.reset();
- pc.printf("max value %f\n\r", max_value_biceps); //pc scherm
- wait(1);
+ pc.printf("max value %f\n\r", max_value_biceps);
+ wait(5);
//maximale inspanning triceps
- pc.printf("Kalibratie. 2:TRICEPS MAX"); //pc scherm
- wait(1);
+ pc.printf("Kalibratie2: Span Triceps!"); //pc scherm
+ wait(5);
tijdtimer.start();
- pc.printf("Triceps meting, meting loopt!"); //pc scherm
- while (tijdtimer <= 3) {
+ pc.printf("Meting loopt"); //pc scherm
+ while (tijdtimer.read() <= 3) {
if (envelop_emg1 > max_value_triceps) {
max_value_triceps = envelop_emg1;
}
}
- tijdtimer.stop();
+ // tijdtimer.stop();
tijdtimer.reset();
pc.printf("max value %f\n\r", max_value_triceps);
- wait(1);
+ wait(5);
+
state = RICHTEN;
break;
}// einde kalibratie case
@@ -225,6 +224,7 @@
float kalibratiewaarde_biceps,kalibratiewaarde_triceps;
kalibratiewaarde_biceps=(envelop_emg0/max_value_biceps);
kalibratiewaarde_triceps=(envelop_emg1/max_value_triceps);
+ pc.printf("biceps %f\n\r", kalibratiewaarde_biceps); //WEGHALEN LATER
if (kalibratiewaarde_biceps > 0.3 && kalibratiewaarde_triceps <= 0.3) { //linker goal!
setpointkm = -127; //11,12graden naar links
pc.printf("links");
@@ -248,13 +248,14 @@
motordir2 = 0; //rechts
pwm_motor2.write(abs(new_pwm_km));
}
+ wait(2);
state = SLAAN;
break;
}
case SLAAN: {
- pc.printf("Slaan PingPong!"); //regel 1 LCD scherm
- pc.printf("Kies goal!"); //regel 2 LCD scherm
+ pc.printf("Slaan"); //regel 1 LCD scherm
+ pc.printf("Kies goal"); //regel 2 LCD scherm
float thetadot;
float setpointgm;
float new_pwm_gm;
@@ -263,10 +264,10 @@
wait(3);
float kalibratiewaarde_biceps;
kalibratiewaarde_biceps=(envelop_emg0/max_value_biceps);
- //pc.printf("biceps %f\n\r", kalibratiewaarde_biceps);
+ pc.printf("biceps %f\n\r", kalibratiewaarde_biceps); //WEGHALEN LATER
if (kalibratiewaarde_biceps <= 0.3) { //kalibratiewaarde_biceps<0.3 goal onderin
thetadot=THETADOT0;
- pc.printf("Onderste goal");
+ pc.printf("ONDERSTE GOAL");
} else if (kalibratiewaarde_biceps>0.3 && kalibratiewaarde_biceps<=0.6) { //0.3<kalibratiewaarde_biceps<0.6 goal midden
thetadot=THETADOT1;
pc.printf("MIDDELSTE GOAL");
@@ -276,7 +277,7 @@
}
pc.printf("Daar gaat ie!");
- // NU MOTOR 1 LATEN BEWEGEN met snelheid thetadot
+ //MOTOR 1 LATEN BEWEGEN met snelheid thetadot
tijdtimer.reset();
tijdslaan.reset();
while (tijdtimer.read() <=3) {
@@ -298,7 +299,7 @@
}
pc.printf("pos %d %f\n\r", motor1.getPosition(),setpointgm);
- //MOTOR 2 LATEN BEWEGEN NAAR setpointkm
+ //MOTOR 2 OP POSITIE HOUDEN
new_pwm_km = pidkm(setpointkm, motor2.getPosition()); //bewegen naar setpoint
clamp(&new_pwm_km, -1,1);
if(new_pwm_km < 0)
@@ -318,7 +319,7 @@
float setpointkm;
float new_pwm_km;
- // NU MOTOR 1 LATEN BEWEGEN met snelheid thetadot
+ //MOTOR 1 naar home
tijdtimer.reset();
tijdslaan.reset();
while (tijdtimer.read() <=3) {
@@ -333,7 +334,7 @@
motordir1 = 0; //rechts
pwm_motor1.write(abs(new_pwm_gm));
- //MOTOR 2 LATEN BEWEGEN NAAR setpointkm
+ //MOTOR 2 naar home
setpointkm=0;
new_pwm_km = pidkm(setpointkm, motor2.getPosition()); //bewegen naar setpoint
clamp(&new_pwm_km, -1,1);