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: FastPWM HIDScope MODSERIAL QEI mbed biquadFilter
Fork of deelPID by
Revision 8:fa268d163bbd, committed 2018-11-03
- Comitter:
- laurencebr
- Date:
- Sat Nov 03 09:51:42 2018 +0000
- Parent:
- 7:de221f894d3b
- Commit message:
- Final version voor presentatie
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Nov 02 08:15:25 2018 +0000
+++ b/main.cpp Sat Nov 03 09:51:42 2018 +0000
@@ -1,18 +1,19 @@
#include "mbed.h"
#include "FastPWM.h"
-#include "MODSERIAL.h"
+//#include "MODSERIAL.h"
#include "QEI.h"
-#include "HIDScope.h"
+//#include "HIDScope.h"
#include "BiQuad.h"
DigitalIn ButtonCal(D2); //Button 1
+DigitalIn ButtonDemo(D1);; //Button 2
DigitalOut gpo(D0);
DigitalOut ledred(LED_RED);
DigitalOut ledblue(LED_BLUE);
DigitalOut ledgreen(LED_GREEN);
-AnalogIn pot1(A4); //POORTEN VERANDEREN
+//AnalogIn pot1(A4); //POORTEN VERANDEREN
//AnalogIn pot2(A3); //Beneden is I control op 0 gezet. //POORTEN veranderen
-AnalogIn pot3(A5); //POORTEN VERANDEREN
+//AnalogIn pot3(A5); //POORTEN VERANDEREN
QEI encoder1(D10, D11, NC, 32);
QEI encoder2(D12, D13, NC, 32);
FastPWM Motor1PWM(D6);
@@ -21,23 +22,24 @@
DigitalOut Motor2Direction(D4);
//EMG
-/*
+
AnalogIn a0(A0);
AnalogIn a1(A1);
AnalogIn a2(A2);
AnalogIn a3(A3);
-*/
+
-AnalogIn Ppot(A0);
+/*AnalogIn Ppot(A0);
AnalogIn Ipot(A1);
AnalogIn Dpot(A2);
+*/
-MODSERIAL pc(USBTX, USBRX);
+//MODSERIAL pc(USBTX, USBRX);
//HIDSCOPE //Oppassen waar we HIDSCOPE aanroepen want nu voor meerdere dingen
-HIDScope scope(6);
-Ticker scopeTimer;
+//HIDScope scope(6);
+//Ticker scopeTimer;
Ticker EMGTicker;
@@ -126,7 +128,7 @@
//States
enum states {WaitModusState, EMGCalibrationState, NormalOperatingModusState, DemoModusState};
-states State = DemoModusState;
+states State = WaitModusState;
//Calibration Time
@@ -138,12 +140,11 @@
void ReadEMG()
{
-/*
EMGdata1 = a0.read(); // store values in the scope
EMGdata2 = a1.read();
EMGdata3 = a2.read();
EMGdata4 = a3.read();
-*/
+
}
// EMG High pass filters
@@ -270,19 +271,19 @@
}
- scope.set(0, EMG_filt1);
+/* scope.set(0, EMG_filt1);
scope.set(1, EMG_filt2);
scope.set(2, unit_vX);
scope.set(3, EMG_filt3);
scope.set(4, EMG_filt4);
scope.set(5, unit_vY);
-
+ */
count++;
if (count == 100)
{
- pc.printf("xRef = %1f, yRef = %1f, q2Ref = %1f, q1Ref = %1f \n\r", xRef, yRef, q2Ref, q1Ref);
+ //pc.printf("xRef = %1f, yRef = %1f, q2Ref = %1f, q1Ref = %1f \n\r", xRef, yRef, q2Ref, q1Ref);
count = 0;
}
}
@@ -573,7 +574,7 @@
EMGCalibration();
countcalibration++;
- pc.printf("countcal = %i", countcalibration);
+ //pc.printf("countcal = %i", countcalibration);
if (countcalibration >= (int)(CalibrationTime*1.0/TickerPeriod))
{
State = NormalOperatingModusState;
@@ -585,15 +586,16 @@
void DemoModus() // The ticker should call this function (in the switch statement)
{
- GainP1 = 40.0;//Ppot.read()*100.0;
+ /*GainP1 = 40.0;//Ppot.read()*100.0;
GainI1 = 17.0;//Ipot.read()*20.0;
GainD1 = 2.0;//Dpot.read()*20.0;
GainP2 = Ppot.read()*100.0;
GainI2 = Ipot.read()*20.0;
GainD2 = Dpot.read()*20.0;
+ */
- //DemonstrationPath();
- TestPath();
+ DemonstrationPath();
+ //TestPath();
inverse();
ReadCurrentPosition();
UpdateError();
@@ -608,7 +610,7 @@
count++;
if (count ==400)
{
- pc.printf("GainP = %lf, GainI = %lf, GainD = %lf, q1Pos = %lf, q2Pos = %lf, q1Ref = %lf, q2Ref = %lf, xRef = %lf, yRef = %lf \n\r", GainP2, GainI2, GainD2, q1Pos, q2Pos, q1Ref, q2Ref, xRef, yRef);
+ //pc.printf("GainP = %lf, GainI = %lf, GainD = %lf, q1Pos = %lf, q2Pos = %lf, q1Ref = %lf, q2Ref = %lf, xRef = %lf, yRef = %lf \n\r", GainP2, GainI2, GainD2, q1Pos, q2Pos, q1Ref, q2Ref, xRef, yRef);
count = 0;
}
}
@@ -659,14 +661,24 @@
if (ButtonCal.read() == 0)
{
CalibrationButton();
- pc.printf("print iets");
+ // pc.printf("print iets");
+ Motor1PWM.write(0.0);
+ Motor2PWM.write(0.0);
+ }
+ if (ButtonDemo.read() == 0)
+ {
+ State = DemoModusState;
+
+ ledred = 1;
+ ledgreen = 0;
+ ledblue = 0;
}
switch(State)
{
case WaitModusState: //aanmaken
EMG();
- pc.printf("Wait \n\r");
+ // pc.printf("Wait \n\r");
break;
case EMGCalibrationState:
CalibrationModus();
@@ -682,13 +694,14 @@
break;
default :
}
+
}
int main()
{
- pc.baud(115200);
+ //pc.baud(115200);
/*
GainP1 = pot3.read() * 10;
@@ -696,9 +709,9 @@
GainD1 = pot1.read();
*/
- pc.printf("GainP = %lf, GainI = %lf, GainP = %lf, nog 10 seconden \n\r", GainP1, GainI1, GainD1);
+ //pc.printf("GainP = %lf, GainI = %lf, GainP = %lf, nog 10 seconden \n\r", GainP1, GainI1, GainD1);
wait(7.0);
- pc.printf("nog 3 seconden \n\r");
+ //pc.printf("nog 3 seconden \n\r");
wait(3.0);
@@ -715,8 +728,8 @@
}
double frequency_pwm = 16700.0; //16.7 kHz PWM
- Motor1PWM.period_us(1.0/frequency_pwm); // T = 1/f
- Motor2PWM.period_us(1.0/frequency_pwm); // T = 1/f
+ Motor1PWM.period(1.0/frequency_pwm); // T = 1/f
+ Motor2PWM.period(1.0/frequency_pwm); // T = 1/f
//Emg Calibratie button
//ButtonCal.fall(&CalibrationButton);
@@ -728,7 +741,7 @@
//Onderstaande stond in EMG deel, kijken hoe en wat met tickers!!
// Attach the HIDScope::send method from the scope object to the timer at 50Hz
- scopeTimer.attach_us(&scope, &HIDScope::send, 5e3);
+ //scopeTimer.attach_us(&scope, &HIDScope::send, 5e3);
//EMGTicker.attach_us(EMG_filtering, 5e3);
//.
