12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /*--------------------------------------------------------------------
- This file is part of the Adafruit NeoPixel library.
- NeoPixel is free software: you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
- NeoPixel is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with NeoPixel. If not, see
- <http://www.gnu.org/licenses/>.
- --------------------------------------------------------------------*/
- #ifndef ADAFRUIT_NEOPIXEL_H
- #define ADAFRUIT_NEOPIXEL_H
- #if (ARDUINO >= 100)
- #include <Arduino.h>
- #else
- #include <WProgram.h>
- #include <pins_arduino.h>
- #endif
- // 'type' flags for LED pixels (third parameter to constructor):
- #define NEO_GRB 0x01 // Wired for GRB data order
- #define NEO_COLMASK 0x01
- #define NEO_KHZ800 0x02 // 800 KHz datastream
- #define NEO_SPDMASK 0x02
- // Trinket flash space is tight, v1 NeoPixels aren't handled by default.
- // Remove the ifndef/endif to add support -- but code will be bigger.
- // Conversely, can comment out the #defines to save space on other MCUs.
- #ifndef __AVR_ATtiny85__
- #define NEO_RGB 0x00 // Wired for RGB data order
- #define NEO_KHZ400 0x00 // 400 KHz datastream
- #endif
- class Adafruit_NeoPixel {
- public:
- // Constructor: number of LEDs, pin number, LED type
- Adafruit_NeoPixel(uint16_t n, uint8_t p=6, uint8_t t=NEO_GRB + NEO_KHZ800);
- ~Adafruit_NeoPixel();
- void
- begin(void),
- show(void),
- setPin(uint8_t p),
- setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b),
- setPixelColor(uint16_t n, uint32_t c),
- setBrightness(uint8_t);
- uint8_t
- *getPixels() const;
- uint16_t
- numPixels(void) const;
- static uint32_t
- Color(uint8_t r, uint8_t g, uint8_t b);
- uint32_t
- getPixelColor(uint16_t n) const;
- private:
- const uint16_t
- numLEDs, // Number of RGB LEDs in strip
- numBytes; // Size of 'pixels' buffer below
- #if defined(NEO_RGB) || defined(NEO_KHZ400)
- const uint8_t
- type; // Pixel flags (400 vs 800 KHz, RGB vs GRB color)
- #endif
- uint8_t
- pin, // Output pin number
- brightness,
- *pixels; // Holds LED color values (3 bytes each)
- uint32_t
- endTime; // Latch timing reference
- #ifdef __AVR__
- const volatile uint8_t
- *port; // Output PORT register
- uint8_t
- pinMask; // Output PORT bitmask
- #endif
- };
- #endif // ADAFRUIT_NEOPIXEL_H
|