GROVE ChainableLED LIBRARY

Dependents:   BLENano_RGB_Demo BLENano_RGB_Demo_DAP ble-devicelink-example connected-lights

Committer:
Jackson_lv
Date:
Wed Apr 27 09:47:09 2016 +0000
Revision:
0:e7513df9d7cb
BLE Nano RGB Demo with DAP board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jackson_lv 0:e7513df9d7cb 1 /*
Jackson_lv 0:e7513df9d7cb 2 Copyright (C) 2013 Seeed Technology Inc.
Jackson_lv 0:e7513df9d7cb 3 Copyright (C) 2012 Paulo Marques (pjp.marques@gmail.com)
Jackson_lv 0:e7513df9d7cb 4
Jackson_lv 0:e7513df9d7cb 5 Permission is hereby granted, free of charge, to any person obtaining a copy of
Jackson_lv 0:e7513df9d7cb 6 this software and associated documentation files (the "Software"), to deal in
Jackson_lv 0:e7513df9d7cb 7 the Software without restriction, including without limitation the rights to
Jackson_lv 0:e7513df9d7cb 8 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
Jackson_lv 0:e7513df9d7cb 9 the Software, and to permit persons to whom the Software is furnished to do so,
Jackson_lv 0:e7513df9d7cb 10 subject to the following conditions:
Jackson_lv 0:e7513df9d7cb 11
Jackson_lv 0:e7513df9d7cb 12 The above copyright notice and this permission notice shall be included in all
Jackson_lv 0:e7513df9d7cb 13 copies or substantial portions of the Software.
Jackson_lv 0:e7513df9d7cb 14
Jackson_lv 0:e7513df9d7cb 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Jackson_lv 0:e7513df9d7cb 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
Jackson_lv 0:e7513df9d7cb 17 FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
Jackson_lv 0:e7513df9d7cb 18 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
Jackson_lv 0:e7513df9d7cb 19 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
Jackson_lv 0:e7513df9d7cb 20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Jackson_lv 0:e7513df9d7cb 21 */
Jackson_lv 0:e7513df9d7cb 22
Jackson_lv 0:e7513df9d7cb 23 /*
Jackson_lv 0:e7513df9d7cb 24 * Library for controlling a chain of RGB LEDs based on the P9813 protocol.
Jackson_lv 0:e7513df9d7cb 25 * E.g., supports the Grove Chainable RGB LED product.
Jackson_lv 0:e7513df9d7cb 26 *
Jackson_lv 0:e7513df9d7cb 27 * Information about the P9813 protocol obtained from:
Jackson_lv 0:e7513df9d7cb 28 * http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Chainable_RGB_LED
Jackson_lv 0:e7513df9d7cb 29 */
Jackson_lv 0:e7513df9d7cb 30
Jackson_lv 0:e7513df9d7cb 31
Jackson_lv 0:e7513df9d7cb 32
Jackson_lv 0:e7513df9d7cb 33 #ifndef __ChainableLED_h__
Jackson_lv 0:e7513df9d7cb 34 #define __ChainableLED_h__
Jackson_lv 0:e7513df9d7cb 35
Jackson_lv 0:e7513df9d7cb 36 #include "mbed.h"
Jackson_lv 0:e7513df9d7cb 37
Jackson_lv 0:e7513df9d7cb 38 #define _CL_RED 0
Jackson_lv 0:e7513df9d7cb 39 #define _CL_GREEN 1
Jackson_lv 0:e7513df9d7cb 40 #define _CL_BLUE 2
Jackson_lv 0:e7513df9d7cb 41 #define _CLK_PULSE_DELAY 20
Jackson_lv 0:e7513df9d7cb 42
Jackson_lv 0:e7513df9d7cb 43 class ChainableLED
Jackson_lv 0:e7513df9d7cb 44 {
Jackson_lv 0:e7513df9d7cb 45 public:
Jackson_lv 0:e7513df9d7cb 46 ChainableLED(PinName clk_pin, PinName data_pin, unsigned int number_of_leds);
Jackson_lv 0:e7513df9d7cb 47 ~ChainableLED();
Jackson_lv 0:e7513df9d7cb 48
Jackson_lv 0:e7513df9d7cb 49 void setColorRGB(unsigned int led, uint8_t red, uint8_t green, uint8_t blue);
Jackson_lv 0:e7513df9d7cb 50 void setColorHSB(unsigned int led, float hue, float saturation, float brightness);
Jackson_lv 0:e7513df9d7cb 51
Jackson_lv 0:e7513df9d7cb 52 private:
Jackson_lv 0:e7513df9d7cb 53 DigitalOut _clk_pin;
Jackson_lv 0:e7513df9d7cb 54 DigitalOut _data_pin;
Jackson_lv 0:e7513df9d7cb 55 unsigned int _num_leds;
Jackson_lv 0:e7513df9d7cb 56
Jackson_lv 0:e7513df9d7cb 57 uint8_t _led_state[3];
Jackson_lv 0:e7513df9d7cb 58
Jackson_lv 0:e7513df9d7cb 59 void clk(void);
Jackson_lv 0:e7513df9d7cb 60 void sendByte(uint8_t b);
Jackson_lv 0:e7513df9d7cb 61 void sendColor(uint8_t red, uint8_t green, uint8_t blue);
Jackson_lv 0:e7513df9d7cb 62 };
Jackson_lv 0:e7513df9d7cb 63
Jackson_lv 0:e7513df9d7cb 64 #endif