Miroslaw K. / Mbed 2 deprecated 3DDemo

Dependencies:   BSP_DISCO_F746NG Graphics mbed

Committer:
karpent
Date:
Thu Nov 10 15:38:50 2016 +0000
Revision:
1:4a5e329e617b
Parent:
0:8acbce46eede
Child:
2:ef3093a7a43e
New models added - Cube and Sphere

Who changed what in which revision?

UserRevisionLine numberNew contents of line
karpent 0:8acbce46eede 1 //
karpent 1:4a5e329e617b 2 // Angle.cpp - Calculate rotation angle. Reads the rotation angle from a potentiometer.
karpent 0:8acbce46eede 3 //
karpent 0:8acbce46eede 4
karpent 0:8acbce46eede 5 #include "Angle.h"
karpent 0:8acbce46eede 6
karpent 1:4a5e329e617b 7 #define FULL_ANGLE_DEG 360.0f
karpent 1:4a5e329e617b 8
karpent 1:4a5e329e617b 9 #ifdef STM32
karpent 1:4a5e329e617b 10 #include "mbed.h" // for AnalogIn on STM32 environment
karpent 1:4a5e329e617b 11 AnalogIn angleRead(A0);
karpent 1:4a5e329e617b 12 #define MAX_ANALOG_INPUT_VALUE 1024.f
karpent 1:4a5e329e617b 13 #endif
karpent 1:4a5e329e617b 14
karpent 0:8acbce46eede 15 #ifdef ARDUINO
karpent 1:4a5e329e617b 16 int anglePin = 0;
karpent 1:4a5e329e617b 17 #define MAX_ANALOG_INPUT_VALUE 1024.f
karpent 0:8acbce46eede 18 #endif
karpent 0:8acbce46eede 19
karpent 1:4a5e329e617b 20
karpent 0:8acbce46eede 21 Angle::Angle()
karpent 0:8acbce46eede 22 {
karpent 0:8acbce46eede 23 angle = 0;
karpent 1:4a5e329e617b 24 _direction = Left;
karpent 1:4a5e329e617b 25 _delta = 1.0f;
karpent 0:8acbce46eede 26 }
karpent 0:8acbce46eede 27
karpent 1:4a5e329e617b 28
karpent 0:8acbce46eede 29 float Angle::GetAngle()
karpent 0:8acbce46eede 30 {
karpent 1:4a5e329e617b 31 if (_direction == Left) {
karpent 1:4a5e329e617b 32 angle += _delta;
karpent 1:4a5e329e617b 33 if (angle > FULL_ANGLE_DEG) {
karpent 1:4a5e329e617b 34 angle -= FULL_ANGLE_DEG;
karpent 0:8acbce46eede 35 }
karpent 0:8acbce46eede 36 }
karpent 1:4a5e329e617b 37 else { // Right
karpent 1:4a5e329e617b 38 angle -= _delta;
karpent 1:4a5e329e617b 39 if (angle < 0) {
karpent 1:4a5e329e617b 40 angle += FULL_ANGLE_DEG;
karpent 1:4a5e329e617b 41 }
karpent 1:4a5e329e617b 42 }
karpent 1:4a5e329e617b 43
karpent 0:8acbce46eede 44 return angle;
karpent 0:8acbce46eede 45 }
karpent 0:8acbce46eede 46
karpent 1:4a5e329e617b 47
karpent 0:8acbce46eede 48 float Angle::ReadAngle()
karpent 0:8acbce46eede 49 {
karpent 1:4a5e329e617b 50 // Read and return the rotation angle from a potentiometer attached to pin A0
karpent 1:4a5e329e617b 51
karpent 1:4a5e329e617b 52 #ifdef STM32
karpent 1:4a5e329e617b 53 angle = angleRead;
karpent 1:4a5e329e617b 54 return angle / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
karpent 1:4a5e329e617b 55 #endif
karpent 1:4a5e329e617b 56
karpent 0:8acbce46eede 57 #ifdef ARDUINO
karpent 0:8acbce46eede 58 angle = analogRead(anglePin);
karpent 1:4a5e329e617b 59 return angle / MAX_ANALOG_INPUT_VALUE * FULL_ANGLE;
karpent 0:8acbce46eede 60 #endif
karpent 0:8acbce46eede 61
karpent 1:4a5e329e617b 62 //Return simulated angle value
karpent 1:4a5e329e617b 63 return GetAngle();
karpent 0:8acbce46eede 64 }