Skip to content

Commit b786755

Browse files
committed
added wakeup and sleep servo fns
1 parent f39eb59 commit b786755

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

Adafruit_PWMServoDriver.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,25 @@ void Adafruit_PWMServoDriver::reset() {
6565
delay(10);
6666
}
6767

68+
/*!
69+
* @brief Puts board into sleep mode
70+
*/
71+
void Adafruit_PWMServoDriver::sleepServo() {
72+
uint8_t awake = read8(PCA9685_MODE1);
73+
uint8_t sleep = awake | 0x10; // set sleep bit high
74+
write8(PCA9685_MODE1, sleep);
75+
delay(5); // wait until cycle ends for sleep to be active
76+
}
77+
78+
/*!
79+
* @brief Wakes board from sleep
80+
*/
81+
void Adafruit_PWMServoDriver::wakeupServo() {
82+
uint8_t sleep = read8(PCA9685_MODE1);
83+
uint8_t wakeup = sleep & ~0x10; // set sleep bit low
84+
write8(PCA9685_MODE1, wakeup);
85+
}
86+
6887
/**************************************************************************/
6988
/*!
7089
@brief Sets EXTCLK pin to use the external clock

Adafruit_PWMServoDriver.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ class Adafruit_PWMServoDriver {
5151
Adafruit_PWMServoDriver(TwoWire *I2C = &Wire, uint8_t addr = 0x40);
5252
void begin(uint8_t prescale = 0);
5353
void reset();
54+
void sleepServo();
55+
void wakeupServo();
5456
void setExtClk(uint8_t prescale);
5557
void setPWMFreq(float freq);
5658
void setPWM(uint8_t num, uint16_t on, uint16_t off);

0 commit comments

Comments
 (0)