RGB LED Driver demo

Dependents:   NJU6063_HelloWorld

Revision:
0:0283db13b7f1
Child:
1:bbc915c814da
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NJU6063.cpp	Sat Dec 26 13:19:46 2015 +0000
@@ -0,0 +1,76 @@
+#include "NJU6063.h"
+
+NJU6063::NJU6063( PinName sda, PinName scl, PinName rst)
+    : _i2c(sda, scl), _rst(rst)
+{
+}
+
+void NJU6063::reset(void)
+{
+    wait_ms(100);
+    _rst = 0;
+    wait_ms(100);
+    _rst = 1;
+}
+
+void NJU6063::set_multi_device(uint8_t n)
+{
+    char data[3];
+    data[0] = 0x00; // Initial chip addres
+    data[1] = 0x0d; // multi device address
+    for (uint8_t i=1; i<=n; i++) {
+        data[2] = i;
+        _i2c.write(NJU6063_SLAVE, data, 3);
+    }
+}
+void NJU6063::init(uint8_t chip_addr, uint8_t d)
+{
+    char data[3];
+    data[0] = chip_addr;
+    data[1] = 0x00;
+    data[2] = d;
+    _i2c.write(NJU6063_SLAVE, data, 3);
+}
+
+void NJU6063::set_iled(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3)
+{
+    char data[3];
+    data[0] = chip_addr;
+    data[1] = 0x01;
+    data[2] = (0x03&d1) | (0x03&d2)<<2 | (0x03&d3) <<4;
+    _i2c.write(NJU6063_SLAVE, data, 3);
+}
+
+void NJU6063::set_pwm(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t loop, uint8_t son)
+{
+    char data[7];
+    data[0] = chip_addr;
+    data[1] = 0x02;
+    data[2] = d1;
+    data[3] = d2;
+    data[4] = d3;
+    data[5] = loop;
+    data[6] = son;
+    _i2c.write(NJU6063_SLAVE, data, 7);
+}
+void NJU6063::dim_start(uint8_t chip_addr)
+{
+    char data[3];
+    data[0] = chip_addr;
+    data[1] = 0x07; // reg addres
+    data[2] = 0x01; // start
+    _i2c.write(NJU6063_SLAVE, data, 3);
+}
+
+uint8_t NJU6063::check_dim(void)
+{
+    uint8_t ACK;
+    char data[3];
+    data[0] = 0xff;
+    data[1] = 0x0b;
+    data[2] = 0x00;
+    do {
+        ACK = _i2c.write(NJU6063_SLAVE, data, 3);
+    } while(!ACK);
+    return(ACK);
+}