This version does not work on my pc however it should work if i look at all the data send to hidscope and de led which does it correct. We should tray another pc because my pc does give still some errors on the libaries
Dependencies: HIDScope MODSERIAL mbed
Fork of Milestone_1_Motor_DualDirection_potmeter_v2 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 |