diff --git a/darkwater/DW640.cpp b/darkwater/DW640.cpp index 9585ea8..3101f83 100644 --- a/darkwater/DW640.cpp +++ b/darkwater/DW640.cpp @@ -48,8 +48,10 @@ bool DW640::initialize() { printf("No 640 board found\n"); return 0; } - - this->pwm->setFrequency( 100 ); + // set the default frequency + setFrequency( 100 ); + // set the default mode to ININ + setMode( DW_ININ ); } @@ -58,4 +60,36 @@ bool DW640::initialize() { */ bool DW640::testConnection() { return this->pwm->testConnection(); +} + +/** Calculate prescale value based on the specified frequency and write it to the device. + * @return Frequency in Hz + */ +float DW640::getFrequency() { + return this->pwm->getFrequency(); +} + + +/** Calculate prescale value based on the specified frequency and write it to the device. + * @param Frequency in Hz + */ +void DW640::setFrequency(float frequency) { + this->pwm->setFrequency( frequency ); +} + +/** Calculate prescale value based on the specified frequency and write it to the device. + * @return Frequency in Hz + */ +uint8_t DW640::getMode() { + return this->mode; +} + + +/** Calculate prescale value based on the specified frequency and write it to the device. + * @param Frequency in Hz + */ +void DW640::setMode(uint8_t mode) { + this->modePin = new PIN( RPI_GPIO_27 ); + this->modePin->setMode(Pin::GpioModeOutput); + this->modePin->write( mode ); } \ No newline at end of file diff --git a/darkwater/DW640.h b/darkwater/DW640.h index 633c34e..12496ce 100644 --- a/darkwater/DW640.h +++ b/darkwater/DW640.h @@ -38,6 +38,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "PCA9685.h" +#include "gpio.h" #define DW640_DEFAULT_ADDRESS 0x60 // 640 default @@ -53,8 +54,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define DW_INTERLEAVE 3 #define DW_MICROSTEP 4 -#define DW_ININ 5 -#define DW_PHASE 6 +#define DW_ININ 0 +#define DW_PHASE 1 class DW640 { public: @@ -63,11 +64,11 @@ class DW640 { bool initialize(); bool testConnection(); - // float getFrequency(); - // void setFrequency(float frequency); + float getFrequency(); + void setFrequency(float frequency); - // float getMode(); - // void setMode(float frequency); + uint8_t getMode(); + void setMode(uint8_t mode); // void setPin(uint8_t channel, uint16_t value); // void setAllPin(uint16_t value); @@ -101,6 +102,7 @@ class DW640 { float frequency; uint8_t mode; PCA9685* pwm; + PIN* modePin; }; #endif // DW640_H \ No newline at end of file diff --git a/examples/Motor/Motor.cpp b/examples/Motor/Motor.cpp index e08d213..b089a2b 100644 --- a/examples/Motor/Motor.cpp +++ b/examples/Motor/Motor.cpp @@ -27,10 +27,6 @@ int main() DW640 dw; dw.initialize(); - if(dw.testConnection()) { - printf("OK %4.f ", 2000); - } else { - printf("Not Ok %4.f ", 1000); - } - } + +}