![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Move motor back to initial position after it has been moved
Dependencies: Encoder HIDScope QEI mbed
main.cpp@0:65ab9f79a4cc, 2015-10-19 (annotated)
- Committer:
- arunr
- Date:
- Mon Oct 19 09:31:16 2015 +0000
- Revision:
- 0:65ab9f79a4cc
Home position;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
arunr | 0:65ab9f79a4cc | 1 | #include "mbed.h" |
arunr | 0:65ab9f79a4cc | 2 | #include "encoder.h" |
arunr | 0:65ab9f79a4cc | 3 | #include "HIDScope.h" |
arunr | 0:65ab9f79a4cc | 4 | |
arunr | 0:65ab9f79a4cc | 5 | DigitalOut motor1_direction(D4); |
arunr | 0:65ab9f79a4cc | 6 | PwmOut motor1_speed(D5); |
arunr | 0:65ab9f79a4cc | 7 | PwmOut led(D9); |
arunr | 0:65ab9f79a4cc | 8 | DigitalIn button_1(PTC6); //counterclockwise |
arunr | 0:65ab9f79a4cc | 9 | DigitalIn button_2(PTA4); //clockwise |
arunr | 0:65ab9f79a4cc | 10 | Encoder motor1(D12,D13); |
arunr | 0:65ab9f79a4cc | 11 | HIDScope scope(1); |
arunr | 0:65ab9f79a4cc | 12 | |
arunr | 0:65ab9f79a4cc | 13 | |
arunr | 0:65ab9f79a4cc | 14 | const int pressed = 0; |
arunr | 0:65ab9f79a4cc | 15 | |
arunr | 0:65ab9f79a4cc | 16 | double H; |
arunr | 0:65ab9f79a4cc | 17 | double P; |
arunr | 0:65ab9f79a4cc | 18 | double D; |
arunr | 0:65ab9f79a4cc | 19 | |
arunr | 0:65ab9f79a4cc | 20 | |
arunr | 0:65ab9f79a4cc | 21 | void sethome(){ |
arunr | 0:65ab9f79a4cc | 22 | motor1.setPosition(0); |
arunr | 0:65ab9f79a4cc | 23 | H = motor1.getPosition(); |
arunr | 0:65ab9f79a4cc | 24 | } |
arunr | 0:65ab9f79a4cc | 25 | |
arunr | 0:65ab9f79a4cc | 26 | void move_motor1_ccw (){ |
arunr | 0:65ab9f79a4cc | 27 | motor1_direction = 0; |
arunr | 0:65ab9f79a4cc | 28 | motor1_speed = 0.8; |
arunr | 0:65ab9f79a4cc | 29 | } |
arunr | 0:65ab9f79a4cc | 30 | |
arunr | 0:65ab9f79a4cc | 31 | void move_motor1_cw (){ |
arunr | 0:65ab9f79a4cc | 32 | motor1_direction = 1; |
arunr | 0:65ab9f79a4cc | 33 | motor1_speed = 0.8; |
arunr | 0:65ab9f79a4cc | 34 | } |
arunr | 0:65ab9f79a4cc | 35 | |
arunr | 0:65ab9f79a4cc | 36 | void movetohome(){ |
arunr | 0:65ab9f79a4cc | 37 | P = motor1.getPosition(); |
arunr | 0:65ab9f79a4cc | 38 | D = (P - H); |
arunr | 0:65ab9f79a4cc | 39 | |
arunr | 0:65ab9f79a4cc | 40 | if (D == 0){ |
arunr | 0:65ab9f79a4cc | 41 | motor1_speed = 0; |
arunr | 0:65ab9f79a4cc | 42 | } |
arunr | 0:65ab9f79a4cc | 43 | else if (D > 0){ |
arunr | 0:65ab9f79a4cc | 44 | move_motor1_cw(); |
arunr | 0:65ab9f79a4cc | 45 | } |
arunr | 0:65ab9f79a4cc | 46 | else if (D < 0){ |
arunr | 0:65ab9f79a4cc | 47 | move_motor1_ccw(); |
arunr | 0:65ab9f79a4cc | 48 | } |
arunr | 0:65ab9f79a4cc | 49 | } |
arunr | 0:65ab9f79a4cc | 50 | |
arunr | 0:65ab9f79a4cc | 51 | void move_motor1() |
arunr | 0:65ab9f79a4cc | 52 | { |
arunr | 0:65ab9f79a4cc | 53 | if (button_1 == pressed) { |
arunr | 0:65ab9f79a4cc | 54 | move_motor1_cw (); |
arunr | 0:65ab9f79a4cc | 55 | } |
arunr | 0:65ab9f79a4cc | 56 | else if (button_2 == pressed) { |
arunr | 0:65ab9f79a4cc | 57 | move_motor1_ccw (); |
arunr | 0:65ab9f79a4cc | 58 | } |
arunr | 0:65ab9f79a4cc | 59 | else movetohome(); |
arunr | 0:65ab9f79a4cc | 60 | } |
arunr | 0:65ab9f79a4cc | 61 | |
arunr | 0:65ab9f79a4cc | 62 | void read_encoder1 () // aflezen van encoder via hidscope?? |
arunr | 0:65ab9f79a4cc | 63 | { |
arunr | 0:65ab9f79a4cc | 64 | scope.set(0,motor1.getPosition()); |
arunr | 0:65ab9f79a4cc | 65 | led.write(motor1.getPosition()/100.0); |
arunr | 0:65ab9f79a4cc | 66 | scope.send(); |
arunr | 0:65ab9f79a4cc | 67 | wait(0.2f); |
arunr | 0:65ab9f79a4cc | 68 | } |
arunr | 0:65ab9f79a4cc | 69 | |
arunr | 0:65ab9f79a4cc | 70 | int main() |
arunr | 0:65ab9f79a4cc | 71 | { |
arunr | 0:65ab9f79a4cc | 72 | |
arunr | 0:65ab9f79a4cc | 73 | sethome(); |
arunr | 0:65ab9f79a4cc | 74 | while (true) { |
arunr | 0:65ab9f79a4cc | 75 | read_encoder1(); |
arunr | 0:65ab9f79a4cc | 76 | move_motor1(); |
arunr | 0:65ab9f79a4cc | 77 | } |
arunr | 0:65ab9f79a4cc | 78 | } |