![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
2014-10-15 Arm 1 naar thuispositie. Eerste poging, fout in keep_in_range
Dependencies: Encoder MODSERIAL TextLCD mbed mbed-dsp
Diff: main.cpp
- Revision:
- 4:69540b9c0646
- Parent:
- 3:adc3052039e7
- Child:
- 5:a1dcd605dd3d
diff -r adc3052039e7 -r 69540b9c0646 main.cpp --- a/main.cpp Thu Oct 16 12:19:15 2014 +0000 +++ b/main.cpp Thu Oct 16 12:42:21 2014 +0000 @@ -6,6 +6,7 @@ //Constanten definiëren en waarde geven #define SAMPLETIME_REGELAAR 0.005 #define KP 1 +#define SAMPLETIME_EMG 0.005 //Pinverdeling en naamgeving variabelen TextLCD lcd(PTD2, PTB8, PTB9, PTB10, PTB11, PTE2); //LCD scherm @@ -17,14 +18,18 @@ PwmOut pwm_motor_arm2(PTA12); DigitalOut dir_motor_arm2(PTD3); Encoder puls_motor_arm2(PTD4, PTC8); +AnalogIn EMG_bi(PTB1); -Ticker ticker_regelaar; + +Ticker ticker_regelaar; +Ticker ticker_EMG; //Gedefinieerde datatypen en naamgeving bool rust = false; //Bool voor controleren volgorde in programma bool kalibratie_positie_arm1 = false; //Bool voor controleren volgorde in programma bool kalibratie_positie_arm2 = false; -bool kalibratie_EMG = false; //Bool voor controleren volgorde in programma +bool kalibratie_EMG_bi = false; //Bool voor controleren volgorde in programma +bool kalibratie_EMG_tri = false; char *lcd_r1 = new char[16]; //Char voor tekst op eerste regel LCD scherm char *lcd_r2 = new char[16]; //Char voor tekst op tweede regel LCD scherm @@ -34,6 +39,11 @@ regelaar_ticker_flag = true; } +volatile bool regelaar_EMG_flag; +void setregelaar_EMG_flag(){ + regelaar_EMG_flag = true; +} + void keep_in_range(float * in, float min, float max){ if (*in < min){ *in = min; @@ -61,7 +71,7 @@ pc.baud(38400); //PC baud rate is 38400 bits/seconde //Aanzetten - if (rust == false && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG == false){ + if (rust == false && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ lcd_r1 = " BMT M9 GR. 4 "; //Tekst op eerste regel van LCD scherm lcd_r2 = "Hoi! Ik ben PIPO"; //Tekst op tweede regel van LCD scherm wait(2); //Twee seconden wachten @@ -72,12 +82,12 @@ //Arm 1 naar thuispositie - if (rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG == false){ + if (rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ wait(1); //Een seconde wachten ticker_regelaar.attach(setregelaar_ticker_flag,SAMPLETIME_REGELAAR); //Ticker iedere zoveel seconde de flag op laten steken - while(rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG == false) { + while(rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false) { while(regelaar_ticker_flag != true) ; regelaar_ticker_flag = false; @@ -102,12 +112,12 @@ } //Arm 2 naar thuispositie - if (rust == true && kalibratie_positie_arm1 == true && kalibratie_positie_arm2 == false && kalibratie_EMG == false){ + if (rust == true && kalibratie_positie_arm1 == true && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ wait(1); //Een seconde wachten //ticker_regelaar.attach(setregelaar_ticker_flag,SAMPLETIME_REGELAAR); //Ticker iedere zoveel seconde de flag op laten steken - while(rust == true && kalibratie_positie_arm1 == true && kalibratie_positie_arm2 == false && kalibratie_EMG == false) { + while(rust == true && kalibratie_positie_arm1 == true && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false) { while(regelaar_ticker_flag != true) ; regelaar_ticker_flag = false; @@ -129,4 +139,15 @@ wait(1); } } + + //Ticker voor kalibratie + if (rust == true && kalibratie_positie_arm1 == true && kalibratie_positie_arm2 == true && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ + + ticker_EMG.attach(setregelaar_EMG_flag,SAMPLETIME_EMG); + pc.printf("Ticker voor kalibratie compleet"); + } + + + + } \ No newline at end of file