diff options
author | neoraider <devnull@localhost> | 2007-04-13 19:58:03 +0200 |
---|---|---|
committer | neoraider <devnull@localhost> | 2007-04-13 19:58:03 +0200 |
commit | 7da669b97ec71f138c74d562b8a3b219d3f98a50 (patch) | |
tree | 089226274f422ae1b486cf44d36751de47bca01c /Motor.cpp | |
parent | e26a1dc73313098cef235918d237f9b1a6e4cb5f (diff) | |
download | rc2007-rescue-7da669b97ec71f138c74d562b8a3b219d3f98a50.tar rc2007-rescue-7da669b97ec71f138c74d562b8a3b219d3f98a50.zip |
Makefile angelegt; Grundfunktionen erweitert
Diffstat (limited to 'Motor.cpp')
-rw-r--r-- | Motor.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Motor.cpp b/Motor.cpp new file mode 100644 index 0000000..7060967 --- /dev/null +++ b/Motor.cpp @@ -0,0 +1,29 @@ +#include "Motor.h" + +#include "util.h" + + +Motor::Motor(volatile uint8_t *port, volatile uint8_t *pwmPort, uint8_t fwdMask, uint8_t revMask) { + this->port = port; + this->pwmPort = pwmPort; + this->fwdMask = fwdMask; + this->revMask = revMask; + + setSpeed(0); +} + +void Motor::setSpeed(int speed) { + this->speed = CLAMP(-255, speed, 255); + + if(speed > 0) { + *port &= ~revMask; + *port |= fwdMask; + } + else if(speed < 0) { + *port &= ~fwdMask; + *port |= revMask; + } + else *port |= fwdMask|revMask; + + *pwmPort = ABS(this->speed); +} |