This is a library for the PCA9685 ported from the Adafruit Ardiuno library.

Committer:
rvasquez6089
Date:
Fri Feb 13 22:02:35 2015 +0000
Revision:
0:1ecf26e0cf3c
Child:
1:f1b17f9d387e
This is the first Revision of the PCA9685 Library.; I have ported this library from the Adafruit PWM Servo Library and added 1 new feature.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rvasquez6089 0:1ecf26e0cf3c 1 /***************************************************
rvasquez6089 0:1ecf26e0cf3c 2 This is a library for our Adafruit 16-channel PWM & Servo driver
rvasquez6089 0:1ecf26e0cf3c 3
rvasquez6089 0:1ecf26e0cf3c 4 Pick one up today in the adafruit shop!
rvasquez6089 0:1ecf26e0cf3c 5 ------> http://www.adafruit.com/products/815
rvasquez6089 0:1ecf26e0cf3c 6
rvasquez6089 0:1ecf26e0cf3c 7 These displays use I2C to communicate, 2 pins are required to
rvasquez6089 0:1ecf26e0cf3c 8 interface. For Arduino UNOs, thats SCL -> Analog 5, SDA -> Analog 4
rvasquez6089 0:1ecf26e0cf3c 9
rvasquez6089 0:1ecf26e0cf3c 10 Adafruit invests time and resources providing this open source code,
rvasquez6089 0:1ecf26e0cf3c 11 please support Adafruit and open-source hardware by purchasing
rvasquez6089 0:1ecf26e0cf3c 12 products from Adafruit!
rvasquez6089 0:1ecf26e0cf3c 13
rvasquez6089 0:1ecf26e0cf3c 14 Written by Limor Fried/Ladyada for Adafruit Industries.
rvasquez6089 0:1ecf26e0cf3c 15 BSD license, all text above must be included in any redistribution
rvasquez6089 0:1ecf26e0cf3c 16 ****************************************************/
rvasquez6089 0:1ecf26e0cf3c 17
rvasquez6089 0:1ecf26e0cf3c 18 /*****************************
rvasquez6089 0:1ecf26e0cf3c 19 This program was ported from https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library.
rvasquez6089 0:1ecf26e0cf3c 20 I also added some functions.
rvasquez6089 0:1ecf26e0cf3c 21 Shundo Kishi
rvasquez6089 0:1ecf26e0cf3c 22 *****************************/
rvasquez6089 0:1ecf26e0cf3c 23
rvasquez6089 0:1ecf26e0cf3c 24 #ifndef _ADAFRUIT_PWMServoDriver_H
rvasquez6089 0:1ecf26e0cf3c 25 #define _ADAFRUIT_PWMServoDriver_H
rvasquez6089 0:1ecf26e0cf3c 26
rvasquez6089 0:1ecf26e0cf3c 27 #include "mbed.h"
rvasquez6089 0:1ecf26e0cf3c 28 #include <cmath>
rvasquez6089 0:1ecf26e0cf3c 29
rvasquez6089 0:1ecf26e0cf3c 30 #define PCA9685_SUBADR1 0x2
rvasquez6089 0:1ecf26e0cf3c 31 #define PCA9685_SUBADR2 0x3
rvasquez6089 0:1ecf26e0cf3c 32 #define PCA9685_SUBADR3 0x4
rvasquez6089 0:1ecf26e0cf3c 33
rvasquez6089 0:1ecf26e0cf3c 34 #define PCA9685_MODE1 0x0
rvasquez6089 0:1ecf26e0cf3c 35 #define PCA9685_PRESCALE 0xFE
rvasquez6089 0:1ecf26e0cf3c 36
rvasquez6089 0:1ecf26e0cf3c 37 #define LED0_ON_L 0x6
rvasquez6089 0:1ecf26e0cf3c 38 #define LED0_ON_H 0x7
rvasquez6089 0:1ecf26e0cf3c 39 #define LED0_OFF_L 0x8
rvasquez6089 0:1ecf26e0cf3c 40 #define LED0_OFF_H 0x9
rvasquez6089 0:1ecf26e0cf3c 41
rvasquez6089 0:1ecf26e0cf3c 42 #define ALLLED_ON_L 0xFA
rvasquez6089 0:1ecf26e0cf3c 43 #define ALLLED_ON_H 0xFB
rvasquez6089 0:1ecf26e0cf3c 44 #define ALLLED_OFF_L 0xFC
rvasquez6089 0:1ecf26e0cf3c 45 #define ALLLED_OFF_H 0xFD
rvasquez6089 0:1ecf26e0cf3c 46 class PCA9685Lib; //Forward declaration
rvasquez6089 0:1ecf26e0cf3c 47 struct LEDarr
rvasquez6089 0:1ecf26e0cf3c 48 {
rvasquez6089 0:1ecf26e0cf3c 49 uint8_t LEDnum;
rvasquez6089 0:1ecf26e0cf3c 50 PCA9685Lib* PCALib;
rvasquez6089 0:1ecf26e0cf3c 51 void operator= (uint16_t duty);
rvasquez6089 0:1ecf26e0cf3c 52 };
rvasquez6089 0:1ecf26e0cf3c 53
rvasquez6089 0:1ecf26e0cf3c 54 class PCA9685Lib {
rvasquez6089 0:1ecf26e0cf3c 55 public:
rvasquez6089 0:1ecf26e0cf3c 56 PCA9685Lib(I2C i2cobj, int addr = 0x80); //0b 1_000000_(R/W) <- default slave adress
rvasquez6089 0:1ecf26e0cf3c 57 void i2c_probe(void);
rvasquez6089 0:1ecf26e0cf3c 58 void begin(void);
rvasquez6089 0:1ecf26e0cf3c 59 void setI2Cfreq(int freq);
rvasquez6089 0:1ecf26e0cf3c 60 void reset(void);
rvasquez6089 0:1ecf26e0cf3c 61 void setPWMFreq(float freq);
rvasquez6089 0:1ecf26e0cf3c 62 void setPrescale(uint8_t prescale);
rvasquez6089 0:1ecf26e0cf3c 63 void setPWM(uint8_t num, uint16_t on, uint16_t off);
rvasquez6089 0:1ecf26e0cf3c 64 void setDuty(uint8_t num, uint16_t duty);
rvasquez6089 0:1ecf26e0cf3c 65 void operator[](int i);
rvasquez6089 0:1ecf26e0cf3c 66 LEDarr LED[15];
rvasquez6089 0:1ecf26e0cf3c 67 private:
rvasquez6089 0:1ecf26e0cf3c 68 int _i2caddr;
rvasquez6089 0:1ecf26e0cf3c 69 I2C i2c;
rvasquez6089 0:1ecf26e0cf3c 70
rvasquez6089 0:1ecf26e0cf3c 71 uint8_t read8(char addr);
rvasquez6089 0:1ecf26e0cf3c 72 void write8(char addr, char d);
rvasquez6089 0:1ecf26e0cf3c 73 };
rvasquez6089 0:1ecf26e0cf3c 74
rvasquez6089 0:1ecf26e0cf3c 75
rvasquez6089 0:1ecf26e0cf3c 76 #endif