4 directional EMG control of the XY table. Made during my bachelor end assignment.
Dependencies: C12832_lcd HIDScope mbed-dsp mbed
Diff: main.cpp
- Revision:
- 12:5099e4897586
- Parent:
- 11:74ae4e5e11ab
diff -r 74ae4e5e11ab -r 5099e4897586 main.cpp --- a/main.cpp Tue Apr 28 12:28:53 2015 +0000 +++ b/main.cpp Tue Apr 28 14:06:44 2015 +0000 @@ -1,7 +1,7 @@ #include "mbed.h" #include "C12832_lcd.h" -#define P_GAIN 0.9999 +#define P_GAIN 0.99 DigitalOut Dir(p21); PwmOut Step(p22); @@ -12,29 +12,51 @@ C12832_LCD lcd; BusIn Joystick(p12,p13,p14,p15,p16); -DigitalIn Up(p15); -DigitalIn Down(p12); +BusIn Up(p15); +BusIn Down(p12); + +float setpoint = 2000; //Frequentie +float step_freq = 1; +float new_step_freq; + +void Omhoog () +{ + Dir = 1; + new_step_freq = ((1-P_GAIN)*setpoint) + (P_GAIN*step_freq); + step_freq = new_step_freq; + Step.period(1.0/step_freq); + wait(0.01); //Hier nog ticker inbouwen +} +void Omlaag () +{ + Dir = 0; + new_step_freq = ((1-P_GAIN)*setpoint) + (P_GAIN*step_freq); + step_freq = new_step_freq; + Step.period(1.0/step_freq); + wait(0.01); //Hier nog ticker inbouwen +} + + int main() { - float setpoint = 2000; //Frequentie - float step_freq = 1; + MS1 = 1; MS2 = 0; MS3 = 0; - int p1; + //int p1; Step.period(1./step_freq); // 1 kHz, vanaf 2,5 kHz doet de motor het niet meer. Step.write(0.5); // Duty cycle van 50% - // Dir = Pot1; // Dir 1 is naar boven, Dir 0 naar onder. + Dir = 0; // Dir 1 is naar boven, Dir 0 naar onder. + while (1) { - p1 = Pot1.read(); - Dir = Pot1; - float new_step_freq; - new_step_freq = ((1-P_GAIN)*setpoint) + (P_GAIN*step_freq); - step_freq = new_step_freq; - Step.period(1.0/step_freq); - lcd.printf("Pot1 : %d \n", p1); - wait(0.01); //Hier nog ticker inbouwen + + if (Up) + Omhoog (); + + if (Down) + Omlaag (); + } } \ No newline at end of file