RGB LED Driver demo
Dependents: NJU6063_HelloWorld
NJU6063.cpp@0:0283db13b7f1, 2015-12-26 (annotated)
- Committer:
- og
- Date:
- Sat Dec 26 13:19:46 2015 +0000
- Revision:
- 0:0283db13b7f1
- Child:
- 1:bbc915c814da
NJU6063 Library initial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
og | 0:0283db13b7f1 | 1 | #include "NJU6063.h" |
og | 0:0283db13b7f1 | 2 | |
og | 0:0283db13b7f1 | 3 | NJU6063::NJU6063( PinName sda, PinName scl, PinName rst) |
og | 0:0283db13b7f1 | 4 | : _i2c(sda, scl), _rst(rst) |
og | 0:0283db13b7f1 | 5 | { |
og | 0:0283db13b7f1 | 6 | } |
og | 0:0283db13b7f1 | 7 | |
og | 0:0283db13b7f1 | 8 | void NJU6063::reset(void) |
og | 0:0283db13b7f1 | 9 | { |
og | 0:0283db13b7f1 | 10 | wait_ms(100); |
og | 0:0283db13b7f1 | 11 | _rst = 0; |
og | 0:0283db13b7f1 | 12 | wait_ms(100); |
og | 0:0283db13b7f1 | 13 | _rst = 1; |
og | 0:0283db13b7f1 | 14 | } |
og | 0:0283db13b7f1 | 15 | |
og | 0:0283db13b7f1 | 16 | void NJU6063::set_multi_device(uint8_t n) |
og | 0:0283db13b7f1 | 17 | { |
og | 0:0283db13b7f1 | 18 | char data[3]; |
og | 0:0283db13b7f1 | 19 | data[0] = 0x00; // Initial chip addres |
og | 0:0283db13b7f1 | 20 | data[1] = 0x0d; // multi device address |
og | 0:0283db13b7f1 | 21 | for (uint8_t i=1; i<=n; i++) { |
og | 0:0283db13b7f1 | 22 | data[2] = i; |
og | 0:0283db13b7f1 | 23 | _i2c.write(NJU6063_SLAVE, data, 3); |
og | 0:0283db13b7f1 | 24 | } |
og | 0:0283db13b7f1 | 25 | } |
og | 0:0283db13b7f1 | 26 | void NJU6063::init(uint8_t chip_addr, uint8_t d) |
og | 0:0283db13b7f1 | 27 | { |
og | 0:0283db13b7f1 | 28 | char data[3]; |
og | 0:0283db13b7f1 | 29 | data[0] = chip_addr; |
og | 0:0283db13b7f1 | 30 | data[1] = 0x00; |
og | 0:0283db13b7f1 | 31 | data[2] = d; |
og | 0:0283db13b7f1 | 32 | _i2c.write(NJU6063_SLAVE, data, 3); |
og | 0:0283db13b7f1 | 33 | } |
og | 0:0283db13b7f1 | 34 | |
og | 0:0283db13b7f1 | 35 | void NJU6063::set_iled(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3) |
og | 0:0283db13b7f1 | 36 | { |
og | 0:0283db13b7f1 | 37 | char data[3]; |
og | 0:0283db13b7f1 | 38 | data[0] = chip_addr; |
og | 0:0283db13b7f1 | 39 | data[1] = 0x01; |
og | 0:0283db13b7f1 | 40 | data[2] = (0x03&d1) | (0x03&d2)<<2 | (0x03&d3) <<4; |
og | 0:0283db13b7f1 | 41 | _i2c.write(NJU6063_SLAVE, data, 3); |
og | 0:0283db13b7f1 | 42 | } |
og | 0:0283db13b7f1 | 43 | |
og | 0:0283db13b7f1 | 44 | void NJU6063::set_pwm(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t loop, uint8_t son) |
og | 0:0283db13b7f1 | 45 | { |
og | 0:0283db13b7f1 | 46 | char data[7]; |
og | 0:0283db13b7f1 | 47 | data[0] = chip_addr; |
og | 0:0283db13b7f1 | 48 | data[1] = 0x02; |
og | 0:0283db13b7f1 | 49 | data[2] = d1; |
og | 0:0283db13b7f1 | 50 | data[3] = d2; |
og | 0:0283db13b7f1 | 51 | data[4] = d3; |
og | 0:0283db13b7f1 | 52 | data[5] = loop; |
og | 0:0283db13b7f1 | 53 | data[6] = son; |
og | 0:0283db13b7f1 | 54 | _i2c.write(NJU6063_SLAVE, data, 7); |
og | 0:0283db13b7f1 | 55 | } |
og | 0:0283db13b7f1 | 56 | void NJU6063::dim_start(uint8_t chip_addr) |
og | 0:0283db13b7f1 | 57 | { |
og | 0:0283db13b7f1 | 58 | char data[3]; |
og | 0:0283db13b7f1 | 59 | data[0] = chip_addr; |
og | 0:0283db13b7f1 | 60 | data[1] = 0x07; // reg addres |
og | 0:0283db13b7f1 | 61 | data[2] = 0x01; // start |
og | 0:0283db13b7f1 | 62 | _i2c.write(NJU6063_SLAVE, data, 3); |
og | 0:0283db13b7f1 | 63 | } |
og | 0:0283db13b7f1 | 64 | |
og | 0:0283db13b7f1 | 65 | uint8_t NJU6063::check_dim(void) |
og | 0:0283db13b7f1 | 66 | { |
og | 0:0283db13b7f1 | 67 | uint8_t ACK; |
og | 0:0283db13b7f1 | 68 | char data[3]; |
og | 0:0283db13b7f1 | 69 | data[0] = 0xff; |
og | 0:0283db13b7f1 | 70 | data[1] = 0x0b; |
og | 0:0283db13b7f1 | 71 | data[2] = 0x00; |
og | 0:0283db13b7f1 | 72 | do { |
og | 0:0283db13b7f1 | 73 | ACK = _i2c.write(NJU6063_SLAVE, data, 3); |
og | 0:0283db13b7f1 | 74 | } while(!ACK); |
og | 0:0283db13b7f1 | 75 | return(ACK); |
og | 0:0283db13b7f1 | 76 | } |