From 0ca90e2a82215c7575f50c3f0fbd3dc0f8442d73 Mon Sep 17 00:00:00 2001 From: DevelopersDevXnow Date: Thu, 25 May 2023 12:07:46 +0530 Subject: [PATCH 1/3] Added PWM properties --- CytronMotorDriver.cpp | 121 ++++++++++++++++++++++++++---------------- 1 file changed, 75 insertions(+), 46 deletions(-) diff --git a/CytronMotorDriver.cpp b/CytronMotorDriver.cpp index 4c8e10e..b562cc1 100644 --- a/CytronMotorDriver.cpp +++ b/CytronMotorDriver.cpp @@ -1,78 +1,107 @@ #include "CytronMotorDriver.h" +// setting PWM properties +const int freq = 5000; +const int ledChannel = 0; +const int ledChanne2 = 1; +const int resolution = 8; + CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) { _mode = mode; _pin1 = pin1; _pin2 = pin2; - pinMode(_pin1, OUTPUT); - pinMode(_pin2, OUTPUT); +#if defined(ARDUINO_ARCH_ESP32) - digitalWrite(_pin1, LOW); - digitalWrite(_pin2, LOW); -} + // configure LED PWM functionalitites + ledcSetup(ledChannel, freq, resolution); -void CytronMD::setSpeed(int16_t speed) -{ - // Make sure the speed is within the limit. - if (speed > 255) - { - speed = 255; - } - else if (speed < -255) - { - speed = -255; - } + // attach the channel to the GPIO to be controlled + ledcAttachPin(_pin1, ledChannel); - // Set the speed and direction. switch (_mode) { case PWM_DIR: - if (speed >= 0) + pinMode(_pin2, OUTPUT); + digitalWrite(_pin2, LOW); + break; + case PWM_PWM: + ledcSetup(ledChanne2, freq, resolution); + ledcAttachPin(_pin2, ledChanne2); + + ledcWrite(_pin1, 0); + ledcWrite(_pin2, 0); + +#else + pinMode(_pin1, OUTPUT); + pinMode(_pin2, OUTPUT); + + digitalWrite(_pin1, LOW); + digitalWrite(_pin2, LOW); +#endif + + void CytronMD::setSpeed(int16_t speed) { + // Make sure the speed is within the limit. + if (speed > 255) + { + speed = 255; + } + else if (speed < -255) + { + speed = -255; + } + + // Set the speed and direction. + switch (_mode) + { + case PWM_DIR: + if (speed >= 0) + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, speed); + + ledcWrite(_pin1, speed); #else - analogWrite(_pin1, speed); + analogWrite(_pin1, speed); #endif - digitalWrite(_pin2, LOW); - } - else - { + digitalWrite(_pin2, LOW); + } + else + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, -speed); + ledcWrite(_pin1, -speed); #else - analogWrite(_pin1, -speed); + analogWrite(_pin1, -speed); #endif - digitalWrite(_pin2, HIGH); - } - break; + digitalWrite(_pin2, HIGH); + } + break; - case PWM_PWM: - if (speed >= 0) - { + case PWM_PWM: + if (speed >= 0) + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, speed); - ledcWrite(_pin2, 0); + ledcWrite(_pin1, speed); + ledcWrite(_pin2, 0); #else - analogWrite(_pin1, speed); - analogWrite(_pin2, 0); + analogWrite(_pin1, speed); + analogWrite(_pin2, 0); #endif - } - else - { + } + else + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, 0); - ledcWrite(_pin2, -speed); + ledcWrite(_pin1, -speed); + ledcWrite(_pin2, 255); #else - analogWrite(_pin1, 0); - analogWrite(_pin2, -speed); + analogWrite(_pin1, -speed); + analogWrite(_pin2, 255); #endif + } + break; + } } - break; - } -} From 0fc1ee2d126daa04dcfda59017a4e3560a49a48f Mon Sep 17 00:00:00 2001 From: DevelopersDevXnow Date: Thu, 25 May 2023 12:12:02 +0530 Subject: [PATCH 2/3] Bug Fix and changed version code. --- CytronMotorDriver.cpp | 12 ++++++------ library.properties | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CytronMotorDriver.cpp b/CytronMotorDriver.cpp index b562cc1..9ca7545 100644 --- a/CytronMotorDriver.cpp +++ b/CytronMotorDriver.cpp @@ -61,7 +61,7 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, speed); + ledcWrite(ledChannel, speed); #else analogWrite(_pin1, speed); #endif @@ -72,7 +72,7 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, -speed); + ledcWrite(ledChannel, -speed); #else analogWrite(_pin1, -speed); #endif @@ -85,8 +85,8 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) if (speed >= 0) { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, speed); - ledcWrite(_pin2, 0); + ledcWrite(ledChannel, speed); + ledcWrite(ledChanne2, 0); #else analogWrite(_pin1, speed); analogWrite(_pin2, 0); @@ -95,8 +95,8 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) else { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(_pin1, -speed); - ledcWrite(_pin2, 255); + ledcWrite(ledChannel, -speed); + ledcWrite(ledChanne2, 255); #else analogWrite(_pin1, -speed); analogWrite(_pin2, 255); diff --git a/library.properties b/library.properties index 3b55c7f..3287660 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Cytron Motor Drivers Library -version=1.0.1 +version=1.1.0 author=Cytron Technologies Sdn Bhd maintainer=Cytron Technologies Sdn Bhd sentence=Library for Cytron Motor Drivers. From a12475d6e25d3e6d0bf0246baa6fe2af21a63384 Mon Sep 17 00:00:00 2001 From: DevelopersDevXnow Date: Thu, 25 May 2023 13:47:08 +0530 Subject: [PATCH 3/3] bugfix --- CytronMotorDriver.cpp | 82 ++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/CytronMotorDriver.cpp b/CytronMotorDriver.cpp index 9ca7545..cd9adf5 100644 --- a/CytronMotorDriver.cpp +++ b/CytronMotorDriver.cpp @@ -14,12 +14,14 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) #if defined(ARDUINO_ARCH_ESP32) - // configure LED PWM functionalitites + // configure PWM functionalitites ledcSetup(ledChannel, freq, resolution); // attach the channel to the GPIO to be controlled ledcAttachPin(_pin1, ledChannel); + ledcWrite(ledChannel, 0); + switch (_mode) { case PWM_DIR: @@ -29,9 +31,9 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) case PWM_PWM: ledcSetup(ledChanne2, freq, resolution); ledcAttachPin(_pin2, ledChanne2); - - ledcWrite(_pin1, 0); - ledcWrite(_pin2, 0); + ledcWrite(ledChanne2, 0); + break; + } #else pinMode(_pin1, OUTPUT); @@ -41,67 +43,67 @@ CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2) digitalWrite(_pin2, LOW); #endif - void CytronMD::setSpeed(int16_t speed) + void CytronMD::setSpeed(int16_t speed) + { + // Make sure the speed is within the limit. + if (speed > 255) { - // Make sure the speed is within the limit. - if (speed > 255) - { - speed = 255; - } - else if (speed < -255) - { - speed = -255; - } + speed = 255; + } + else if (speed < -255) + { + speed = -255; + } - // Set the speed and direction. - switch (_mode) + // Set the speed and direction. + switch (_mode) + { + case PWM_DIR: + if (speed >= 0) { - case PWM_DIR: - if (speed >= 0) - { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(ledChannel, speed); + ledcWrite(ledChannel, speed); #else analogWrite(_pin1, speed); #endif - digitalWrite(_pin2, LOW); - } - else - { + digitalWrite(_pin2, LOW); + } + else + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(ledChannel, -speed); + ledcWrite(ledChannel, -speed); #else analogWrite(_pin1, -speed); #endif - digitalWrite(_pin2, HIGH); - } - break; + digitalWrite(_pin2, HIGH); + } + break; - case PWM_PWM: - if (speed >= 0) - { + case PWM_PWM: + if (speed >= 0) + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(ledChannel, speed); - ledcWrite(ledChanne2, 0); + ledcWrite(ledChannel, speed); + ledcWrite(ledChanne2, 0); #else analogWrite(_pin1, speed); analogWrite(_pin2, 0); #endif - } - else - { + } + else + { #if defined(ARDUINO_ARCH_ESP32) - ledcWrite(ledChannel, -speed); - ledcWrite(ledChanne2, 255); + ledcWrite(ledChannel, -speed); + ledcWrite(ledChanne2, 255); #else analogWrite(_pin1, -speed); analogWrite(_pin2, 255); #endif - } - break; } + break; } + }