mbed2 pre-final

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

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?

UserRevisionLine numberNew 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 }