brix5 / firmware / demo / QuadDRV-HwTest / Adafruit_DRV2605.h @ 00e852cf
History | View | Annotate | Download (2.729 KB)
| 1 |
/***************************************************
|
|---|---|
| 2 |
This is a library for the Adafruit DRV2605L Haptic Driver
|
| 3 |
|
| 4 |
----> http://www.adafruit.com/products/2305
|
| 5 |
|
| 6 |
Check out the links above for our tutorials and wiring diagrams
|
| 7 |
This motor/haptic driver uses I2C to communicate
|
| 8 |
|
| 9 |
Adafruit invests time and resources providing this open source code,
|
| 10 |
please support Adafruit and open-source hardware by purchasing
|
| 11 |
products from Adafruit!
|
| 12 |
|
| 13 |
Written by Limor Fried/Ladyada for Adafruit Industries.
|
| 14 |
MIT license, all text above must be included in any redistribution
|
| 15 |
****************************************************/
|
| 16 |
|
| 17 |
|
| 18 |
#if ARDUINO >= 100 |
| 19 |
#include "Arduino.h" |
| 20 |
#else
|
| 21 |
#include "WProgram.h" |
| 22 |
#endif
|
| 23 |
|
| 24 |
#if defined(__MK20DX128__) || defined(__MK20DX256__)
|
| 25 |
#include "i2c_t3.h" |
| 26 |
#else
|
| 27 |
#include "Wire.h" |
| 28 |
#endif
|
| 29 |
|
| 30 |
|
| 31 |
|
| 32 |
#define DRV2605_ADDR 0x5A |
| 33 |
|
| 34 |
#define DRV2605_REG_STATUS 0x00 |
| 35 |
#define DRV2605_REG_MODE 0x01 |
| 36 |
#define DRV2605_MODE_INTTRIG 0x00 |
| 37 |
#define DRV2605_MODE_EXTTRIGEDGE 0x01 |
| 38 |
#define DRV2605_MODE_EXTTRIGLVL 0x02 |
| 39 |
#define DRV2605_MODE_PWMANALOG 0x03 |
| 40 |
#define DRV2605_MODE_AUDIOVIBE 0x04 |
| 41 |
#define DRV2605_MODE_REALTIME 0x05 |
| 42 |
#define DRV2605_MODE_DIAGNOS 0x06 |
| 43 |
#define DRV2605_MODE_AUTOCAL 0x07 |
| 44 |
|
| 45 |
|
| 46 |
#define DRV2605_REG_RTPIN 0x02 |
| 47 |
#define DRV2605_REG_LIBRARY 0x03 |
| 48 |
#define DRV2605_REG_WAVESEQ1 0x04 |
| 49 |
#define DRV2605_REG_WAVESEQ2 0x05 |
| 50 |
#define DRV2605_REG_WAVESEQ3 0x06 |
| 51 |
#define DRV2605_REG_WAVESEQ4 0x07 |
| 52 |
#define DRV2605_REG_WAVESEQ5 0x08 |
| 53 |
#define DRV2605_REG_WAVESEQ6 0x09 |
| 54 |
#define DRV2605_REG_WAVESEQ7 0x0A |
| 55 |
#define DRV2605_REG_WAVESEQ8 0x0B |
| 56 |
|
| 57 |
#define DRV2605_REG_GO 0x0C |
| 58 |
#define DRV2605_REG_OVERDRIVE 0x0D |
| 59 |
#define DRV2605_REG_SUSTAINPOS 0x0E |
| 60 |
#define DRV2605_REG_SUSTAINNEG 0x0F |
| 61 |
#define DRV2605_REG_BREAK 0x10 |
| 62 |
#define DRV2605_REG_AUDIOCTRL 0x11 |
| 63 |
#define DRV2605_REG_AUDIOLVL 0x12 |
| 64 |
#define DRV2605_REG_AUDIOMAX 0x13 |
| 65 |
#define DRV2605_REG_RATEDV 0x16 |
| 66 |
#define DRV2605_REG_CLAMPV 0x17 |
| 67 |
#define DRV2605_REG_AUTOCALCOMP 0x18 |
| 68 |
#define DRV2605_REG_AUTOCALEMP 0x19 |
| 69 |
#define DRV2605_REG_FEEDBACK 0x1A |
| 70 |
#define DRV2605_REG_CONTROL1 0x1B |
| 71 |
#define DRV2605_REG_CONTROL2 0x1C |
| 72 |
#define DRV2605_REG_CONTROL3 0x1D |
| 73 |
#define DRV2605_REG_CONTROL4 0x1E |
| 74 |
#define DRV2605_REG_VBAT 0x21 |
| 75 |
#define DRV2605_REG_LRARESON 0x22 |
| 76 |
|
| 77 |
|
| 78 |
class Adafruit_DRV2605 {
|
| 79 |
public:
|
| 80 |
Adafruit_DRV2605(uint8_t channel); |
| 81 |
boolean begin(void);
|
| 82 |
void selectChannel(uint8_t channel);
|
| 83 |
void writeRegister8(uint8_t reg, uint8_t val);
|
| 84 |
uint8_t readRegister8(uint8_t reg); |
| 85 |
void setWaveform(uint8_t slot, uint8_t w);
|
| 86 |
void selectLibrary(uint8_t lib);
|
| 87 |
void go(void); |
| 88 |
void setMode(uint8_t mode);
|
| 89 |
void setRealtimeValue(uint8_t rtp);
|
| 90 |
// Select ERM (Eccentric Rotating Mass) or LRA (Linear Resonant Actuator) vibration motor
|
| 91 |
// The default is ERM, which is more common
|
| 92 |
void useERM();
|
| 93 |
void useLRA();
|
| 94 |
|
| 95 |
private:
|
| 96 |
uint8_t _channel; |
| 97 |
}; |
| 98 |
|