123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #ifndef _PCA_9685_H_
- #define _PCA_9685_H_
- #define PCA9685_ADDR_1 0x41
- #define PCA9685_ADDR_2 0x42
- #define PCA9685_ADDR_3 0x43
- #define PCA9685_All_Call 0x70
- #define PCA9685_Sub_Call_1 0x71
- #define PCA9685_Sub_Call_2 0x72
- #define PCA9685_Sub_Call_3 0x73
- #define PCA9685_Reset 0x03
- #define PCA9685_Max_Brightness 4096
- #define PCA9685_Min_Brightness 0
- typedef union {
- struct {
- char ALLCALL : 1;
- char SUB3 : 1;
- char SUB2 : 1;
- char SUB1 : 1;
- char SLEEP : 1;
- char AI : 1;
- char EXTCLK : 1;
- char RESTART : 1;
- };
- char AS_BYTE;
- } REG_MODE1;
- typedef union {
- struct {
- char OUTNE : 2;
- char OUTDRV : 1;
- char OCH : 1;
- char INVRT : 1;
- char : 3;
- };
- char AS_BYTE;
- } REG_MODE2;
- typedef union {
- struct {
- ushort ON : 12;
- ushort ON_FULL : 1;
- ushort : 3;
- ushort OFF : 12;
- ushort OFF_FULL : 1;
- ushort : 3;
- };
- char AS_BYTE[4];
- } LED_CTRL;
- typedef union {
- struct {
- ushort ON : 12;
- ushort ON_FULL : 1;
- ushort : 3;
- ushort OFF : 12;
- ushort OFF_FULL : 1;
- ushort : 3;
- };
- char AS_BYTE[4];
- } ALL_LED_CTRL;
-
- typedef union {
- struct {
- REG_MODE1 MODE1;
- REG_MODE2 MODE2;
- char SUBADR1;
- char SUBADR2;
- char SUBADR3;
- char ALLCALLADR;
- LED_CTRL LED0;
- LED_CTRL LED1;
- LED_CTRL LED2;
- LED_CTRL LED3;
- LED_CTRL LED4;
- LED_CTRL LED5;
- LED_CTRL LED6;
- LED_CTRL LED7;
- LED_CTRL LED8;
- LED_CTRL LED9;
- LED_CTRL LED10;
- LED_CTRL LED11;
- LED_CTRL LED12;
- LED_CTRL LED13;
- LED_CTRL LED14;
- LED_CTRL LED15;
- char RESERVED[180];
- ALL_LED_CTRL ALL_LED;
- char PRE_SCALE;
- char TestMode;
- };
- char AS_BYTE[0x100];
- } PCA9685_REGS;
- #define TUBE_DOT_ADDR PCA9685_ADDR_2
- #define TUBE_DOT_PIN LED15
- #define MAP_ADDR 0
- #define MAP_PIN 1
- const char Tube_Mapping[4][10][2] =
- { {
- { PCA9685_ADDR_1, 8 },
- { PCA9685_ADDR_1, 9 },
- { PCA9685_ADDR_1, 10 },
- { PCA9685_ADDR_1, 12 },
- { PCA9685_ADDR_1, 15 },
- { PCA9685_ADDR_1, 14 },
- { PCA9685_ADDR_1, 11 },
- { PCA9685_ADDR_1, 0 },
- { PCA9685_ADDR_1, 1 },
- { PCA9685_ADDR_1, 13 },
- },
- {
- { PCA9685_ADDR_1, 5 },
- { PCA9685_ADDR_1, 6 },
- { PCA9685_ADDR_1, 7 },
- { PCA9685_ADDR_1, 2 },
- { PCA9685_ADDR_2, 4 },
- { PCA9685_ADDR_2, 1 },
- { PCA9685_ADDR_1, 4 },
- { PCA9685_ADDR_2, 2 },
- { PCA9685_ADDR_2, 3 },
- { PCA9685_ADDR_1, 3 },
- },
- {
- { PCA9685_ADDR_3, 8 },
- { PCA9685_ADDR_3, 9 },
- { PCA9685_ADDR_3, 10 },
- { PCA9685_ADDR_3, 12 },
- { PCA9685_ADDR_2, 12 },
- { PCA9685_ADDR_2, 13 },
- { PCA9685_ADDR_3, 11 },
- { PCA9685_ADDR_2, 14 },
- { PCA9685_ADDR_2, 11 },
- { PCA9685_ADDR_3, 13 },
- },
- {
- { PCA9685_ADDR_3, 5 },
- { PCA9685_ADDR_3, 6 },
- { PCA9685_ADDR_3, 7 },
- { PCA9685_ADDR_3, 2 },
- { PCA9685_ADDR_3, 14 },
- { PCA9685_ADDR_3, 15 },
- { PCA9685_ADDR_3, 4 },
- { PCA9685_ADDR_3, 1 },
- { PCA9685_ADDR_3, 0 },
- { PCA9685_ADDR_3, 3 },
- } };
- void PCA9685_Init(void);
- void PCA9685_SetVoltage(float Percent);
- void PCA9685_SetDigit(int Tube, int Digit, int Brightness);
- void PCA9685_SetDigitPwm(int Tube, int Digit, int StartPwm, int EndPwm);
- void PCA9685_SetDot(int Brightness);
- void PCA9685_SetDotPwm(int StartPwm, int EndPwm);
- void PCA9685_EnableOutput(bool Enabled);
- #endif
|