Skip to content

Commit 46c9198

Browse files
committed
Add min/max micros to attach. Add writeMicroseconds().
1 parent e8e1d37 commit 46c9198

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

libraries/Servo/src/Servo.cpp

+16-7
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,22 @@ SOFTWARE.
2828
//Constructor
2929
Servo::Servo()
3030
{
31+
3132
}
3233

33-
//Assign global var
34-
void Servo::attach(uint8_t pinNumber)
34+
void Servo::attach(uint8_t pinNumber, uint16_t minMicros, uint16_t maxMicros)
3535
{
3636
_servoPinNumber = pinNumber;
37+
_minMicros = minMicros;
38+
_maxMicros = maxMicros;
3739
pinMode(_servoPinNumber, OUTPUT);
3840
}
3941

42+
void Servo::attach(uint8_t pinNumber)
43+
{
44+
attach(pinNumber, 544, 2400); //Start with Arduino defaults
45+
}
46+
4047
void Servo::write(uint8_t servoPosition)
4148
{
4249
_servoPosition = servoPosition;
@@ -45,13 +52,15 @@ void Servo::write(uint8_t servoPosition)
4552

4653
uint16_t newServoPosition = map(servoPosition, 0, 181, 0, ((uint16_t)0x01 << getServoResolution()));
4754

48-
servoWrite(_servoPinNumber, newServoPosition); // This and the above write should both produce 1.5 ms wide pulses, though using different resolutions
55+
servoWrite(_servoPinNumber, newServoPosition, _minMicros, _maxMicros);
4956
}
5057

51-
// void Servo::writeMicroseconds(uint8_t servoPosition)
52-
// {
53-
// servoWrite(_servoPadNumber, newServoPosition); // This and the above write should both produce 1.5 ms wide pulses, though using different resolutions
54-
// }
58+
void Servo::writeMicroseconds(uint16_t microSecs)
59+
{
60+
//Convert microseconds to PWM value
61+
uint16_t newServoPosition = microSecs;
62+
servoWrite(_servoPinNumber, newServoPosition, _minMicros, _maxMicros);
63+
}
5564

5665
void Servo::detach(void)
5766
{

libraries/Servo/src/Servo.h

+4
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ class Servo
3131
{
3232
public:
3333
Servo();
34+
void attach(uint8_t pinNumber, uint16_t minMicros, uint16_t maxMicros);
3435
void attach(uint8_t pinNumber);
3536
void write(uint8_t servoPosition);
37+
void writeMicroseconds(uint16_t microSecs);
3638
void detach(void);
3739
uint8_t read(void);
3840
bool attached(uint8_t pinNumber);
3941

4042
private:
4143
uint8_t _servoPinNumber = 0;
4244
uint8_t _servoPosition;
45+
uint16_t _minMicros;
46+
uint16_t _maxMicros;
4347
};
4448

4549
#endif // _AP3_SERVO_H_

0 commit comments

Comments
 (0)