Library for 16 channel PWM servo driver PCA9685. v2
Fork of Adafruit-PWM-Servo-Driver by
Diff: Adafruit_PWMServoDriver.cpp
- Revision:
- 3:07497eda12c2
- Parent:
- 2:88bdd5c4e77b
--- a/Adafruit_PWMServoDriver.cpp Wed Sep 04 03:58:53 2013 +0000 +++ b/Adafruit_PWMServoDriver.cpp Tue Nov 14 18:06:44 2017 +0000 @@ -23,15 +23,20 @@ #include "Adafruit_PWMServoDriver.h" -Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(PinName sda, PinName scl, int addr) : i2c(sda, scl), _i2caddr(addr) {} +//Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(PinName sda, PinName scl, int addr) : i2c(sda, scl), _i2caddr(addr) {} + +Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(PinName sda, PinName scl, int addr) { + i2c = new I2C(sda, scl); + _i2caddr = addr; +} void Adafruit_PWMServoDriver::i2c_probe(void) { - printf("Searching for I2C devices...\n"); + printf("Probing I2C devices...\n"); int count = 0; - for (int address=4; address<256; address+=2) { - if (!i2c.write(address, NULL, 0)) { // 0 returned is ok + for (int address=1; address<256; address+=1) { + if (!i2c->write(address, NULL, 0)) { // 0 returned is ok printf(" - I2C device found at address 0x%02X\r\n", address); count++; } @@ -44,7 +49,7 @@ } void Adafruit_PWMServoDriver::setI2Cfreq(int freq) { - i2c.frequency(freq); + i2c->frequency(freq); } void Adafruit_PWMServoDriver::reset(void) { @@ -83,7 +88,7 @@ cmd[2] = on >> 8; cmd[3] = off; cmd[4] = off >> 8; - i2c.write(_i2caddr, cmd, 5); + i2c->write(_i2caddr, cmd, 5); /*write8(LED0_ON_L+4*num, on); write8(LED0_ON_H+4*num, on >> 8); @@ -99,9 +104,9 @@ } uint8_t Adafruit_PWMServoDriver::read8(char addr) { - i2c.write(_i2caddr, &addr, 1); + i2c->write(_i2caddr, &addr, 1); char rtn; - i2c.read(_i2caddr, &rtn, 1); + i2c->read(_i2caddr, &rtn, 1); return rtn; } @@ -109,5 +114,5 @@ char cmd[2]; cmd[0] = addr; cmd[1] = d; - i2c.write(_i2caddr, cmd, 2); + i2c->write(_i2caddr, cmd, 2); } \ No newline at end of file