
mbed2 pre-final
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
servo_gui.cpp
- Committer:
- domino5740
- Date:
- 2020-06-15
- Revision:
- 5:7ca9ea4cde3a
- Parent:
- 4:a8494b656292
File content as of revision 5:7ca9ea4cde3a:
#include "servo_gui.h" #define PI 3.14159 extern DigitalIn UserButton; ServoGui::ServoGui(void) { lcd.Clear(LCD_COLOR_WHITE); DrawServo(); lcd.SetTextColor(LCD_COLOR_BLACK); unsigned char ucLedXpos = 55; for(unsigned char ucLedCounter = 0; ucLedCounter < 4; ucLedCounter++) { lcd.DrawCircle(ucLedXpos, 280, 16); ucLedXpos += 40; } } void ServoGui::LedStepRight(void) { LedStep(RIGHT); } void ServoGui::LedStepLeft(void) { LedStep(LEFT); } enum DetectorState ServoGui::eReadDetector(void) { if (UserButton == 1) { return ACTIVE; } else { return INACTIVE; } } void ServoGui::LedOn(unsigned char ucLedIndex) { LedClear(); lcd.SetTextColor(LCD_COLOR_BLUE); lcd.FillCircle(55 + (40 * ucLedIndex), 280, 15); } void ServoGui::LedStep(enum Direction eStepDirection) { static unsigned int uiLedPoint = 0; switch(eStepDirection) { case LEFT: uiLedPoint--; if(uiMarkerPos == 0) { uiMarkerPos = 359; } else { uiMarkerPos--; } break; case RIGHT: uiLedPoint++; uiMarkerPos++; break; } LedOn(uiLedPoint % 4); uiMarkerPos = uiMarkerPos % 360; DrawServo(); DrawMarker(uiMarkerPos); } void ServoGui::LedClear(void) { lcd.SetTextColor(LCD_COLOR_WHITE); unsigned char ucLedXpos = 55; for(unsigned char ucLedCounter = 0; ucLedCounter < 4; ucLedCounter++) { lcd.FillCircle(ucLedXpos, 280, 15); ucLedXpos += 40; } } void ServoGui::DrawServo(void) { lcd.SetTextColor(LCD_COLOR_BLACK); lcd.FillCircle(120, 120, 100); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.FillCircle(120, 120, 20); } void ServoGui::DrawMarker(unsigned int uiPosition) { lcd.SetTextColor(LCD_COLOR_WHITE); lcd.DrawLine(120, 120, (120 + (100 * cos((uiMarkerStartPos + uiPosition) * PI / 180))), (120 + (100 * sin((uiMarkerStartPos + uiPosition) * PI / 180)))); }