
mbed2 pre-final
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
servo.cpp@2:7dc265489818, 2020-06-14 (annotated)
- Committer:
- domino5740
- Date:
- Sun Jun 14 11:13:56 2020 +0000
- Revision:
- 2:7dc265489818
- Parent:
- 1:be03cac9fe74
- Child:
- 3:404526e83702
pre-finala
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
domino5740 | 1:be03cac9fe74 | 1 | #include "servo.h" |
domino5740 | 2:7dc265489818 | 2 | |
domino5740 | 2:7dc265489818 | 3 | #define SERVO_FREQUENCY 80 |
domino5740 | 1:be03cac9fe74 | 4 | |
domino5740 | 2:7dc265489818 | 5 | Servo::Servo(void) { |
domino5740 | 2:7dc265489818 | 6 | |
domino5740 | 2:7dc265489818 | 7 | MyServoGui.uiMarkerPos = 0; |
domino5740 | 2:7dc265489818 | 8 | uiDesiredPosition = 0; |
domino5740 | 2:7dc265489818 | 9 | uiCurrentPosition = 0; |
domino5740 | 2:7dc265489818 | 10 | Callib(); |
domino5740 | 2:7dc265489818 | 11 | |
domino5740 | 1:be03cac9fe74 | 12 | } |
domino5740 | 1:be03cac9fe74 | 13 | |
domino5740 | 2:7dc265489818 | 14 | void Servo::GoTo(unsigned int uiPosition) { |
domino5740 | 2:7dc265489818 | 15 | uiDesiredPosition = uiPosition % 360; |
domino5740 | 2:7dc265489818 | 16 | eState = IN_PROGRESS; |
domino5740 | 2:7dc265489818 | 17 | while(eState != IDLE) { |
domino5740 | 2:7dc265489818 | 18 | // wait(1/SERVO_FREQUENCY); |
domino5740 | 2:7dc265489818 | 19 | Automat(); |
domino5740 | 2:7dc265489818 | 20 | } |
domino5740 | 1:be03cac9fe74 | 21 | } |
domino5740 | 1:be03cac9fe74 | 22 | |
domino5740 | 2:7dc265489818 | 23 | void Servo::Callib(void) { |
domino5740 | 2:7dc265489818 | 24 | eState = CALLIB; |
domino5740 | 2:7dc265489818 | 25 | while(eState != IDLE) { |
domino5740 | 2:7dc265489818 | 26 | // wait(1/SERVO_FREQUENCY); |
domino5740 | 2:7dc265489818 | 27 | Automat(); |
domino5740 | 2:7dc265489818 | 28 | } |
domino5740 | 2:7dc265489818 | 29 | MyServoGui.uiMarkerStartPos = MyServoGui.uiMarkerPos; |
domino5740 | 2:7dc265489818 | 30 | MyServoGui.uiMarkerPos = 0; |
domino5740 | 2:7dc265489818 | 31 | uiCurrentPosition = 0; |
domino5740 | 2:7dc265489818 | 32 | uiDesiredPosition = 0; |
domino5740 | 1:be03cac9fe74 | 33 | } |
domino5740 | 1:be03cac9fe74 | 34 | |
domino5740 | 2:7dc265489818 | 35 | void Servo::Automat(void) { |
domino5740 | 2:7dc265489818 | 36 | uiCurrentPosition = MyServoGui.uiMarkerPos; |
domino5740 | 2:7dc265489818 | 37 | switch(eState) { |
domino5740 | 1:be03cac9fe74 | 38 | case IN_PROGRESS: |
domino5740 | 1:be03cac9fe74 | 39 | if(uiCurrentPosition < uiDesiredPosition) { |
domino5740 | 2:7dc265489818 | 40 | MyServoGui.LedStepRight(); |
domino5740 | 2:7dc265489818 | 41 | eState = IN_PROGRESS; |
domino5740 | 1:be03cac9fe74 | 42 | } |
domino5740 | 1:be03cac9fe74 | 43 | else if(uiCurrentPosition > uiDesiredPosition){ |
domino5740 | 2:7dc265489818 | 44 | MyServoGui.LedStepLeft(); |
domino5740 | 2:7dc265489818 | 45 | eState = IN_PROGRESS; |
domino5740 | 1:be03cac9fe74 | 46 | } |
domino5740 | 1:be03cac9fe74 | 47 | else { |
domino5740 | 1:be03cac9fe74 | 48 | eState = IDLE; |
domino5740 | 1:be03cac9fe74 | 49 | } |
domino5740 | 1:be03cac9fe74 | 50 | break; |
domino5740 | 1:be03cac9fe74 | 51 | case IDLE: |
domino5740 | 1:be03cac9fe74 | 52 | if (uiCurrentPosition != uiDesiredPosition) { |
domino5740 | 1:be03cac9fe74 | 53 | eState = IN_PROGRESS; |
domino5740 | 1:be03cac9fe74 | 54 | } |
domino5740 | 2:7dc265489818 | 55 | else { |
domino5740 | 2:7dc265489818 | 56 | eState = IDLE; |
domino5740 | 2:7dc265489818 | 57 | } |
domino5740 | 1:be03cac9fe74 | 58 | break; |
domino5740 | 1:be03cac9fe74 | 59 | case CALLIB: |
domino5740 | 2:7dc265489818 | 60 | if(MyServoGui.eReadDetector() == ACTIVE) { |
domino5740 | 1:be03cac9fe74 | 61 | eState = IDLE; |
domino5740 | 1:be03cac9fe74 | 62 | } |
domino5740 | 1:be03cac9fe74 | 63 | else { |
domino5740 | 2:7dc265489818 | 64 | MyServoGui.LedStepLeft(); |
domino5740 | 2:7dc265489818 | 65 | eState = CALLIB; |
domino5740 | 1:be03cac9fe74 | 66 | } |
domino5740 | 1:be03cac9fe74 | 67 | break; |
domino5740 | 1:be03cac9fe74 | 68 | } |
domino5740 | 1:be03cac9fe74 | 69 | } |