Wil je hier nog je PID controler kort uitleggen? Is sneller denk ik. Rest is gedaan volgens mij. Hier zit kall in.
Dependencies: HIDScope MODSERIAL QEI biquadFilter mbed
Fork of another_try_from_scratch_on_emg by
main.cpp@2:025d9065b25f, 2016-10-21 (annotated)
- Committer:
- daniQQue
- Date:
- Fri Oct 21 12:41:47 2016 +0000
- Revision:
- 2:025d9065b25f
- Parent:
- 1:30d46f7e5150
- Child:
- 3:79b95226a608
met modserial en een filter;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
daniQQue | 0:34c739fcc3e0 | 1 | //libraries |
daniQQue | 0:34c739fcc3e0 | 2 | #include "mbed.h" |
daniQQue | 0:34c739fcc3e0 | 3 | #include "HIDScope.h" |
daniQQue | 2:025d9065b25f | 4 | #include "biquadFilter.h" |
daniQQue | 2:025d9065b25f | 5 | #include "MODSERIAL.h" |
daniQQue | 0:34c739fcc3e0 | 6 | |
daniQQue | 0:34c739fcc3e0 | 7 | //Define objects |
daniQQue | 0:34c739fcc3e0 | 8 | AnalogIn emg0( A0 ); //analog in to get EMG in to c++ |
daniQQue | 0:34c739fcc3e0 | 9 | Ticker sample_timer; //ticker |
daniQQue | 0:34c739fcc3e0 | 10 | HIDScope scope( 2); //open 3 channels in hidscope |
daniQQue | 0:34c739fcc3e0 | 11 | DigitalOut led(LED_GREEN); |
daniQQue | 2:025d9065b25f | 12 | MODSERIAL pc(USBTX,USBRX); // connection with pc |
daniQQue | 2:025d9065b25f | 13 | |
daniQQue | 0:34c739fcc3e0 | 14 | |
daniQQue | 0:34c739fcc3e0 | 15 | //define variables |
daniQQue | 0:34c739fcc3e0 | 16 | double emg_0_value; |
daniQQue | 2:025d9065b25f | 17 | biquadFilter filter(-1.1430, 0.4128, 0.6389, -1.2779, 0.6389); //initialize filter |
daniQQue | 0:34c739fcc3e0 | 18 | |
daniQQue | 0:34c739fcc3e0 | 19 | |
daniQQue | 0:34c739fcc3e0 | 20 | void filter(){ |
daniQQue | 0:34c739fcc3e0 | 21 | emg_0_value=emg0.read(); //read the emg value from the elektrodes |
daniQQue | 0:34c739fcc3e0 | 22 | led=!led; |
daniQQue | 2:025d9065b25f | 23 | emg_filter=filter.step(emg_0_value) |
daniQQue | 0:34c739fcc3e0 | 24 | //send signals to scope |
daniQQue | 1:30d46f7e5150 | 25 | scope.set(0, emg_0_value ); //set emg signal to scope in channel 1 |
daniQQue | 2:025d9065b25f | 26 | scope.set(1, emg_filter ); |
daniQQue | 0:34c739fcc3e0 | 27 | scope.send(); //send all the signals to the scope |
daniQQue | 2:025d9065b25f | 28 | |
daniQQue | 2:025d9065b25f | 29 | pc.printf("emg raw: %f, emg filter %f \r\n",emg_o_value,emg_filter); |
daniQQue | 0:34c739fcc3e0 | 30 | } |
daniQQue | 0:34c739fcc3e0 | 31 | |
daniQQue | 0:34c739fcc3e0 | 32 | //program |
daniQQue | 0:34c739fcc3e0 | 33 | |
daniQQue | 0:34c739fcc3e0 | 34 | int main() |
daniQQue | 0:34c739fcc3e0 | 35 | { |
daniQQue | 0:34c739fcc3e0 | 36 | sample_timer.attach(&filter, 0.001); //continously execute the EMG reader and filter, it ensures that filter and sampling is executed every 1/frequency seconds |
daniQQue | 2:025d9065b25f | 37 | pc.baud(115200); //connection with pc at 115200 rate |
daniQQue | 0:34c739fcc3e0 | 38 | //endless loop |
daniQQue | 0:34c739fcc3e0 | 39 | |
daniQQue | 0:34c739fcc3e0 | 40 | while(1) |
daniQQue | 0:34c739fcc3e0 | 41 | {} |
daniQQue | 0:34c739fcc3e0 | 42 | |
daniQQue | 0:34c739fcc3e0 | 43 | } |