From 0cb4d254311e1cdaed9398ebcf6c644c45f47f90 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 27 Sep 2017 03:33:29 -0500 Subject: [PATCH] Tweaks to Servo classes --- Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.cpp | 10 +++++----- Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.h | 10 +++++----- .../HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.cpp | 17 +++++++---------- .../src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.h | 8 ++++---- 4 files changed, 21 insertions(+), 24 deletions(-) diff --git a/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.cpp b/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.cpp index 3147b22c8a..62e545cee3 100644 --- a/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.cpp +++ b/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.cpp @@ -89,11 +89,11 @@ this->servoIndex = INVALID_SERVO; // too many servos } - int8_t Servo::attach(int pin) { + int8_t Servo::attach(const int pin) { return this->attach(pin, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); } - int8_t Servo::attach(int pin, int min, int max) { + int8_t Servo::attach(const int pin, const int min, const int max) { if (this->servoIndex >= MAX_SERVOS) return -1; @@ -113,7 +113,7 @@ servo_info[this->servoIndex].Pin.isActive = false; } - void Servo::write(int value) { + void Servo::write(const int value) { if (value < MIN_PULSE_WIDTH) { // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds) value = map(constrain(value, 0, 180), 0, 180, SERVO_MIN(), SERVO_MAX()); // odd - this sets zero degrees to 544 and 180 degrees to 2400 microseconds but the literature says @@ -122,7 +122,7 @@ this->writeMicroseconds(value); } - void Servo::writeMicroseconds(int value) { + void Servo::writeMicroseconds(const int value) { // calculate and store the values for the given channel byte channel = this->servoIndex; if (channel < MAX_SERVOS) { // ensure channel is valid @@ -146,7 +146,7 @@ bool Servo::attached() { return servo_info[this->servoIndex].Pin.isActive; } - void Servo::move(int value) { + void Servo::move(const int value) { if (this->attach(0) >= 0) { // notice the pin number is zero here this->write(value); delay(SERVO_DELAY); diff --git a/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.h b/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.h index 291ca130aa..79737e64ca 100644 --- a/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.h +++ b/Marlin/src/HAL/HAL_LPC1768/LPC1768_Servo.h @@ -39,12 +39,12 @@ class Servo { public: Servo(); - int8_t attach(int pin); // attach the given pin to the next free channel, set pinMode, return channel number (-1 on fail) - int8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes. + int8_t attach(const int pin); // attach the given pin to the next free channel, set pinMode, return channel number (-1 on fail) + int8_t attach(const int pin, const int min, const int max); // as above but also sets min and max values for writes. void detach(); - void write(int value); // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds - void writeMicroseconds(int value); // write pulse width in microseconds - void move(int value); // attach the servo, then move to value + void write(const int value); // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds + void writeMicroseconds(const int value); // write pulse width in microseconds + void move(const int value); // attach the servo, then move to value // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds // if DEACTIVATE_SERVOS_AFTER_MOVE wait SERVO_DELAY, then detach int read(); // returns current pulse width as an angle between 0 and 180 degrees diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.cpp b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.cpp index 751aa94feb..f8905fc1e3 100644 --- a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.cpp +++ b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.cpp @@ -1,20 +1,18 @@ #if defined(__MK64FX512__) || defined(__MK66FX1M0__) - #include "HAL_Servo_Teensy.h" #include "../../inc/MarlinConfig.h" - -int8_t libServo::attach(int pin) { - if (this->servoIndex >= MAX_SERVOS) return -1; - return Servo::attach(pin); +int8_t libServo::attach(const int pin) { + if (this->servoIndex >= MAX_SERVOS) return -1; + return Servo::attach(pin); } -int8_t libServo::attach(int pin, int min, int max) { - return Servo::attach(pin, min, max); +int8_t libServo::attach(const int pin, const int min, const int max) { + return Servo::attach(pin, min, max); } -void libServo::move(int value) { +void libServo::move(const int value) { if (this->attach(0) >= 0) { this->write(value); delay(SERVO_DELAY); @@ -24,5 +22,4 @@ void libServo::move(int value) { } } - -#endif +#endif // __MK64FX512__ || __MK66FX1M0__ diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.h b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.h index df7c82feca..5600ae2a1d 100644 --- a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.h +++ b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_Servo_Teensy.h @@ -6,13 +6,13 @@ // Inherit and expand on the official library class libServo : public Servo { public: - int8_t attach(int pin); - int8_t attach(int pin, int min, int max); - void move(int value); + int8_t attach(const int pin); + int8_t attach(const int pin, const int min, const int max); + void move(const int value); private: uint16_t min_ticks; uint16_t max_ticks; uint8_t servoIndex; // index into the channel data for this servo }; -#endif +#endif // HAL_Servo_Teensy_h