Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F746NG Graphics mbed
HardwareAccess/Angle.cpp@1:4a5e329e617b, 2016-11-10 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |