succes

Dependencies:   microbit

Committer:
mk1
Date:
Sat Feb 11 15:55:34 2017 +0000
Revision:
0:c15430f1895f
succes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mk1 0:c15430f1895f 1 #ifndef _MOTOR_H_
mk1 0:c15430f1895f 2 #define _MOTOR_H_
mk1 0:c15430f1895f 3
mk1 0:c15430f1895f 4 #include "MicroBit.h"
mk1 0:c15430f1895f 5
mk1 0:c15430f1895f 6 // If you change step frequency, you will implicitly also change acceleration
mk1 0:c15430f1895f 7 // If you change acceleration, you will - wait for it - change acceleration
mk1 0:c15430f1895f 8 const float STEP_FREQUENCY = 4000; // kHz
mk1 0:c15430f1895f 9 const float STEP_PERIOD = 1.0/STEP_FREQUENCY;
mk1 0:c15430f1895f 10 const float ACCELERATION = 8;
mk1 0:c15430f1895f 11
mk1 0:c15430f1895f 12 typedef enum
mk1 0:c15430f1895f 13 {
mk1 0:c15430f1895f 14 FORWARD = 1,
mk1 0:c15430f1895f 15 REVERSE = 0
mk1 0:c15430f1895f 16 } STEP_DIRECTION;
mk1 0:c15430f1895f 17
mk1 0:c15430f1895f 18 class Motor
mk1 0:c15430f1895f 19 {
mk1 0:c15430f1895f 20 public:
mk1 0:c15430f1895f 21 Motor(MicroBit & bit);
mk1 0:c15430f1895f 22 void Step();
mk1 0:c15430f1895f 23 void SetSpeed(float targetSpeed);
mk1 0:c15430f1895f 24 float Speed();
mk1 0:c15430f1895f 25 void SetDirection(STEP_DIRECTION direction) const;
mk1 0:c15430f1895f 26
mk1 0:c15430f1895f 27 private:
mk1 0:c15430f1895f 28 MicroBit & _bit;
mk1 0:c15430f1895f 29 void SetPWMDutyCycle(int value) const;
mk1 0:c15430f1895f 30 void SetPWMPeriod(int usValue) const;
mk1 0:c15430f1895f 31
mk1 0:c15430f1895f 32 float _speed;
mk1 0:c15430f1895f 33 float _targetSpeed;
mk1 0:c15430f1895f 34 };
mk1 0:c15430f1895f 35
mk1 0:c15430f1895f 36
mk1 0:c15430f1895f 37 #endif