Library to control NeoPixel strings of RGB leds

Dependencies:   PixelArray

Dependents:   NeoPixelI2cSlave NeoPixelI2cSlave

Committer:
dwini
Date:
Mon Nov 23 21:32:24 2015 +0000
Revision:
2:bb9ebad05691
Parent:
0:66a5d46a740f
Add shift effect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dwini 0:66a5d46a740f 1 #include "neopixel_string.h"
dwini 0:66a5d46a740f 2
dwini 0:66a5d46a740f 3 NeoPixelString::NeoPixelString(PinName spi_pin, unsigned int length) : PixelArray(spi_pin) {
dwini 0:66a5d46a740f 4 this->length = length;
dwini 0:66a5d46a740f 5 pixels = new neopixel::Pixel[length]; // Actual buffer of colors
dwini 0:66a5d46a740f 6
dwini 0:66a5d46a740f 7 // Clear all
dwini 0:66a5d46a740f 8 update(Colors::Black);
dwini 0:66a5d46a740f 9 }
dwini 0:66a5d46a740f 10
dwini 2:bb9ebad05691 11 unsigned int NeoPixelString::getLength(void) {
dwini 2:bb9ebad05691 12 return this->length;
dwini 2:bb9ebad05691 13 }
dwini 2:bb9ebad05691 14
dwini 2:bb9ebad05691 15 void NeoPixelString::update(void) {
dwini 2:bb9ebad05691 16 PixelArray::update(pixels, length);
dwini 2:bb9ebad05691 17 }
dwini 2:bb9ebad05691 18
dwini 0:66a5d46a740f 19 void NeoPixelString::update(neopixel::Pixel singlecolor) {
dwini 0:66a5d46a740f 20 for (unsigned int i = 0; i < length; i++) {
dwini 0:66a5d46a740f 21 pixels[i] = singlecolor;
dwini 0:66a5d46a740f 22 }
dwini 2:bb9ebad05691 23 update();
dwini 2:bb9ebad05691 24 }
dwini 2:bb9ebad05691 25
dwini 2:bb9ebad05691 26 neopixel::Pixel NeoPixelString::getPixel(unsigned int i) {
dwini 2:bb9ebad05691 27 if (i < this->length) {
dwini 2:bb9ebad05691 28 return pixels[i];
dwini 2:bb9ebad05691 29 }
dwini 2:bb9ebad05691 30 }
dwini 2:bb9ebad05691 31
dwini 2:bb9ebad05691 32 void NeoPixelString::setPixel(unsigned i, neopixel::Pixel pixel) {
dwini 2:bb9ebad05691 33 if (i < this->length) {
dwini 2:bb9ebad05691 34 pixels[i] = pixel;
dwini 2:bb9ebad05691 35 }
dwini 0:66a5d46a740f 36 }
dwini 0:66a5d46a740f 37
dwini 0:66a5d46a740f 38 void NeoPixelString::diagnose(void) {
dwini 0:66a5d46a740f 39 update(Colors::Black);
dwini 0:66a5d46a740f 40 wait(1);
dwini 0:66a5d46a740f 41 for (int i = 0; i < 5; i++) {
dwini 0:66a5d46a740f 42 update(ColorAdjuster::intensity(Colors::Red, 5));
dwini 0:66a5d46a740f 43 wait(0.5);
dwini 0:66a5d46a740f 44 update(ColorAdjuster::intensity(Colors::Green, 5));
dwini 0:66a5d46a740f 45 wait(0.5);
dwini 0:66a5d46a740f 46 update(ColorAdjuster::intensity(Colors::Blue, 5));
dwini 0:66a5d46a740f 47 wait(0.5);
dwini 0:66a5d46a740f 48 }
dwini 0:66a5d46a740f 49
dwini 0:66a5d46a740f 50 update(Colors::Black);
dwini 0:66a5d46a740f 51 for (unsigned int i = 0; i < length; i++) {
dwini 0:66a5d46a740f 52 pixels[i] = ColorAdjuster::intensity(Colors::White, 5);
dwini 0:66a5d46a740f 53 PixelArray::update(pixels, length);
dwini 0:66a5d46a740f 54 wait(0.1);
dwini 0:66a5d46a740f 55 }
dwini 0:66a5d46a740f 56 }