xiugai

Dependencies:   mbed

Revision:
2:73237ebf0640
Parent:
0:c7f4744deec3
Child:
3:970c2fa6ef3f
--- a/PCA9685.cpp	Fri Jul 24 09:03:58 2015 +0000
+++ b/PCA9685.cpp	Thu Oct 24 08:21:43 2019 +0000
@@ -1,17 +1,17 @@
 #include "PCA9685.h"
 #include "mbed.h"
-PCA9685::PCA9685(PinName sda, PinName scl, int addr) : i2c(sda, scl), _i2caddr(addr) {}
-
-void PCA9685::begin(void)
+PCA9685::PCA9685(PinName sda, PinName scl) : i2c(sda, scl) {}
+//定义引脚与地址
+void PCA9685::begin(void)//初始化
 {
     reset();
 }
 
-void PCA9685::frequencyI2C(int freq)
+void PCA9685::frequencyI2C(int freq)//初始化
 {
     i2c.frequency(freq);
 }
-void PCA9685::write8(uint8_t address, uint8_t data)
+void PCA9685::write8(uint8_t address, uint8_t data)//写函数
 {
     char cmd[2];
     cmd[0] = address;
@@ -19,7 +19,7 @@
     i2c.write(_i2caddr, cmd, 2);
 }
 
-char PCA9685::read8(char address)
+char PCA9685::read8(char address)//读函数
 {
     i2c.write(_i2caddr, &address, 1);
     char rtn;
@@ -27,21 +27,21 @@
     return rtn;
 }
 
-void PCA9685::reset(void)
+void PCA9685::reset(void)//复位
 {
     write8(PCA9685_MODE1, 0x0);
 }
-void PCA9685::setPrescale(uint8_t prescale) {
+void PCA9685::setPrescale(uint8_t prescale) {    
     uint8_t oldmode = read8(PCA9685_MODE1);
     uint8_t newmode = (oldmode&0x7F) | 0x10; // sleep
     write8(PCA9685_MODE1, newmode); // go to sleep
     wait_ms(5);
-    write8(PCA9685_PRESCALE, prescale); // set the prescaler
+    write8(PCA9685_PRESCALE, prescale); // 设置预缩放
     write8(PCA9685_MODE1, oldmode);
     wait_ms(5);
     write8(PCA9685_MODE1, oldmode | 0xa1);
 }
-void PCA9685::setPWMFreq(float freq)
+void PCA9685::setPWMFreq(float freq) //设置频率
 {
     float prescaleval = 25000000;
     prescaleval /= 4096;
@@ -50,8 +50,9 @@
     setPrescale(prescale);
 }
 
-void PCA9685::setPWM(uint8_t num, uint16_t on, uint16_t off)
+void PCA9685::setPWM(uint8_t num, uint16_t on, uint16_t off,int addr)
 {
+    _i2caddr=addr;
     char cmd[5];
     cmd[0] = LED0_ON_L + 4 * num;
     cmd[1] = on;