using PWM to control RGB LED for RedBear Demo

Dependents:   BLENano_Mesh

Fork of ChainableLED by Jackson Lv

Committer:
Jackson_lv
Date:
Thu Apr 28 08:51:39 2016 +0000
Revision:
1:20c17c26e479
PWM RGB LED

Who changed what in which revision?

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