Example of using "Canvas" form "Graphics" library to display 3D graphics.

Dependencies:   BSP_DISCO_F746NG Graphics mbed

Revision:
2:ef3093a7a43e
Parent:
1:4a5e329e617b
--- a/HardwareAccess/Angle.cpp	Thu Nov 10 15:38:50 2016 +0000
+++ b/HardwareAccess/Angle.cpp	Fri Nov 11 15:30:07 2016 +0000
@@ -1,64 +1,80 @@
 //
 //  Angle.cpp - Calculate rotation angle. Reads the rotation angle from a potentiometer.
 //
-
 #include "Angle.h"
 
 #define FULL_ANGLE_DEG 360.0f
 
 #ifdef STM32
-    #include "mbed.h"   // for AnalogIn on STM32 environment
-    AnalogIn angleRead(A0);
-    #define MAX_ANALOG_INPUT_VALUE 1024.f
+#include "mbed.h"   // for AnalogIn on STM32 environment
+AnalogIn angleRead(A0);
+#define MAX_ANALOG_INPUT_VALUE 1024.f
 #endif
 
 #ifdef ARDUINO
-    int anglePin = 0;
-    #define MAX_ANALOG_INPUT_VALUE 1024.f
+int anglePin = 0;
+#define MAX_ANALOG_INPUT_VALUE 1024.f
 #endif
 
 
 Angle::Angle()
 {
-    angle = 0;
-    _direction = Left;
-    _delta = 1.0f;
+    // Set simulated angle as default
+    SetAngle(AngleSham, 0, DirectionLeft, 1.f);
+}
+
+
+void Angle::SetAngle(AngleType type, float initialValue, AngleDirection direction, float delta)
+{
+    _type = type;
+
+    _angle = initialValue;
+    _direction = direction;
+    _delta = delta;
 }
 
 
 float Angle::GetAngle()
 {
-    if (_direction == Left) {
-        angle += _delta;
-        if (angle > FULL_ANGLE_DEG) {
-            angle -= FULL_ANGLE_DEG;
-        }
-    }
-    else { // Right
-        angle -= _delta;
-        if (angle < 0) {
-            angle += FULL_ANGLE_DEG;
-        }
+    switch(_type) {
+        
+        case AngleReal:
+            _angle = ReadAngle();
+            break;
+            
+        case AngleSham:
+            if (_direction == DirectionLeft) {
+                _angle += _delta;
+                if (_angle > FULL_ANGLE_DEG) {
+                    _angle -= FULL_ANGLE_DEG;
+                }
+            } else { // Right
+                _angle -= _delta;
+                if (_angle < 0) {
+                    _angle += FULL_ANGLE_DEG;
+                }
+            }
+            break;
+
+        default:
+            break;
     }
 
-    return angle;
+    return _angle;
 }
 
 
 float Angle::ReadAngle()
 {
-    // Read and return the rotation angle from a potentiometer attached to pin A0
+    float angle = 0;
 
 #ifdef STM32
-    angle = angleRead;
-    return angle / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
+    angle = angleRead / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
 #endif
 
 #ifdef ARDUINO
-    angle = analogRead(anglePin);
-    return angle / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
+    angle = analogRead(anglePin) / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
 #endif
 
-    //Return simulated angle value
-    return GetAngle();
+    return angle;
 }
\ No newline at end of file