Mark @RRVA / Mbed 2 deprecated rbChromaOffice

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_SimpleControls by RedBearLab

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers neopixel.h Source File

neopixel.h

00001 /* Copyright (c) 2015 bickster, MIT License
00002  *
00003  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
00004  * and associated documentation files (the "Software"), to deal in the Software without restriction,
00005  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
00006  * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
00007  * furnished to do so, subject to the following conditions:
00008  *
00009  * The above copyright notice and this permission notice shall be included in all copies or
00010  * substantial portions of the Software.
00011  *
00012  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
00013  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00014  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
00015  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00016  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00017  */
00018  #ifndef NEOPIXEL_H
00019  #define NEOPIXEL_H
00020 
00021 #include <stdbool.h>
00022 #include <stdint.h>
00023 
00024 
00025 //These defines are timed specific to a series of if statements and will need to be changed
00026 //to compensate for different writing algorithms than the one in neopixel.c
00027 #define NEOPIXEL_SEND_ONE   NRF_GPIO->OUTSET = (1UL << PIN); \
00028                 NRF_GPIO->OUTSET = (1UL << PIN); \
00029                 NRF_GPIO->OUTSET = (1UL << PIN); \
00030                 NRF_GPIO->OUTCLR = (1UL << PIN);
00031 
00032 #define NEOPIXEL_SEND_ZERO  NRF_GPIO->OUTSET = (1UL << PIN); \
00033                 NRF_GPIO->OUTCLR = (1UL << PIN); \
00034                 NRF_GPIO->OUTCLR = (1UL << PIN); \
00035                 NRF_GPIO->OUTCLR = (1UL << PIN); \
00036                 NRF_GPIO->OUTCLR = (1UL << PIN);
00037         
00038 typedef union {
00039         struct {
00040             uint8_t g, r, b;
00041         }simple;
00042     uint8_t grb[3];
00043 } color_t;
00044 
00045 typedef struct {
00046     uint8_t pin_num;
00047     uint16_t num_leds;
00048     color_t *leds;
00049 } neopixel_strip_t;
00050 
00051 /**
00052   @brief Initialize GPIO and data location
00053   @param[in] pointer to Strip structure
00054     @param[in] pin number for GPIO
00055 */
00056 void neopixel_init(neopixel_strip_t *strip, uint8_t pin_num, uint16_t num_leds);
00057     
00058 /**
00059   @brief Turn all LEDs off
00060   @param[in] pointer to Strip structure
00061 */
00062 void neopixel_clear(neopixel_strip_t *strip);
00063 
00064 /**
00065   @brief Update strip with structure data
00066   @param[in] pointer to Strip structure
00067 */
00068 void neopixel_show(neopixel_strip_t *strip);
00069 
00070 /**
00071   @brief Write RGB value to LED structure
00072   @param[in] pointer to Strip structure
00073     @param[in] red value
00074     @param[in] green value
00075     @param[in] blue value
00076     @param[in] LED number (starting at 1)
00077   @retval 0 Successful write
00078   @retval 1 LED number is out of bounds
00079 */
00080 uint8_t neopixel_set_color(neopixel_strip_t *strip, uint16_t index, uint8_t red, uint8_t green, uint8_t blue );
00081 
00082 
00083 /**
00084   @brief Write RGB value to LED structure and update LED
00085   @param[in] pointer to Strip structure
00086     @param[in] red value
00087     @param[in] green value
00088     @param[in] blue value
00089     @param[in] LED number (starting at 1)
00090   @retval 0 Successful write
00091   @retval 1 LED number is out of bounds
00092 */
00093 uint8_t neopixel_set_color_and_show(neopixel_strip_t *strip, uint16_t index, uint8_t red, uint8_t green, uint8_t blue);
00094 
00095 /**
00096   @brief Clears structure data
00097   @param[in] pointer to Strip structure
00098 */
00099 void neopixel_destroy(neopixel_strip_t *strip);
00100 
00101 #endif