mbed2 pre-final

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Committer:
domino5740
Date:
Mon Jun 15 17:33:23 2020 +0000
Revision:
5:7ca9ea4cde3a
Parent:
4:a8494b656292
final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
domino5740 2:7dc265489818 1 #include "servo_gui.h"
domino5740 2:7dc265489818 2
domino5740 2:7dc265489818 3 #define PI 3.14159
domino5740 2:7dc265489818 4
domino5740 2:7dc265489818 5 extern DigitalIn UserButton;
domino5740 2:7dc265489818 6
domino5740 2:7dc265489818 7 ServoGui::ServoGui(void)
domino5740 2:7dc265489818 8 {
domino5740 2:7dc265489818 9 lcd.Clear(LCD_COLOR_WHITE);
domino5740 2:7dc265489818 10 DrawServo();
domino5740 2:7dc265489818 11
domino5740 2:7dc265489818 12 lcd.SetTextColor(LCD_COLOR_BLACK);
domino5740 2:7dc265489818 13 unsigned char ucLedXpos = 55;
domino5740 2:7dc265489818 14 for(unsigned char ucLedCounter = 0; ucLedCounter < 4; ucLedCounter++) {
domino5740 2:7dc265489818 15 lcd.DrawCircle(ucLedXpos, 280, 16);
domino5740 2:7dc265489818 16 ucLedXpos += 40;
domino5740 2:7dc265489818 17 }
domino5740 2:7dc265489818 18 }
domino5740 2:7dc265489818 19
domino5740 2:7dc265489818 20 void ServoGui::LedStepRight(void) {
domino5740 2:7dc265489818 21 LedStep(RIGHT);
domino5740 2:7dc265489818 22 }
domino5740 2:7dc265489818 23
domino5740 2:7dc265489818 24 void ServoGui::LedStepLeft(void) {
domino5740 2:7dc265489818 25 LedStep(LEFT);
domino5740 2:7dc265489818 26 }
domino5740 2:7dc265489818 27
domino5740 2:7dc265489818 28 enum DetectorState ServoGui::eReadDetector(void) {
domino5740 2:7dc265489818 29 if (UserButton == 1) {
domino5740 2:7dc265489818 30 return ACTIVE;
domino5740 2:7dc265489818 31 }
domino5740 2:7dc265489818 32 else {
domino5740 2:7dc265489818 33 return INACTIVE;
domino5740 2:7dc265489818 34 }
domino5740 2:7dc265489818 35 }
domino5740 2:7dc265489818 36
domino5740 2:7dc265489818 37 void ServoGui::LedOn(unsigned char ucLedIndex) {
domino5740 2:7dc265489818 38 LedClear();
domino5740 2:7dc265489818 39 lcd.SetTextColor(LCD_COLOR_BLUE);
domino5740 2:7dc265489818 40 lcd.FillCircle(55 + (40 * ucLedIndex), 280, 15);
domino5740 2:7dc265489818 41 }
domino5740 2:7dc265489818 42
domino5740 2:7dc265489818 43 void ServoGui::LedStep(enum Direction eStepDirection) {
domino5740 2:7dc265489818 44
domino5740 2:7dc265489818 45 static unsigned int uiLedPoint = 0;
domino5740 2:7dc265489818 46
domino5740 2:7dc265489818 47 switch(eStepDirection) {
domino5740 2:7dc265489818 48 case LEFT:
domino5740 2:7dc265489818 49 uiLedPoint--;
domino5740 2:7dc265489818 50 if(uiMarkerPos == 0) {
domino5740 2:7dc265489818 51 uiMarkerPos = 359;
domino5740 2:7dc265489818 52 }
domino5740 2:7dc265489818 53 else {
domino5740 2:7dc265489818 54 uiMarkerPos--;
domino5740 2:7dc265489818 55 }
domino5740 2:7dc265489818 56 break;
domino5740 2:7dc265489818 57 case RIGHT:
domino5740 2:7dc265489818 58 uiLedPoint++;
domino5740 2:7dc265489818 59 uiMarkerPos++;
domino5740 2:7dc265489818 60 break;
domino5740 2:7dc265489818 61 }
domino5740 2:7dc265489818 62 LedOn(uiLedPoint % 4);
domino5740 2:7dc265489818 63 uiMarkerPos = uiMarkerPos % 360;
domino5740 2:7dc265489818 64 DrawServo();
domino5740 2:7dc265489818 65 DrawMarker(uiMarkerPos);
domino5740 2:7dc265489818 66 }
domino5740 2:7dc265489818 67
domino5740 2:7dc265489818 68 void ServoGui::LedClear(void)
domino5740 2:7dc265489818 69 {
domino5740 2:7dc265489818 70 lcd.SetTextColor(LCD_COLOR_WHITE);
domino5740 2:7dc265489818 71 unsigned char ucLedXpos = 55;
domino5740 2:7dc265489818 72 for(unsigned char ucLedCounter = 0; ucLedCounter < 4; ucLedCounter++) {
domino5740 2:7dc265489818 73 lcd.FillCircle(ucLedXpos, 280, 15);
domino5740 2:7dc265489818 74 ucLedXpos += 40;
domino5740 2:7dc265489818 75 }
domino5740 2:7dc265489818 76 }
domino5740 2:7dc265489818 77
domino5740 2:7dc265489818 78 void ServoGui::DrawServo(void) {
domino5740 2:7dc265489818 79 lcd.SetTextColor(LCD_COLOR_BLACK);
domino5740 2:7dc265489818 80 lcd.FillCircle(120, 120, 100);
domino5740 2:7dc265489818 81 lcd.SetTextColor(LCD_COLOR_WHITE);
domino5740 2:7dc265489818 82 lcd.FillCircle(120, 120, 20);
domino5740 2:7dc265489818 83 }
domino5740 2:7dc265489818 84
domino5740 2:7dc265489818 85 void ServoGui::DrawMarker(unsigned int uiPosition) {
domino5740 2:7dc265489818 86 lcd.SetTextColor(LCD_COLOR_WHITE);
domino5740 2:7dc265489818 87 lcd.DrawLine(120, 120, (120 + (100 * cos((uiMarkerStartPos + uiPosition) * PI / 180))), (120 + (100 * sin((uiMarkerStartPos + uiPosition) * PI / 180))));
domino5740 2:7dc265489818 88 }