![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Create this program
Dependencies: mbed HCSR04 HMC6352 PID TextLCD
compass.h@6:44c3bfbe2553, 2015-08-11 (annotated)
- Committer:
- KoiShin_Sakana
- Date:
- Tue Aug 11 13:11:05 2015 +0000
- Revision:
- 6:44c3bfbe2553
- Parent:
- 5:e07e380ddb93
update dribbler.h
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
KoiShin_Sakana | 2:a8bbf677e774 | 1 | /** |
KoiShin_Sakana | 2:a8bbf677e774 | 2 | * @file : compass.h (1.0) |
KoiShin_Sakana | 2:a8bbf677e774 | 3 | * @brief : measure angle |
KoiShin_Sakana | 2:a8bbf677e774 | 4 | * @author : Shinnosuke KOIKE |
KoiShin_Sakana | 2:a8bbf677e774 | 5 | * @date : 2015/08/04 |
KoiShin_Sakana | 2:a8bbf677e774 | 6 | */ |
KoiShin_Sakana | 2:a8bbf677e774 | 7 | |
KoiShin_Sakana | 1:d0cada9a5381 | 8 | #ifndef COMPASS_H |
KoiShin_Sakana | 1:d0cada9a5381 | 9 | #define COMPASS_H |
KoiShin_Sakana | 1:d0cada9a5381 | 10 | |
KoiShin_Sakana | 1:d0cada9a5381 | 11 | #include "mbed.h" |
KoiShin_Sakana | 1:d0cada9a5381 | 12 | #include "HMC6352.h" |
KoiShin_Sakana | 1:d0cada9a5381 | 13 | |
KoiShin_Sakana | 1:d0cada9a5381 | 14 | class Compass { |
KoiShin_Sakana | 2:a8bbf677e774 | 15 | public: |
KoiShin_Sakana | 2:a8bbf677e774 | 16 | Compass(PinName sda, PinName scl); |
KoiShin_Sakana | 3:901d18b901b4 | 17 | ~Compass(); |
KoiShin_Sakana | 2:a8bbf677e774 | 18 | float measureAngle(void); |
KoiShin_Sakana | 2:a8bbf677e774 | 19 | |
KoiShin_Sakana | 1:d0cada9a5381 | 20 | private: |
KoiShin_Sakana | 1:d0cada9a5381 | 21 | float initialAngle; |
KoiShin_Sakana | 1:d0cada9a5381 | 22 | HMC6352* hmc6352; |
KoiShin_Sakana | 1:d0cada9a5381 | 23 | }; |
KoiShin_Sakana | 1:d0cada9a5381 | 24 | |
KoiShin_Sakana | 2:a8bbf677e774 | 25 | // initialize and set initial angle |
KoiShin_Sakana | 1:d0cada9a5381 | 26 | Compass::Compass(PinName sda, PinName scl) { |
KoiShin_Sakana | 1:d0cada9a5381 | 27 | hmc6352 = new HMC6352(sda, scl); |
KoiShin_Sakana | 1:d0cada9a5381 | 28 | hmc6352->setOpMode(HMC6352_CONTINUOUS, 1, 20); |
KoiShin_Sakana | 1:d0cada9a5381 | 29 | wait(0.1); |
KoiShin_Sakana | 1:d0cada9a5381 | 30 | this->initialAngle = hmc6352->sample() / 10.0; |
KoiShin_Sakana | 1:d0cada9a5381 | 31 | } |
KoiShin_Sakana | 1:d0cada9a5381 | 32 | |
KoiShin_Sakana | 3:901d18b901b4 | 33 | Compass::~Compass() { |
KoiShin_Sakana | 3:901d18b901b4 | 34 | delete hmc6352; |
KoiShin_Sakana | 3:901d18b901b4 | 35 | } |
KoiShin_Sakana | 3:901d18b901b4 | 36 | |
KoiShin_Sakana | 2:a8bbf677e774 | 37 | // return difference of angle |
KoiShin_Sakana | 2:a8bbf677e774 | 38 | float Compass::measureAngle(void) { |
KoiShin_Sakana | 1:d0cada9a5381 | 39 | wait(0.1); |
KoiShin_Sakana | 2:a8bbf677e774 | 40 | float diffAngle = hmc6352->sample() / 10.0 - initialAngle; |
KoiShin_Sakana | 2:a8bbf677e774 | 41 | return diffAngle; |
KoiShin_Sakana | 1:d0cada9a5381 | 42 | } |
KoiShin_Sakana | 1:d0cada9a5381 | 43 | |
KoiShin_Sakana | 1:d0cada9a5381 | 44 | #endif |
KoiShin_Sakana | 1:d0cada9a5381 | 45 | |
KoiShin_Sakana | 2:a8bbf677e774 | 46 | /** |
KoiShin_Sakana | 1:d0cada9a5381 | 47 | * example program |
KoiShin_Sakana | 1:d0cada9a5381 | 48 | |
KoiShin_Sakana | 1:d0cada9a5381 | 49 | #include "mbed.h" |
KoiShin_Sakana | 1:d0cada9a5381 | 50 | #include "compass.h" |
KoiShin_Sakana | 1:d0cada9a5381 | 51 | |
KoiShin_Sakana | 1:d0cada9a5381 | 52 | int main(void) { |
KoiShin_Sakana | 1:d0cada9a5381 | 53 | Compass compass(D14, D15); |
KoiShin_Sakana | 1:d0cada9a5381 | 54 | while (1) { |
KoiShin_Sakana | 5:e07e380ddb93 | 55 | pc.printf("%f\r\n", compass.measureAngle()); // for example, display "130.143..." |
KoiShin_Sakana | 1:d0cada9a5381 | 56 | } |
KoiShin_Sakana | 1:d0cada9a5381 | 57 | } |
KoiShin_Sakana | 2:a8bbf677e774 | 58 | */ |