added emg to milestone 1 but not completely working yet
Dependencies: HIDScope MODSERIAL mbed
Fork of Milestone_1 by
main.cpp@3:f00ddd66fe39, 2018-09-28 (annotated)
- Committer:
- CasperK
- Date:
- Fri Sep 28 11:33:57 2018 +0000
- Revision:
- 3:f00ddd66fe39
- Parent:
- 2:735ca8577f31
- Child:
- 4:fe0b7e7b1de9
Changing direction by potmeter of motor (working version)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
CasperK | 0:9922b502cbc3 | 1 | #include "mbed.h" |
CasperK | 0:9922b502cbc3 | 2 | #include "MODSERIAL.h" |
CasperK | 0:9922b502cbc3 | 3 | #include "HIDScope.h" |
CasperK | 0:9922b502cbc3 | 4 | |
CasperK | 0:9922b502cbc3 | 5 | PwmOut pwmpin(D6); |
CasperK | 0:9922b502cbc3 | 6 | PwmOut led(D10); |
CasperK | 0:9922b502cbc3 | 7 | AnalogIn potmeter(A5); |
CasperK | 0:9922b502cbc3 | 8 | DigitalIn button(D2); |
CasperK | 3:f00ddd66fe39 | 9 | DigitalOut directionpin(D7); |
CasperK | 3:f00ddd66fe39 | 10 | MODSERIAL pc(USBTX, USBRX); |
CasperK | 0:9922b502cbc3 | 11 | |
CasperK | 0:9922b502cbc3 | 12 | HIDScope scope(2); |
CasperK | 0:9922b502cbc3 | 13 | Ticker ticker; |
CasperK | 2:735ca8577f31 | 14 | enum states{forward, stop, backwards}; |
CasperK | 2:735ca8577f31 | 15 | states CurrentState; |
CasperK | 0:9922b502cbc3 | 16 | |
CasperK | 0:9922b502cbc3 | 17 | volatile float x; |
CasperK | 0:9922b502cbc3 | 18 | volatile float y; |
CasperK | 3:f00ddd66fe39 | 19 | volatile float scaled_potmeter; |
CasperK | 3:f00ddd66fe39 | 20 | volatile float c; |
CasperK | 0:9922b502cbc3 | 21 | |
CasperK | 0:9922b502cbc3 | 22 | void sendData() { |
CasperK | 0:9922b502cbc3 | 23 | scope.set(0,potmeter); //set the potmeter data to the first scope |
CasperK | 1:aa505856416d | 24 | scope.set(1,x); |
CasperK | 1:aa505856416d | 25 | scope.send(); //send the datapoints of the 2 motors |
CasperK | 0:9922b502cbc3 | 26 | } |
CasperK | 0:9922b502cbc3 | 27 | |
CasperK | 3:f00ddd66fe39 | 28 | void Proces_states(void){ |
CasperK | 3:f00ddd66fe39 | 29 | switch (CurrentState){ |
CasperK | 3:f00ddd66fe39 | 30 | case forward: |
CasperK | 3:f00ddd66fe39 | 31 | directionpin = 1; |
CasperK | 3:f00ddd66fe39 | 32 | pwmpin.write(scaled_potmeter); //pwm of motor is potmeter value |
CasperK | 3:f00ddd66fe39 | 33 | led.write(scaled_potmeter); //led is potmeter value |
CasperK | 3:f00ddd66fe39 | 34 | break; |
CasperK | 3:f00ddd66fe39 | 35 | case stop: |
CasperK | 3:f00ddd66fe39 | 36 | // do nothing |
CasperK | 3:f00ddd66fe39 | 37 | break; |
CasperK | 3:f00ddd66fe39 | 38 | case backwards: |
CasperK | 3:f00ddd66fe39 | 39 | directionpin = 0; |
CasperK | 3:f00ddd66fe39 | 40 | c = scaled_potmeter*-1; |
CasperK | 3:f00ddd66fe39 | 41 | pwmpin.write(c); //pwm of motor is potmeter value |
CasperK | 3:f00ddd66fe39 | 42 | led.write(c); //led is potmeter value |
CasperK | 3:f00ddd66fe39 | 43 | break; |
CasperK | 3:f00ddd66fe39 | 44 | } |
CasperK | 3:f00ddd66fe39 | 45 | } |
CasperK | 3:f00ddd66fe39 | 46 | |
CasperK | 2:735ca8577f31 | 47 | int main() { |
CasperK | 1:aa505856416d | 48 | x = 1; //placeholder value for potmeter of second motor |
CasperK | 0:9922b502cbc3 | 49 | |
CasperK | 1:aa505856416d | 50 | pwmpin.period_us(60); //60 microseconds PWM period, 16.7 kHz |
CasperK | 1:aa505856416d | 51 | led.period_us(60); //60 microseconds |
CasperK | 1:aa505856416d | 52 | ticker.attach(&sendData, 0.005f); //send data to hidscope at 200Hz |
CasperK | 0:9922b502cbc3 | 53 | |
CasperK | 3:f00ddd66fe39 | 54 | while (true) { |
CasperK | 3:f00ddd66fe39 | 55 | scaled_potmeter = (potmeter*2)-1; //scale potmeter from 0-1 to (-1 to 1) |
CasperK | 3:f00ddd66fe39 | 56 | |
CasperK | 3:f00ddd66fe39 | 57 | if (scaled_potmeter > 0) { |
CasperK | 3:f00ddd66fe39 | 58 | CurrentState = forward; |
CasperK | 3:f00ddd66fe39 | 59 | pc.printf("state = forward\r\n"); |
CasperK | 3:f00ddd66fe39 | 60 | Proces_states(); |
CasperK | 3:f00ddd66fe39 | 61 | } |
CasperK | 3:f00ddd66fe39 | 62 | if (scaled_potmeter == 0) { |
CasperK | 3:f00ddd66fe39 | 63 | CurrentState = stop; |
CasperK | 3:f00ddd66fe39 | 64 | pc.printf("state = stop\r\n"); |
CasperK | 3:f00ddd66fe39 | 65 | Proces_states(); |
CasperK | 3:f00ddd66fe39 | 66 | } |
CasperK | 3:f00ddd66fe39 | 67 | if (scaled_potmeter < 0) { |
CasperK | 3:f00ddd66fe39 | 68 | CurrentState = backwards; |
CasperK | 3:f00ddd66fe39 | 69 | pc.printf("state = backwards\r\n"); |
CasperK | 3:f00ddd66fe39 | 70 | Proces_states(); |
CasperK | 3:f00ddd66fe39 | 71 | } |
CasperK | 3:f00ddd66fe39 | 72 | wait(0.2f); |
CasperK | 0:9922b502cbc3 | 73 | } |
CasperK | 2:735ca8577f31 | 74 | } |
CasperK | 2:735ca8577f31 | 75 | |
CasperK | 2:735ca8577f31 | 76 |