Mercurial > code > home > repos > light9
annotate rgbled/Adafruit_NeoPixel/Adafruit_NeoPixel.h @ 2424:4b8f8fabeb2f
vscode settings
author | drewp@bigasterisk.com |
---|---|
date | Thu, 23 May 2024 16:40:28 -0700 |
parents | ef4ae15f2661 |
children |
rev | line source |
---|---|
1231
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
1 /*-------------------------------------------------------------------- |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
2 This file is part of the Adafruit NeoPixel library. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
3 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
4 NeoPixel is free software: you can redistribute it and/or modify |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
5 it under the terms of the GNU Lesser General Public License as |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
6 published by the Free Software Foundation, either version 3 of |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
7 the License, or (at your option) any later version. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
8 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
9 NeoPixel is distributed in the hope that it will be useful, |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
12 GNU Lesser General Public License for more details. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
13 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
14 You should have received a copy of the GNU Lesser General Public |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
15 License along with NeoPixel. If not, see |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
16 <http://www.gnu.org/licenses/>. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
17 --------------------------------------------------------------------*/ |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
18 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
19 #ifndef ADAFRUIT_NEOPIXEL_H |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
20 #define ADAFRUIT_NEOPIXEL_H |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
21 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
22 #if (ARDUINO >= 100) |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
23 #include <Arduino.h> |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
24 #else |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
25 #include <WProgram.h> |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
26 #include <pins_arduino.h> |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
27 #endif |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
28 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
29 // 'type' flags for LED pixels (third parameter to constructor): |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
30 #define NEO_RGB 0x00 // Wired for RGB data order |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
31 #define NEO_GRB 0x01 // Wired for GRB data order |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
32 #define NEO_BRG 0x04 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
33 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
34 #define NEO_COLMASK 0x01 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
35 #define NEO_KHZ800 0x02 // 800 KHz datastream |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
36 #define NEO_SPDMASK 0x02 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
37 // Trinket flash space is tight, v1 NeoPixels aren't handled by default. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
38 // Remove the ifndef/endif to add support -- but code will be bigger. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
39 // Conversely, can comment out the #defines to save space on other MCUs. |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
40 #ifndef __AVR_ATtiny85__ |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
41 #define NEO_KHZ400 0x00 // 400 KHz datastream |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
42 #endif |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
43 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
44 class Adafruit_NeoPixel { |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
45 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
46 public: |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
47 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
48 // Constructor: number of LEDs, pin number, LED type |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
49 Adafruit_NeoPixel(uint16_t n, uint8_t p=6, uint8_t t=NEO_GRB + NEO_KHZ800); |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
50 ~Adafruit_NeoPixel(); |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
51 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
52 void |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
53 begin(void), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
54 show(void), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
55 setPin(uint8_t p), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
56 setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
57 setPixelColor(uint16_t n, uint32_t c), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
58 setBrightness(uint8_t), |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
59 clear(); |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
60 uint8_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
61 *getPixels(void) const, |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
62 getBrightness(void) const; |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
63 uint16_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
64 numPixels(void) const; |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
65 static uint32_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
66 Color(uint8_t r, uint8_t g, uint8_t b); |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
67 uint32_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
68 getPixelColor(uint16_t n) const; |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
69 inline bool |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
70 canShow(void) { return (micros() - endTime) >= 50L; } |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
71 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
72 private: |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
73 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
74 const uint16_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
75 numLEDs, // Number of RGB LEDs in strip |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
76 numBytes; // Size of 'pixels' buffer below |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
77 uint8_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
78 pin, // Output pin number |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
79 brightness, |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
80 *pixels, // Holds LED color values (3 bytes each) |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
81 rOffset, // Index of red byte within each 3-byte pixel |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
82 gOffset, // Index of green byte |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
83 bOffset; // Index of blue byte |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
84 const uint8_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
85 type; // Pixel flags (400 vs 800 KHz, RGB vs GRB color) |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
86 uint32_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
87 endTime; // Latch timing reference |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
88 #ifdef __AVR__ |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
89 const volatile uint8_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
90 *port; // Output PORT register |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
91 uint8_t |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
92 pinMask; // Output PORT bitmask |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
93 #endif |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
94 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
95 }; |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
96 |
ef4ae15f2661
copy in rgb led program for arduino
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
97 #endif // ADAFRUIT_NEOPIXEL_H |