Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ros_lib_kinetic
library/neopixel.h@2:a84e3730c6cb, 2019-07-09 (annotated)
- Committer:
- TanakaRobo
- Date:
- Tue Jul 09 08:08:55 2019 +0000
- Revision:
- 2:a84e3730c6cb
add neopixel
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| TanakaRobo | 2:a84e3730c6cb | 1 | #ifndef NEOPIXEL_H |
| TanakaRobo | 2:a84e3730c6cb | 2 | #define NEOPIXEL_H |
| TanakaRobo | 2:a84e3730c6cb | 3 | #include "mbed.h" |
| TanakaRobo | 2:a84e3730c6cb | 4 | |
| TanakaRobo | 2:a84e3730c6cb | 5 | /* |
| TanakaRobo | 2:a84e3730c6cb | 6 | // Example |
| TanakaRobo | 2:a84e3730c6cb | 7 | |
| TanakaRobo | 2:a84e3730c6cb | 8 | NeoPixelOut npx(D12); |
| TanakaRobo | 2:a84e3730c6cb | 9 | |
| TanakaRobo | 2:a84e3730c6cb | 10 | int main() { |
| TanakaRobo | 2:a84e3730c6cb | 11 | wait(0.2); // wait for HSE to stabilize |
| TanakaRobo | 2:a84e3730c6cb | 12 | |
| TanakaRobo | 2:a84e3730c6cb | 13 | npx.global_scale = 1.0f; // Adjust brightness |
| TanakaRobo | 2:a84e3730c6cb | 14 | npx.normalize = true; // Equalize brightness to make r + g + b = 255 |
| TanakaRobo | 2:a84e3730c6cb | 15 | |
| TanakaRobo | 2:a84e3730c6cb | 16 | Pixel strip[6]; |
| TanakaRobo | 2:a84e3730c6cb | 17 | strip[0].hex = 0xFF0000; |
| TanakaRobo | 2:a84e3730c6cb | 18 | strip[1].hex = 0xFFFF00; |
| TanakaRobo | 2:a84e3730c6cb | 19 | strip[2].hex = 0x00FF00; |
| TanakaRobo | 2:a84e3730c6cb | 20 | strip[3].hex = 0x00FFFF; |
| TanakaRobo | 2:a84e3730c6cb | 21 | strip[4].hex = 0x0000FF; |
| TanakaRobo | 2:a84e3730c6cb | 22 | strip[5].hex = 0xFF00FF; |
| TanakaRobo | 2:a84e3730c6cb | 23 | |
| TanakaRobo | 2:a84e3730c6cb | 24 | npx.send(strip, 6); |
| TanakaRobo | 2:a84e3730c6cb | 25 | |
| TanakaRobo | 2:a84e3730c6cb | 26 | while(1); |
| TanakaRobo | 2:a84e3730c6cb | 27 | } |
| TanakaRobo | 2:a84e3730c6cb | 28 | */ |
| TanakaRobo | 2:a84e3730c6cb | 29 | |
| TanakaRobo | 2:a84e3730c6cb | 30 | |
| TanakaRobo | 2:a84e3730c6cb | 31 | |
| TanakaRobo | 2:a84e3730c6cb | 32 | /** |
| TanakaRobo | 2:a84e3730c6cb | 33 | * @brief Struct for easy manipulation of RGB colors. |
| TanakaRobo | 2:a84e3730c6cb | 34 | * |
| TanakaRobo | 2:a84e3730c6cb | 35 | * Set components in the xrgb.r (etc.) and you will get |
| TanakaRobo | 2:a84e3730c6cb | 36 | * the hex in xrgb.num. |
| TanakaRobo | 2:a84e3730c6cb | 37 | */ |
| TanakaRobo | 2:a84e3730c6cb | 38 | union Pixel { |
| TanakaRobo | 2:a84e3730c6cb | 39 | /** Struct for access to individual color components */ |
| TanakaRobo | 2:a84e3730c6cb | 40 | struct __attribute__((packed)) { |
| TanakaRobo | 2:a84e3730c6cb | 41 | uint8_t b; |
| TanakaRobo | 2:a84e3730c6cb | 42 | uint8_t g; |
| TanakaRobo | 2:a84e3730c6cb | 43 | uint8_t r; |
| TanakaRobo | 2:a84e3730c6cb | 44 | uint8_t a; // unused |
| TanakaRobo | 2:a84e3730c6cb | 45 | }; |
| TanakaRobo | 2:a84e3730c6cb | 46 | |
| TanakaRobo | 2:a84e3730c6cb | 47 | /** RGB color as a single uint32_t */ |
| TanakaRobo | 2:a84e3730c6cb | 48 | uint32_t hex; |
| TanakaRobo | 2:a84e3730c6cb | 49 | }; |
| TanakaRobo | 2:a84e3730c6cb | 50 | |
| TanakaRobo | 2:a84e3730c6cb | 51 | |
| TanakaRobo | 2:a84e3730c6cb | 52 | class NeoPixelOut : DigitalOut { |
| TanakaRobo | 2:a84e3730c6cb | 53 | private: |
| TanakaRobo | 2:a84e3730c6cb | 54 | void byte(uint32_t b); |
| TanakaRobo | 2:a84e3730c6cb | 55 | int boad_; |
| TanakaRobo | 2:a84e3730c6cb | 56 | |
| TanakaRobo | 2:a84e3730c6cb | 57 | public: |
| TanakaRobo | 2:a84e3730c6cb | 58 | bool normalize; |
| TanakaRobo | 2:a84e3730c6cb | 59 | float global_scale; |
| TanakaRobo | 2:a84e3730c6cb | 60 | |
| TanakaRobo | 2:a84e3730c6cb | 61 | NeoPixelOut(PinName pin); |
| TanakaRobo | 2:a84e3730c6cb | 62 | |
| TanakaRobo | 2:a84e3730c6cb | 63 | void send(Pixel *colors, uint32_t count, bool flipwait=true); |
| TanakaRobo | 2:a84e3730c6cb | 64 | |
| TanakaRobo | 2:a84e3730c6cb | 65 | /** Wait long enough to make the colors show up */ |
| TanakaRobo | 2:a84e3730c6cb | 66 | void flip(void); |
| TanakaRobo | 2:a84e3730c6cb | 67 | }; |
| TanakaRobo | 2:a84e3730c6cb | 68 | |
| TanakaRobo | 2:a84e3730c6cb | 69 | |
| TanakaRobo | 2:a84e3730c6cb | 70 | #endif /* NEOPIXEL_H */ |