123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #ifndef _ADAFRUIT_PWMServoDriver_H
- #define _ADAFRUIT_PWMServoDriver_H
- #include <Arduino.h>
- #include <Wire.h>
- #define PCA9685_MODE1 0x00
- #define PCA9685_MODE2 0x01
- #define PCA9685_SUBADR1 0x02
- #define PCA9685_SUBADR2 0x03
- #define PCA9685_SUBADR3 0x04
- #define PCA9685_ALLCALLADR 0x05
- #define PCA9685_LED0_ON_L 0x06
- #define PCA9685_LED0_ON_H 0x07
- #define PCA9685_LED0_OFF_L 0x08
- #define PCA9685_LED0_OFF_H 0x09
- #define PCA9685_ALLLED_ON_L 0xFA
- #define PCA9685_ALLLED_ON_H 0xFB
- #define PCA9685_ALLLED_OFF_L 0xFC
- #define PCA9685_ALLLED_OFF_H 0xFD
- #define PCA9685_PRESCALE 0xFE
- #define PCA9685_TESTMODE 0xFF
- #define MODE1_ALLCAL 0x01
- #define MODE1_SUB3 0x02
- #define MODE1_SUB2 0x04
- #define MODE1_SUB1 0x08
- #define MODE1_SLEEP 0x10
- #define MODE1_AI 0x20
- #define MODE1_EXTCLK 0x40
- #define MODE1_RESTART 0x80
- #define MODE2_OUTNE_0 0x01
- #define MODE2_OUTNE_1 \
- 0x02
- #define MODE2_OUTDRV 0x04
- #define MODE2_OCH 0x08
- #define MODE2_INVRT 0x10
- #define PCA9685_I2C_ADDRESS 0x40
- #define FREQUENCY_OSCILLATOR 25000000
- #define PCA9685_PRESCALE_MIN 3
- #define PCA9685_PRESCALE_MAX 255
- class Adafruit_PWMServoDriver {
- public:
- Adafruit_PWMServoDriver();
- Adafruit_PWMServoDriver(const uint8_t addr);
- Adafruit_PWMServoDriver(const uint8_t addr, TwoWire &i2c);
- void begin(uint8_t prescale = 0);
- void reset();
- void sleep();
- void wakeup();
- void setExtClk(uint8_t prescale);
- void setPWMFreq(float freq);
- void setOutputMode(bool totempole);
- uint8_t getPWM(uint8_t num);
- void setPWM(uint8_t num, uint16_t on, uint16_t off);
- void setPin(uint8_t num, uint16_t val, bool invert = false);
- uint8_t readPrescale(void);
- void writeMicroseconds(uint8_t num, uint16_t Microseconds);
- void setOscillatorFrequency(uint32_t freq);
- uint32_t getOscillatorFrequency(void);
- private:
- uint8_t _i2caddr;
- TwoWire *_i2c;
- uint32_t _oscillator_freq;
- uint8_t read8(uint8_t addr);
- void write8(uint8_t addr, uint8_t d);
- };
- #endif
|